Introducción al Ciclo de Vida de DevOps

Team Kranio

October 26, 2020

DevOps es un conjunto de procedimientos que requieren de un cambio cultural en las empresas. Es un movimiento, es el deseo de hacer las cosas de una forma que se centre en la comunicación, colaboración e integración entre los que desarrollan y los que operan, para construir equipos más ágiles y eficientes.

Últimamente la palabra “DevOps” ha tomado mucha relevancia. Si se tratara de vestuario, sería el último grito de la moda, pero debemos aclarar algo: para decir “Somos DevOps”, se necesita conocimiento en distintas áreas y además tener experiencia previa.  

DevOps Es una cultura fundamental de la práctica de software moderno para proyectos exitosos de analytics y big data.

¿Que es DevOps?

DevOps es un conjunto de metodologías y buenas prácticas, es un enfoque de trabajo que busca mejorar la entrega de software de manera compartida y responsable. Su nombre viene de la unión de dos palabras “Development” y “Operations”, es decir, Desarrollo y Operaciones. 

En un proyecto de tecnología encontramos dos grandes grupos. Por un lado están los desarrolladores que son los encargados de desarrollar los pilares y garantizar la eficiencia de los programas y su propósito es producir software. Por otro lado están los operadores y su propósito es mantener la operación estable del producto. Ambos sectores priorizan sus objetivos, y muchas veces no existe buena comunicación entre ellos. Este es el modelo ‘tradicional’ de trabajo, donde todos trabajan de manera independiente. Las empresas hoy necesitan lanzar productos de manera rápida. Con este modelo tradicional, es imposible.

Es aquí donde nace el concepto, de “DevOps”, donde prima la comunicación, colaboración, integración y automatización, al caer la muralla lo primero que habilitas es un flujo de comunicación entre desarrolladores y operaciones. 

Por último se debe crear una cultura de aprendizaje, es muy importante que el equipo esté en constante aprendizaje. Algunas empresas como Netflix, ‘sabotean’ ellos mismos sus productos para saber qué cosas están mal, para identificar falencias en el sistema, y aprender de los errores para mejorar.

El término ‘DevOps’ ha ido mutando a lo largo del tiempo. Primero fue la unión de desarrolladores y operaciones,  pero hoy representa otro tipo de uniones, ya que la idea de este término es unificar y conectar. Algunos ejemplos:

DevSecOps - esta es una forma de unión entre desarrolladores, seguridad y operación, 

QAOps - es la unión de QA y operaciones, 

NoOps - es un caso donde ya no quieres que exista el equipo de operaciones. Aquí los equipos deben ser capaces de autoorganizarse para desplegar,  

DataOps - es la unión de Data Scientist y el equipo de operaciones.  

Lo importante es notar que el término DevOps rompe la barrera entre los equipos, para mejorar la comunicación, colaboración, e integración en todas las áreas. Este artículo aborda la disciplina de DevOps.

Queda atento a nuestro blog y futuros posts de las otras disciplinas. 

Integración continua (CI), despliegue continuo (CD) y entrega continua

Una de las primeras prácticas en el área de desarrollo que involucra a DevOps es la integración continua. 

La integración continua es una práctica de desarrollo de software donde los desarrolladores realizan los cambios en el código en un repositorio de manera periódica.   

La propuesta es no crear grandes piezas, sino crear partes de una pieza y cada vez que estas piezas la consideren lo suficientemente grandes para hacer una prueba de integración se libera ese desarrollo a una herramienta de integración continua.  

La herramienta de forma periódica valida que los diferentes equipos estén integrados. Jenkins es una de las herramientas más conocidas que permite automatizar  pruebas. 

Del lado de  Operaciones tenemos dos aplicaciones: entrega continua y despliegue continuo. 

La entrega continua es una práctica de desarrollo de software para preparar automáticamente los cambios en el código y entregar a la fase de producción.

Despliegue continuo es una práctica de desarrollo para realizar el despliegue de nuestro software en producción SIN intervención humana a la hora de realizar el despliegue. 

La diferencia entre entrega continua y despliegue continuo es que el primero requiere de una aprobación manual antes de la implementación mientras que el segundo realiza la aprobación de manera automática. 

Ciclo de vida DevOps

El ciclo de vida de DevOps corresponde a los pasos que atraviesa el código fuente de un software para llegar a ser desplegado en un ambiente. En otras palabras, es el conjunto de pasos que da una pieza de código para llegar al destino y ser una aplicación.

El Ciclo de Vida de DevOps

Partimos con la fase de planificación - decidir qué y cómo va hacer. Luego viene la fase de codificación en que los especialistas comienzan a codificar, la siguiente es la fase de construcción: toma todo el código de todos los especialistas y lo compila, luego viene la fase de pruebas en que aplicamos pruebas automáticas a cada artefacto que se acaba de construir  Luego viene la fase de release donde tomamos lo construido en fases anteriores y lo guardamos en un lugar accesible para que el proceso siga. 

Luego viene la fase de despliegue esta toma lo creado anteriormente y lo intenta entregar al usuario, la siguiente es la fase de operación esta trata sobre la configuración de los ambientes y la estructura como tal, por último está la fase de monitoreo es donde revisan las métricas y  aseguran que todo esté bien. A continuación daremos una explicación más detallada de cada una. 

