DevOps agil ¿Qué es y por qué es importante para mi negocio?
¿Qué es Ágil?
Ágil, o agile, es una metodología para el desarrollo de proyectos. Esta metodología se basa en la liberación de actividades de proyecto de manera incremental y a la par, lo que significa que el proyecto se va probando y a su vez va evolucionando sobre la marcha. No parecería la gran cosa, ¿cierto? Bueno, pues estamos en un grave ¡error!, esto es de vital importancia ya que nuestro proyecto se verá reducido en tiempos, lo que se traduce a menos recursos invertidos y menos riesgo de calidad en el proyecto.
Framework
No basta con decir que un proyecto es ágil, se deben implementar ciertas métricas y parámetros para que esta metodología se cumpla. A continuación mencionaremos algunos ejemplos;
- SCRUM
- XP (Xtreme Programming)
- KANBAN
Tomaremos a SCRUM como ejemplo; no solo porque es nuestro favorito, sino porque es quien mejor se adapta a nuestras necesidades, debido a su versatilidad.
Planeación del Sprint
SCRUM se basa en sprints o iteraciones que se definen con los requerimientos recibidos por parte del dueño del proyecto. Dichos requerimientos deberán ser sometidos a un análisis por parte de los interesados del proyecto, así el equipo podrá detectar y elaborar la lista de actividades del proyecto.
Nota: Recuerda que en SCRUM todo debe ser realizado de manera eficiente y eficaz por lo que la planeación de los sprints no deberá exceder a las 8 horas.
Desarrollo del sprint
Una vez que se tiene la planeación de los sprints, hay que determinar con el dueño del proyecto el sprint inicial. Este sprint deberá ser plasmado en un “SCRUM taskboard” para mayor visibilidad y control de las tareas. Toma en cuenta que cada interesado es responsable de tus tarjetas y del flujo de las mismas.
Aqui hay 2 puntos muy importantes;
Primero: Reunión diaria; en esta metodología se implementa una reunión diaria de max. 15 minutos, para discutir de manera rápida y concisa todo lo referente al proyecto. Cada uno de los interesados debe contestar las siguientes preguntas;
- ¿Que hice desde la última reunión?
- ¿Que voy a hacer a partir de ahora?
- ¿Qué impedimentos tengo para cumplir mis objetivos?
Estas 3 sencillas preguntas ayudarán al Project manager encargado para entender, analizar y canalizar los esfuerzos dados.
Segundo: la realización de cada sprint no debe de tomar más de 1 mes por lo que si el sprint excede esta cantidad de tiempo deberá de someterse a un análisis para la separación de actividades y así tener sprints estandarizados, claros y concisos.
Aquí es super importante que los miembros del equipo externen sus limitaciones y complicaciones del proyecto, así el Scrum Master podrá ayudarle para la eliminación de dichos impedimentos.
Presentación del Sprint
Demostración: Durante esta fase el equipo presenta al dueño del proyecto el desarrollo del sprint. El cliente debe hacer revisión del proyecto y entregar retroalimentación útil para la mejora de las actividades, de esta forma el equipo de trabajo puede hacer cambios de acuerdo a las necesidades del proyecto y por consiguiente se entregará un proyecto de mayor calidad.
Una vez que el sprint fue revisado y modificado (según sea el caso), estará listo para su liberación de manera incremental lo que significa un avance del proyecto.
Retrospectiva: Después de la finalización de cada sprint, se lleva a cabo una reunión donde los miembros del equipo exponen y analizan lo sucedido durante el sprint terminado. Revisan y documentan sus errores para evitar que vuelvan a ocurrir en el siguiente sprint.
Nota: La reunión de retrospectiva se puede llevar a cabo fuera de la oficina de una manera más relajada y de tipo informal.
Asi es como SCRUM puede ayudarte a elaborar y desarrollar un proyecto de calidad cuidando de los recursos y los tiempos de entrega.
Digo ¿A quien le gusta la convencional, tardada y tediosa metodología de desarrollo? Si tu al igual que nosotros pensaste que a nadie, entonces ¿Qué esperas?
Ahora iremos al segundo apartado para adentrarnos en DevOps.
¿Qué es DevOps?
Seguramente escuchaste antes esta palabra, pero ¿sabes de qué trata?
Para definir lo que es DevOps, comencemos con lo que no es. No, DevOps no es una carrera o una especialidad de TI, y mucho menos un perfil.
DevOps según Wikipedia es una metodología de desarrollo. Si, de software, ésta se compone de los términos Development (Dev, Desarrollo) y Operations (Op, Operaciones), bastante claro, ¿no?
Ahondemos un poco mas…
DevOps se basa totalmente en los principios de comunicación, colaboración e integración de los miembros del equipo. En si busca profesionistas capaces de trabajar en el ámbito de desarrollo y operación de sistemas de TI.
Planeación
Planear de manera correcta tus actividades así como tus procesos es una parte fundamental de la adopción de una metodología DevOps.
Un pastelero no quiere que se caiga el pastel en la fiesta ¿cierto? Pues igual nosotros no queremos que tu infraestructura tenga problemas.
Eh aquí la importancia de optar por un modelo de planeación. En la primera parte hablamos sobre algunas metodologías de tipo ágil que pueden funcionar a la perfección con tus necesidades. Así que asegúrate de implementar un método de planeación y todo saldrá bien.
Codificación
El punto clave en DevOps es la construcción y desarrollo del proyecto, para que éste sea exitoso se debe contar con los elementos necesarios para desarrollar la codificación del proyecto y con el apoyo de herramientas capaces de ayudarnos a manejar el desarrollo. Así podremos manejar el versionamiento de la codificación del proyecto de una manera ágil durante su ciclo de desarrollo.
“Recuerda que al mantener un control de versionamiento tendremos la habilidad de revertir cambios al instante en caso de que algo salga mal”.
Pruebas
Te aseguramos que sus desarrolladores van a querer saltarse esta parte, pero no les hagas caso ya que es una parte importante del ciclo de desarrollo.
La implementación de pruebas es crucial en todos los ámbitos; ciencias naturales, ciencias sociales, tecnología, por mencionar algunas. Esto se basa en prácticamente probar la solución en busqueda de cualquier fallo o anomalía que después deberá ser corregido.
Por supuesto que cuando las pruebas son planeadas y previo a liberaciones no hay problema.
Pero, ¿Qué pasa cuando tienes liberaciones continuas ?
En esta caso lo mas recomendable sera que implementes automatización de pruebas, una de las muchas características benéficas de utilizar DevOps. De esta manera tus pruebas se concretarán de manera eficaz y eficiente.
Liberaciones
CI: Continuous Integration
La Integración Continua se basa en la constante liberación e integración de código y soluciones. Estas se liberan tan rápido se desarrollen.
CD: Continuous Delivery
La liberación Continua se basa en el rápido y constante proceso de Liberación de entregables para el proyecto en cuestión.
Si quieres conocer más acerca de estas liberaciones en un caso aplicado visita el blog “Why to create a CI/CD pipeline on AWS”.
Monitoreo
Una vez que se hacen las liberaciones, integraciones y pruebas pertinentes lo ideal es implementar un sistema de monitoreo. Así tendrás una visión de rango ampliada sobre el flujo actual de tu solución, serás capaz de visualizar el rendimiento, funcionalidad y errores de ésta, brindándote la oportunidad de tomar acciones de una mejor manera.
Mejora Continua
Una buena y recomendada práctica es analizar los resultados obtenidos después de una implementación tan grande como lo es una metodología de optimización de procesos, para así poder atacar las áreas de oportunidad y mantener una mejora continua en tus servicios.
“Lo que no puede ser medido, no puede ser mejorado”
¿Aún dudas?
En pocas palabras, DevOps agil nace de la necesidad de desarrollar de una manera más eficiente y eficaz, lo que implica una correcta administración, calidad e implementación en nuestro proyecto. La necesidad de integraciones, liberaciones y pruebas constantes requiere de la implementación de un proceso agil de optimización, de esta manera obtendremos un proyecto automatizado y de calidad. Aquí en ClickIT nuestro compromiso es que cuentes con una infraestructura ágil y de calidad.