los cuales tienen actividad constante • Versiones diferente de productos todas las semanas • Por día se realizan 5 deploys aproximados – Por errores en producción – Por nuevas funcionalidades • Ambientes de trabajo: – Desarrollo – Pruebas – Producción
cliente • Se cumplen varias tareas complejas de administración • Nuevos productos que requieren conocimientos de arquitecturas emergentes: NodeJS, Erlang, Redis, APIs, MongoDB, etc – No todo es xAMP, Exim/Postfix, iptables • Compromiso de seguridad por el hosting de aplicativos de terceros • Vencimientos SSL
nuevas aplicaciones • Procedimientos para la actualización de aplicaciones • Aplicar parches a bases de datos productivas de gran volumen • Notificación a usuarios de aplicaciones sobre los cambios a aplicar • Monitoreo y backup de servicios • Vencimiento de contratos y SLA
criticidad • Controles de seguridad por aplicación – Cada aplicación WEB corre con usuario diferente – Firewall por cada aplicación o servicio • Análisis de nuevos productos como nginx, openvz, varnish, haproxy, etc.
Migraciones en caliente – Aprovechamiento de recursos – Instalaciones basadas en templates • Complicaciones – Mantenimiento de virtuales – Estado contractual de todas las VMs en mi dominio – Sin una solución de storage no se aprovechan muchas ventajas
criticidad de los datos servidos • A partir del análisis surgen nuevas inquietudes – Apache + ITK – PHP FPM – No todas nuestras soluciones son xAMP – Contenedores linux: OpenVZ / LXC
y puesta a punto en producción • Escasez de recursos en nuevas tendencias: – Servidores Ruby: unicorn, puma, Apache mod rails / passenger – Caching: varnish – Balanceo: nginx / ha-proxy – Nuevos servicios: Bases NO-SQL, AMQP, etc • Trabajo artesanal en cada servidor. Migrar o actualizar se vuelve una operación de alto riesgo
las fases del proyecto según lo planificado • Mejorar el ciclo de vida • Versionado de ambientes • Exigir confiabilidad, estabilidad, resilencia y seguridad en el ambiente de operaciones • Desarrolladores que piensen como administradores, y administradores que piensen como desarrolladores
con múltiples configuraciones e instalación de actualizaciones. Estos cambios implican una nueva versión de ese ambiente. La única forma de realizarlo a tiempo, en forma documentada y minimizando errores a través de scripts • Surge Infrastructure as Code • Los scripts generan nuevos entornos virtuales que deben versionarse como código tradicional
de aplicaciones en contenedores • Se compone de: – Docker engine: soporte de herramientas provistas por docker para el desktop, con las cuales podemos correr, crear y administrar contenedores – Docker Hub: repositorio de imágenes
hub docker, y una vez locales usarlas para iniciar contenedores • Gestión de contenedores a partir de imágenes • En cualquier momento, se puede versionar un contenedor creando una nueva imagen
Se programa en Ruby • Requiere de una arquitectura de servicios: – Servidor Chef – Máquinas a aprovisionar – Máquinas del administrador • Para probar se combina fácilmente con vagrant – Vagrant es un gestor de VMs (por defecto Vbox) – Se integra muy bien con AWS
desarrollado por UNLP • URL: https://github.com/Desarrollo-CeSPI/choique_cookbook – Kimkelen: sistema de gestión de alumnos de UNLP • URL: https://github.com/Desarrollo-CeSPI/kimkelen_cookbook • Usaremos vagrant para probar – Debemos instalar el plugin vagrant-berkshelf • Al descargar, en el directorio correr: vagrant up
la infraestructura de testing de UNLP – Crear un usuario con el que corre PHP con Apache mod ITK – Configurar proxy reverso frente al equipo anterior – Editar la configuración de DNS • Dos dominios: uno para el frontend, y otro para el backend – Deployar la aplicación por un usuario de desarrollo
de aplicaciones desarrolladas utilizando metodologías ágiles • Integración y sincronización de tareas entre TI y desarrollo • Revisión acerca de la segregación de funciones tradicional definida en marcos de referencia, buenas prácticas y estándares