Fase 1 - Planificación 

Photo by Halacious on Unsplash

Todos los proyectos independientes del área o la temática, necesitan una visión que indique a todos los participantes el motivo y el fin del trabajo a realizar. En esta etapa defines un conjunto mínimo de funcionalidades que aportan valor en cada iteración y los criterios de aceptación a cumplir. Es clave la comunicación entre el negocio y el equipo de desarrollo. 

Parte elaborando un plan para alcanzar el objetivo marcado. Todas las personas involucradas trabajan durante la iteración para lograr un objetivo claro, Luego defines las labores del equipo y expones los requerimientos a implementar en la plataforma o producto. 

Fase 2 - Codificación 

Photo by Clément H on Unsplash

Luego de definir el plan pasamos a codificar la aplicación según los requisitos que acordados con el cliente. Aquí comienzas a desarrollar el software del proyecto. Estos desarrollos avanzan en pequeños procesos en el ciclo de desarrollo.

Al mismo tiempo, empiezas a definirlas pruebas que deberás realizar a tu pieza para asegurar que cumple con la especificación funcional. Por parte de operaciones, empiezan la construcción de las automaciones necesarias para  y  del software.  El responsable del proyecto asegurar que el equipo de desarrollo esté familiarizado con el uso de las herramientas de seguridad y posible ataques que pueda enfrentar esta nueva pieza de software. 

Fase 3 - Construcción 

El objetivo de esta fase es construir la aplicación con la integración de varios códigos que hicieron el en la fase de codificación. Una vez construida la aplicación, es el momento de crear los nuevos artefactos que componen el software, incluyendo las nuevas funcionalidades. Este proceso es crítico ya que un error en la unión de código puede provocar que deje de funcionar el proyecto. 

En esta fase del ciclo de vida de DevOps, el desarrollo de software es continuo e iterativo, cada parte avanza en el proceso. Esto es beneficioso para el equipo ya que acelera el proceso y aseguramos la entrega.

Fase 4 - Pruebas 

En esta fase ejecutas las pruebas para verificar el correcto funcionamiento de todas las características del proyecto. Debes considerar no solo las nuevas pruebas sino también las que aseguran el cuimplimiento de la especificación de funcionalidades ya existentes.. 

El equipo de QA usa herramientas para identificar y corregir errores en el nuevo código de manera continua, en el caso que alguna prueba no sea satisfactoria podrás hacer la corrección volviendo a la fase anterior (Construcción) 

En la etapa de planificación ya definiste el plan unitarias y de integración que realizarás. 

Fase 5 - Lanzamiento 

Photo by SpaceX on Unsplash

Una vez la aplicación pasó todas las pruebas funcionales y de integración, podrás crear una versión del software. El objetivo es indicar que ha pasado con todas las validaciones previas, estas validaciones pueden ser usadas por usuarios en un futuro. Esta fase se integra con el código existente, se realizan pruebas y cabe destacar que el desarrollo continuo sólo es posible debido a la integración y las prueba continuas.  

Fase 6 - Operación 

Esta es la fase donde el equipo de operación toma el control de la aplicación en producción.  Debes asegurarte que no existan  comportamientos raros o inadecuados, errores que puedan encontrar en la producción. Debes alertar a otros miembros del equipo sobre los problemas ocurridos, tomar decisiones inmediatas (suspender, rollback, etc) y planificar las mejoras necesarias antes de volver a producción.  

Fase 7 - Monitoreo

En la última fase, estableces cuales son los parámetros a vigilar de la aplicación. Vamos a recopilar toda la información recogida a lo largo de un periodo de tiempo para realizar ajustes necesarios en la siguiente fase de planificación. También es en esta fase que el equipo de operación define las medidas para monitorizar y controlar el estado de salud de las aplicaciones y su infraestructura. 

Conclusión 

Cuando los equipos trabajan de manera independiente, pueden surgir errores en el proyecto. Esto lleva los equipos a culpar a los demás, perdiendo el foco de la situación, que es solucionar el problema, ambas áreas en conjunto deben primero identificar cuál es el problema y luego resolverlo

Por esto nació esta nueva cultura, para resolver ese tipo de problemas y romper la pared que los divide. DevOps surgió con el objetivo de unir a los distintos equipos o personas que participan en un proyecto. La idea es que todos los equipos tengan una meta en común, habilitar y facilitar la innovación, incrementar la productividad y entregas de los equipos, gestionar defectos más temprano , reducir indisponibilidades  y mejorar la resiliencia. 

Si quieres adoptar estas prácticas de DevOps, debes partir por evaluar un cambio cultural en tu equipo, agregar nuevas tecnologías,  alta comunicación entre los equipos, mayor colaboración y desarrollo,  inyectar agilidad en proyectos, entre muchas otras.  Cualquier organización puede adoptar la metodología “DevOps”  y adaptarla a sus procesos y  tendrá más probabilidades de éxito en el momento de creación, desarrollo y entrega del software. 

Quieres adoptar DevOps pero no sabes cómo partir? Hablemos


Team Kranio

October 26, 2020

Entradas anteriores