El proceso de coordinar y realizar un seguimiento de un proyecto suele ser complicado. DevOps nos dará una visualización de los avances, controles, pruebas, compilación, despliegue y entrega al cliente.
Nada es imposible, y menos en el desarrollo de un sistema. Veremos cómo podemos adecuar nuestro proyecto alcanzando las metas fijadas, gracias a los procesos automatizados y de gestión que nos ofrece DevOps.
Conociendo a DevOps
Comencemos por lo más simple. DevOps no es nuevo, es una forma organizada de llevar un proyecto.
Todo proyecto incorpora parte humana y factores de tiempos que, de alguna manera, debemos organizarla para no tener bloqueos en futuras entregas al cliente, cumpliendo estándares de calidad y tiempo de entrega del producto en producción (pasando por las distintas etapas de desarrollo -> prueba -> despliegue).
DevOps nos permite realizar todos estos pasos y controles dado que ofrece una visual del flujo de control de cada uno de los procesos y observar, a simple vista, en cuál punto nos encontramos. Por otra parte, permite localizar los retrasos o posibles desviaciones dentro del proceso. Esto nos ayudará a realizar las correspondientes correcciones antes que surjan otros inconvenientes que provocarán retrasos en la entrega del producto al cliente.
Para simplificar, se puede decir, en pocas palabras, que: “DevOps es la unión de personas, procesos y productos para permitir la entrega continua de valor a los clientes.”
Entonces, ¿cómo es que me ayuda? Pues, todo proyecto posee un conjunto de personas que deberán estar constantemente comunicados, de esta forma, podremos resolver los inconvenientes que poseen cada uno de ellos y encontrarle una solución para no quedar demorados y retrasando la entrega del producto.
Este conjunto de personas:
- Analistas: Que relevan las necesidades del cliente lo mas acertadamente posibles y eliminando las dudas que se puedan presentar durante el proyecto.
- Desarrolladores: Dedicados a codificar en base a los distintos requerimientos necesarios para finalizar cada hito o tarea que, posteriormente, otras áreas intervinientes o colegas necesitan para comenzar a codificar la tarea asignada.
- Departamento de QA: Esperando un entregable para realizar el análisis y test del producto asegurando la calidad y el correcto funcionamiento en base a las especificaciones entregadas por los analistas.
- Operadores: Preparando todo el entorno de despliegue para que la aplicación funcione adecuadamente según los requisitos del producto.
Por supuesto, pueden existir otros grupos de personas intervinientes en el proceso de producción del producto. Este es grupo de colaboradores que mínimamente necesitamos para cumplimentar el requerimiento de nuestro proyecto.
Ahora, supongamos que en algún punto existen retrasos, esto provoca una cascada hacia el resto de los sectores pudiendo llegar a incumplir en los plazos de entrega del producto, generando malestar en nuestros clientes.
Muchas veces esto sucede por factores humanos pero otras tantas por problemas técnicos (los cuales pueden suceder) de todas maneras, el retraso en la entrega existe.
¿Qué sucedería si empleamos un marco de trabajo de comunicación de flujo continuo? Pues bien, tendríamos un mayor control entre cada sector interviniente en el proceso localizando posibles inconvenientes y una mejor comunicación entre cada uno de los sectores. Hasta podríamos mejorar la resolución de conflictos, reducir tiempos y proponer nuevas ideas que antes no fueron planteadas.
¡DevOps es la mejor forma de obtener un buen resultado en nuestro proyecto!
Veamos cómo es el principio del flujo continuo.
En este gráfico podemos ver las distintas fases que vamos a comenzar a trabajar para mejorar nuestro proceso de entrega continua mediante DevOps. Las mismas se detallan a continuación:
1. Planificación
Es la primera fase de cualquier proyecto. Aquí tomamos las especificaciones y comenzamos a realizar la planificación del proyecto a partir de la información ofrecida por parte del cliente. Se dividirá las tareas en grupos, se le asignarán las prioridades, orden de ejecución, la descripción (lo más detallada posible) y al responsable de la ejecución/realización de esta.
2. Codificación
A los desarrolladores se les asignarán tareas de la planificación y las prioridades asignadas a las mismas. Serán responsables de indicar el estado de cada tarea y dificultades encontradas. En este punto, es recomendable tener reuniones periódicas para conocer el estado del desarrollo, realizar comentarios o consultas, compartir conocimientos y resolver conflictos que puedan entorpecer el desarrollo del proyecto. En este punto, la utilización de herramientas de control de versiones (como por ejemplo Git) es esencial para lograr un trabajo en conjunto con el equipo de desarrollo.
3. Compilación
Es el proceso de generación del código, entregado por los desarrolladores, listo para su ejecución. Deberá generarse sin inconvenientes, ni errores de compilación. Actualmente, la compilación la realiza una persona o conjunto de personas.
Con DevOps, este proceso se puede automatizar a partir de la última versión del Control de código fuente (por ejemplo, Git) e indicarnos que la misma fue exitosa, si fue necesario actualizar algún código externo o si posee algún tipo de error en el código que pueda presentar problemas al momento de la ejecución (realiza un test de cada parte del producto encontrando errores unitarios en el proyecto).
4. Pruebas
La fase más importante dentro de proceso, realizaremos todos los test unitarios e integrales de calidad (QA) del proyecto, las cuales pasarán a la siguiente fase (en caso de ser exitosas) o volverán a codificarse para resolver los errores encontrados.
Lo mas importante de este proceso es que se puede automatizar en DevOps, acelerando los tiempos de pruebas del producto.
5. Publicación
Es la preparación del paquete (una vez pasado las pruebas de calidad) para realizar el despliegue del producto. Una vez aprobado por el departamento de QA (o el responsable de publicación del producto), DevOps lo puede realizar automáticamente. También existe la posibilidad de realizar publicaciones en entornos especiales para un grupo de personas lo utilicen como el entorno de producción sin dar de baja o cambiar el entorno productivo.
6. Despliegue
El proyecto está listo para entregar al cliente, solo hay que desplegarlo en los equipos que distribuyan la publicación. También se automatiza a partir de una autorización de despliegue del producto, mejorando los tiempos de respuesta y tiempos de caída del producto.
Si se planea utilizar la publicación bajo el entorno Beta y productivo, el cambio es casi instantáneo, pudiendo retornar al viejo entorno productivo en caso de existir algún inconveniente en el nuevo producto desplegado.
7. Operaciones
Son los encargados de adecuar el entorno donde se encuentra desplegado nuestro desarrollo, además de indicarnos si existe algún problema en este.
En este caso, los operadores pueden realizar plantillas de cómo debe desplegarse y bajo que entorno y requisitos y el miso DevOps realizará la creación de los entornos basados en los requerimientos ofrecidos por los operadores.
8. Monitorización
En esta fase monitorizamos el proyecto. Principalmente para localizar alguna falla en su performance o error en su funcionamiento. Este es el que posee una mayor importancia (aunque todos son importantes) dado que va a indicarnos la performance del producto y métricas (que podrán consultarse) para mejorar a este y obtener un detalle de uso del producto.
A partir de este último punto, comienza nuevamente el ciclo para revisar la información obtenida de la monitorización del proyecto. Aquí también se incluyen detalles que se encuentran por parte del cliente, los cuales nuevamente ingresan en la fase de planificación para mejorar o solucionar incidencias dentro del proyecto.
Este ciclo es continuo, lo cual hace que el desarrollo evolucione y tenga la menor cantidad de fallas en cada ciclo de vida del proyecto. DevOps es óptimo para este tipo de desarrollos y, al poder automatizarlo, mejora la calidad del producto y disminuye los tiempos de entrega mejorando la eficiencia de nuestro trabajo.
A simple vista, esto parece muy complicado de llevar a cabo y que nuestra estructura laboral es demasiado complicada para implementarlo. No hay que desanimarse, es más simple de lo que parece ya que todas las fases las estamos aplicando, solo que quizás no las tengamos muy bien definidas o son demasiado implícitas.
Desde Verne Tech podemos ayudarte con tus proyectos.
Habla con uno de nuestros técnicos y cuéntanos las necesidades de tu empresa.
Curso Avanzado de Azure Cloud
Los métodos más utilizados en DevOps
Existen varios métodos que las organizaciones usan para mejorar el desarrollo del producto. Estas se presentan como buenas prácticas y metodologías de desarrollo de software. Seguramente, los habrá escuchado (si no es que ya lo está utilizando). Entre ellas se encuentran:
- Scrum: Define como los miembros de un equipo colaboran para conseguir, entre todos, mejorar el desarrollo y calidad del proyecto. Este tipo de metodología incluye flujos de trabajo y terminología específica:
o Sprints
o Bloques de tiempo
o Scrum diario [reunión]
y roles:
o Scrum Master
o Propietario del producto (product owner) - Kanban. Sus orígenes se remontan a la década de los 50 el cual es utilizado para procesos de fabricación JIT (Just in Time) y aplicado por la fábrica de Toyota para mejorar sus procesos productivos. Kanban significa “Tablero” (en japonés) y sentó los principios para la realización de tareas según los requerimientos del cliente.
- Agile. Los anteriores métodos de desarrollo de software Agile siguen teniendo una gran influencia en las herramientas y las prácticas de DevOps. Muchos de estos métodos, incluidos Scrum y Kanban, han incorporado elementos de la programación Agile.
Ventajas de DevOps
DevOps nos ofrece varias ventajas técnicas y empresariales con las que, en última instancia, se consiguen clientes satisfechos. Algunas de las ventajas de DevOps son las siguientes:
- Mejor y rápida entrega de productos
- Resolución de problemas en menor tiempo y complejidad
- Escalabilidad y disponibilidad
- Entornos de funcionamiento estables
- Mejora en la utilización de recursos
- Automatización de tareas
- Visibilidad de resultados
- Innovación
Debo destacar que este proceso es escalonado, dado que no vamos a poder realizarlo todo junto en un solo paso.
Deberemos tomar el primer punto, analizarlo y mejorarlo para recién pasar al siguiente. Es un excelente método y, si lo aplicamos, vamos a lograr productos de mayor calidad con los mismos recursos humanos que ya tenemos incorporados en la empresa. Solo es comenzar a aplicarlos y concientizar que DevOps llegó para ayudarnos.
Los invito a que comiencen este camino, verán como nuestros productos irán mejorando y nuestros clientes quedarán cada día mas conformes con nuestro trabajo.
Conclusión
Como he mencionado, DevOps vino para ayudarnos y reorganizar nuestras tareas cotidianas. Permitirnos automatizar muchos pasos que mejoran nuestros procesos y quitan tiempo a nuestro personal, permitiendo mejorar (en nuestros puntos débiles) y tomar decisiones oportunas para llegar a los plazos establecidos.
Espero que esta introducción a DevOps los anime a iniciar estos pasos y que sigamos transitando este camino para obtener un producto de excelencia hacia nuestros clientes.