Sesión 3. DevOps (Contenedores-Virtualización), Despliegue continuo y Microservicios
(24 / Agosto 2018 )
En la sesión III se describe el modelo o con mayor precisión el movimiento DevOps, y además de las diferencias entre virtualización y contenedores. La información presentada fue recopilada de las lecciones recibidas en la MCIC (Maestría de Ciencias de la Información y las Comunicaciones) de la Universidad Distrital en Bogotá-Colombia y de investigaciones adicionales.
Retomando la definición de DevOps en Sesión I
DevOps es un movimiento cultural que cambia el modo en el que los individuos piensan su trabajo, valora la diversidad del trabajo realizado, soporta intencionalmente los procesos, por los cuales las empresas generan valor, y mide los efectos del cambio social y técnico. Esta es una forma de pensar y de trabajar que permite a los individuos y organizaciones desarrollar y mantener practicas de trabajo sustentables. Es un marco cultural para intercambiar historias y desarrollar empatía, permitiendo a las personas y equipos practicar sus oficios de manera efectíva y duradera.De manera que el modelo de DevOps exige ciclos cortos entre desarrollo ↔️despliegue, pasando por pruebas. Incluye las arquitecturas de microservicios, y tiene como caracteristicas:
- Integración Continua.
- Pruebas.
- Despliegue Continuo.
Según (Leszko, 2017) El despliegue continuo es la habilidad para llevar los cambios de todo tipo (incluyendo nuevas caracteristicas, cambios en la configuración, corrección de errores, y experimentos) en producción o en las manos del usuario, de forma segura y rápida de manera sostenible. En el flujo de trabajo tradicional, descrito en la siguiente imagen:
El despliegue continuo consiste cambiar cada fase del proceso de entrega tradicional en una secuencia de "scripts" llamado tuberia de despliegue automatico (""automated deployment pipeline). Como historia de exito, Yahoo implementó el despliegue continuo luego de comprar la compañia Flickr.
La caracteristica principal de DevOps son sus ciclos cortos que permiten entregar productos de valor en un periodo muy corto que incluye el desarrollo, prubas y despliegue.
La "automated deployment pipeline" incluye: Integración continua, pruebas de acceptación automática, y administración de configuración:
Las interfaces utilizan API's ("Application Programming Interface"), las cuales son los puntos de entrada a un servicio, concretan el servicio y definen el contrato. Es fundamental la documentación de una API y se debe realizar automaticacmente.
Lo que define el contrato es:
Manual básico de tecnologías de virtualización y contenedores
Este Manual se encuentra alojado en: https://drive.google.com/drive/u/1/folders/16UCqocUe88P12DC3cgw_X_o7oKZv2i28, pero en una proxima entrada en el blog se expondrá.
La "automated deployment pipeline" incluye: Integración continua, pruebas de acceptación automática, y administración de configuración:
- Integración Continua: Esta fase verifica que el código escrito por diferentes desarroladores se integre.
- Pruebas de acceptación automática: Esta etapa reemplaza la fase de control de calidad manual, y verifica si las caracteristicas implementadas por los desarrolladores cumplen con los requerimientos del cliente.
- Administración de configuración: Reemplaza las operaciones manuales de configuración del ambiente y despliegue del software.
Retomando el concepto de Servicios de la Sesión II, "el servicio es contractual", eso quiere decir que el contrato es inmutable. Para acceder al servicio esté dispone de ciertas interfaces que pueden ser representadas con diagramas ULM de componentes o de clases.
Las interfaces utilizan API's ("Application Programming Interface"), las cuales son los puntos de entrada a un servicio, concretan el servicio y definen el contrato. Es fundamental la documentación de una API y se debe realizar automaticacmente.
Lo que define el contrato es:
- La función expuesta.
- Las caracteristicas.
- Protocolo de comunicación.
- Protocolo de representación de datos: XML, JSON (debe incluir la documentación de la estructura).
Retomando la arquitectura de microservicios y en general de la cultura DevOps, se incluyen dos caracteristicas importantes:
- Multicapa
- Multinivel: Tiene que ver con los nodos de despliegue. Y si son desplegados en Contenedores o máquinas virtuales.
n Microservicios ↔️n nodos de despliegue
Dos modelos de MUltinivel:
- Virtualización: Replicar un sistema completo a partir de emulación. Se basa en un imagen de la máquina virtaul, la cual puede ser clonada, apartir de una instantánea. TIene problemas de Uso de recursos.
- Contenedores: Replicación de un sistema apartir de la base que provee una aplicación MiddleWare. Se pueden agregar aplicaciones a los contenedores. En la siguiente imagen se describe el funcionamiento de los contenedores:
Para entender sus diferencias y ventajas, existe una analógía muy útil que trata sobre gatitos y ganado ("Kittens and Cattle"):
"La diferencia entre el despliegue tradicional de software y el despliegue basado en contenedores es expresado en la analogía de gatitos y ganados. Todo el mundo ama los gatitos, son únicos, cada uno tiene nombre y tratamiento especial a sus necesidades, son tratados con emoción, cuando mueren lloramos. Por el contrario, el ganado existe para satisfacer nuestras necesidad (algo discutiible), incluso tratamos al ganado en singular, solo como un paquete de animales considerados como un todo, no tienen nombres, ni son únicos. Seguramente ellos son únicos (como lo es cada servidor), pero eso es irrelevante. La conclusión es tratar los servidores como ganado, no como mascotas"Taller 3
Manual básico de tecnologías de virtualización y contenedores
Este Manual se encuentra alojado en: https://drive.google.com/drive/u/1/folders/16UCqocUe88P12DC3cgw_X_o7oKZv2i28, pero en una proxima entrada en el blog se expondrá.
Referencias
Leszko, R. (2017). Continuous delivery with Docker and Jenkins: Delivering software at scale. Birmingham ; Mumbai: Packt Publishing.
No comments:
Post a Comment