Estrategias de despliegue populares para el 2020


en estos dias, los grandes cambios del desarrollo de aplicaciones es la frecuencia de implementacion.
los equipos de productos implementas nuevas versiones rapidamente en produccion, los ciclos de lanzamientos que era de meses o años cada vez se estan volviendo raros.

hoy en día, se tiene a microservicios y a arquitecturas como servicios,los desarrolladores pueden diseñar código basado en módulos, lo que permite de forma simultanea escribir y implementar cambios en diferentes partes en cualquier momento.

los beneficios de ciclos de implementacion rapidas y cortas son los siguientes:

el tiempo para salir al mercado son cortos.
el consumidor tiene el producto en mes tiempos
el Feedback entre el consumidor y grupo de desarrollo es rápido y esto permite crear nuevas características o corregir errores mas rápido.

minimizar las frecuencias de implementacion de cambios trae consigo un gran reto para los equipos y el ing devops. mientras mas cambios se implemente dentro de una aplicación mas facil es fallar. mas facil es crear desetabilizacion afectando la confianza y la experiencia del usuario. por esto es importante crear y seguir estrategias de implementacion de código que minimize el riesgo para el producto y el cliente.

en este post, hablare sobre las diferentes estrategias  y mejores practicas que debe asumir tu equipo para trabajar mas rápido y mejor.


EL reto de las aplicaciones modernas

las aplicaciones modernas son actualmente de tendencias distribuidas y alagadas en la nube, lo cual le permite escalar elasticamente según la demanda, son mas resilentes (tolerante a fallas) y de muy alta disponibilidad; o ser Serverless donde la plataforma servidora del servicio se encarga de administrar las tareas de operaciones, auto escalado y actualizaciones de sistemas operativos y/o software de terceros.


estas aplicaciones normalmente tiene implementaciones frecuentemente, por ejemplo aplicaciones moviles o aplicaciones web pueden aplicarse muchos cambios al mes algunas tiene multiples cambios al dia.


normalmente se usa arquitectura orientada a microservicios la cual trabaja con muchos componentes que juntos ofrecen funcionalidades completas. pueden ser diferentes ciclos de lanzamientos y diferentes componentes, pero todos trabajan juntos perfectamente.

incrementar el numero de componentes de una aplicacion se traduce en mas posibilidades de que algo salga mal. con multiples equipos de desarrolladores haciendo cambios en el codigo, es dificil determinar la causa raiz de los problemas cuando algo inevitable sucede.


otro reto; abstraer la capa de infraestructura, la cual ahora puede ser codigo, por ejemplo implementar una nueva aplicacion puede requiere implementar una nueva arquitectura y tambien un nuevo codigo de arquitectura.

estrategias de implementacion populares.

para enfrentar este reto, las aplicaciones y el equipo de infraestructura podrian idear y adoptar estrategias de despliegues adaptables a sus casos de usos.

revisaremos y discutiremos los pros y contras de las múltiples y diferentes estrategias de implementacion para que puedas escoger cual se adapta a tu organizacion.


BIG BANG Deployment

como el nombre lo sugiere "big bang" actualiza grandes partes de la aplicacion todo de un golpe. es una estrategias antigua usada para las aplicaciones que necesitaban instarse en componentes fisicos, como microsoft office, windows xp, win 7, etc

esta estrategia requiere de extensas pruebas antes del lanzamientos. en la actualidad es usado en sistemas denominados monolitos, que fueron desarrollados con framework que no soportaban otro tipo de implementacion mas flexible.

las aplicaciones modernas tiene la ventaja de actualizarse regularmente y automaticamente tanto en el lado del servidor como el del cliente. esto hace que la implementacion "big bang" sea lenta y menos agil para los equipos modernos.

caracteristicas :

todas las piezas principales se pueden implementar en una sola pasada.

la implementacion es generalmente el resultado de un largo ciclo de desarrollo y pruebas

la regresiones suelen ser dificil y poco practicas.

puede requerir acciones de clientes para que se actualice el sotfware de su lado y en sus dispositivos.


big bang deployments no son adaptables para las aplicaciones modernas, debido a que existen muchos riesgos y suele ser inaceptables para aplicaciones que son de cara al publico o criticas para el negocio donde la interrupción significa una gran perdida de dinero. y mas aun cuando las regresiones a versiones anteriores son costosas lentas e incluso imposibles.


Rolling Deployment

en español se traduce como despliegue progresivo, y es una implementacion mucho mas estable que la big bang debido a que de ser bien implementada tiene menos tiempo de interruccion y se pueden hacer regresiones.

funciona de la siguiente manera, las nuevas versiones de software van remplazando las versiones viejas progresivamente, la implementacion es lenta, y durante ese tiempo ambas versiones del software la antigua y nueva coexiten sin afectar el funcionamiento o la experiencia del usuario. este proceso hace que sea mas facil el Rollback o regresión de cualquier nuevo componente que se incompatible con los viejos componentes.

Blue Green deployment tambien conocido como RED-BLACK o A/B deployment

este es una estrategias anti fallas, y se caracteriza por tener dos entornos de produccion o en algunos casos generar un entorno de produccion identico para el momento del pase que por un pequeño periodo de tiempo trabajan en paralelo.

el propósito de habilitar dos entornos de producción es que en uno se despliegue todos los componentes e incluyendo las nuevas versiones se hagan pruebas mínimas que comprueben que esta operativo y luego desviar el trafico de los usuarios a esta nuevo ambiente.

el ambiente actual se denomina blue o red o A y el nuevo se denomina green black o B  y al final este segundo grupo se convertirá en el nuevo ambiente de producción.


si algo inesperado pasa, se puede transferir el trafico de los usarios a el ambiente anterior y asi evitar que los usuarios perciban un problema o la interruccion del problema.


https://dev.to/mostlyjason/intro-to-deployment-strategies-blue-green-canary-and-more-3a3















Comentarios

Entradas populares de este blog

AWS SAM y AWS Lambda docker Container Image tutorial con PYTHON USANDO A...

Solucion: Docker Error: No such container:

Los unicas 4 herramientas que necesitas para volverte un master en Devops