2. Temas
● Objetivo
● Los problemas en la organización
● Algunas soluciones
● DevOps
● Productos
● Conclusiones
3. Objetivo
Plantear la realidad contemporánea de nuestra
organización, a partir de problemas y soluciones
que han surgido espontáneamente y derivaron en
la aplicación de la metodología DevOps
4. Los problemas en la Organización
● Los problemas pueden analizarse desde:
– La perspectiva del desarrollo
– La perspectiva de TI
– La perspectiva de la puesta en producción
6. Problemas en desarrollo
● Cerca de 100 aplicativos: 70 de 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
10. Los problemas de TI
● Desarrollo no es el único 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
12. Los problemas en producción
● Procedimientos para el deploy de 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
14. Soluciones
● Virtualización
● Matriz de aplicaciones por seguridad y 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.
15. Virtualización
● Simplificaciones
– Backups
– Gestión de TI
– 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
16. Matriz de aplicaciones
● Relevamiento de aplicaciones por vulnerabilidades y
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
17. Algunos problemas
● Nuevos productos emergentes requieren investigación
sobre configuraciones 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
19. Objetivos
● Mejorar los tiempos de respuesta
● Cumplir con 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
20. Ciclo de vida
Se define ciclo de vida al tiempo promedio que
toma desde que un nuevo requerimiento es
aprobado, el área de desarrollo lo implementa y el
pase definitivo a producción
21. Versionado de ambientes
● El personal de TI debe lidiar 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
22. Orígenes de DevOps
● Velocity Conference
● Infraestructure as code
● Agile infrastructure
● Agile system administration
24. Qué es?
● Basado en LXC
● Simplifica el deployment 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
25. Filosofía Docker
● Gestión de imagenes: se pueden descargar del 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
27. Un ejemplo de uso real
● Desarrollo de aplicaciones PHP < 5.4
● Simulación de instalación de ambientes
● A futuro:
– Deploy completo del ambiente de testing
– Tests al vuelo: from scratch
29. Qué es?
● Permite gestionar la infraestructura como código
alcanzando
– Versionado
– Testearla
– Replicarla
30. Cómo trabaja?
● Con libros de cocina y recetas
● 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ácilemente con vagrant
– Vagrant es un gestor de VMs (por defecto Vbox)
– Se integra muy bien con AWS
31. Veamos unas recetas simples
● Recetas para:
– Choique: CMS 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
32. Lo mismo con AWS/Docker
● Analizamos las otras configuraciones en los repositorios
anteriores
– Iniciamos una instancia de la aplicación en AWS
● Requiere los plugins:
– vagrant-aws
– vagrant-omnibus
33. Un ejemplo real con chef
● Instalar un choique en 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
34. Conclusiones
● Adoptando este modelo se reducen tiempos de liberación
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