DevOps+[Chef/Docker]
-
Upload
christian-rodriguez -
Category
Technology
-
view
428 -
download
0
description
Transcript of DevOps+[Chef/Docker]
![Page 1: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/1.jpg)
DevOps+[Chef/Docker]
por Lic. Christian Rodriguez [email protected]
@car_unlp
Junio de 2014
Jornadas de actualización Tecnológica - SD
![Page 2: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/2.jpg)
Temas
● Objetivo
● Los problemas en la organización
● Algunas soluciones
● DevOps
● Productos
● Conclusiones
![Page 3: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/3.jpg)
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
![Page 4: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/4.jpg)
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
![Page 5: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/5.jpg)
La perspectiva de Desarrollo
![Page 6: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/6.jpg)
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
![Page 7: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/7.jpg)
Problemas en desarrollo
● Ambientes complejos
– SSO
– APIs
– Balanceo y Caching
![Page 8: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/8.jpg)
Problemas en desarrollo
● Conseguir datos de producción
– Dumps de bases de datos
– Código en producción
![Page 9: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/9.jpg)
La perspectiva de TI
![Page 10: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/10.jpg)
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
![Page 11: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/11.jpg)
La perspectiva de producción
![Page 12: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/12.jpg)
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
![Page 13: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/13.jpg)
Soluciones parciales
![Page 14: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/14.jpg)
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.
![Page 15: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/15.jpg)
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
![Page 16: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/16.jpg)
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
![Page 17: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/17.jpg)
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● Trabajo artesanal en cada servidor. Migrar o actualizar se
vuelve una operación de alto riesgo
![Page 18: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/18.jpg)
DevOps
Una nueva tendencia
orientada a obtener una
relación colaborativa de
trabajo entre las áreas de
desarrollo y TI
![Page 19: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/19.jpg)
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
![Page 20: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/20.jpg)
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
![Page 21: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/21.jpg)
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
![Page 22: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/22.jpg)
Orígenes de DevOps
● Velocity Conference
● Infraestructure as code
● Agile infrastructure
● Agile system administration
![Page 23: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/23.jpg)
Docker
![Page 24: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/24.jpg)
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
![Page 25: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/25.jpg)
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
![Page 26: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/26.jpg)
Ejemplos de docker
docker search xxx
docker pull <t TAG> image
docker run i t image <CMD>
docker ps [a]
docker diff <CONTAINERID>
docker commit
![Page 27: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/27.jpg)
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
![Page 28: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/28.jpg)
Chef
![Page 29: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/29.jpg)
Qué es?
● Permite gestionar la infraestructura como código alcanzando
– Versionado
– Testearla
– Replicarla
![Page 30: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/30.jpg)
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ácilmente con vagrant
– Vagrant es un gestor de VMs (por defecto Vbox)
– Se integra muy bien con AWS
![Page 31: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/31.jpg)
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
![Page 32: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/32.jpg)
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
![Page 33: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/33.jpg)
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
![Page 34: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/34.jpg)
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
![Page 35: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/35.jpg)
Referencias
● DevOps:
– http://itrevolution.com/
– DevOps por New Relic
– http://devopsweekly.com/● Docker: http://www.docker.com/
● Chef: http://www.getchef.com/
– http://chrodriguez.github.io/capacitacion_chef/
![Page 36: DevOps+[Chef/Docker]](https://reader033.fdocuments.in/reader033/viewer/2022052906/558d14e5d8b42a7f248b459a/html5/thumbnails/36.jpg)
Versión Online de la presentación
https://speakerdeck.com/chrodriguez/docker
http://www.slideshare.net/ChristianRodriguez50/devopschefdocker