Julián Mejio
XX
Desarrollador full stack
/>

DevOps fácil, parte 1: Introducción

De qué se trata esta serie

DevOps es la práctica de unificar el desarrollo de software (análisis, diseño y codificación) con las etapas operacionales (integración, pruebas y despliegue) a través del monitoreo y automatización. El objetivo es reducir el tiempo entre cada ciclo de desarrollo de software, incrementar la frecuencia de despliegue y alinear de manera óptima el producto con las necesidades del negocio y público objetivo.

Puede pensarse que DevOps está diseñado para equipos de trabajo grandes en donde la calidad sea una prioridad y las entregas sean de gran fiabilidad, pero no es así. DevOps se convertirá en la herramienta más importante para cualquier desarrollador y grupo de trabajo, y luego de usarla se sentiría incompleto si no la tuviera.

Esta serie va dirigida a aquellos desarrolladores que están buscando una forma de organizar su trabajo y no tienen un punto de partida claro. También va dirigida a aquellos desarrolladores interesados en el tema y quieran profundizar un poco más en el desarrollo de software.

Esta serie no va dirigida al desarrollador aficionado. Creo que si de verdad quiere aprender sobre DevOps lo mejor es aprender algunos conceptos de ingeniería de software antes, y ese es un tópico que no abordo aquí, aunque lo poco que tocaré trataré de hacerlo de la manera más didáctica que pueda. Github ofrece una plataforma lo suficientemente buena y robusta para cualquier proyecto, ya sea iniciado por un desarrollador aficionado o no, y sin necesidad de aprender DevOps.

DevOps y los modelos de desarrollo de software

Ha pasado una década desde que el término DevOps empezó a ser conocido por muchos, y aplicado por unos pocos. Hoy en día, entre los desarrolladores es un asunto de «decencia», saber al menos su teoría.

Este término empezó a cultivarse en conferencias sobre modelos ágiles desde el año 2007, sin embargo no era un concepto nuevo. DevOps es más parecido a un cambio cultural, el cual implica el uso de herramientas de automatización y monitoreo en el proceso de desarrollo de software.

Cualquier modelo de desarrollo de software puede beneficiarse de DevOps, sin embargo los modelos ágiles tienen los ciclos de vida suficientemente cortos y flexibles como para sacar el máximo provecho. ¿Por qué? Echemos un vistazo a los tres modelos más conocidos:

Desarrollo en cascada

Este modelo se caracteriza por dividir el desarrollo de software en etapas ordenadas y bien definidas. En cada etapa hay actores bien definidos y los subproductos son artefactos que sintetizan el proceso hasta ese punto.

  1. Levantamiento de requisitos funcionales y no funcionales.
  2. Análisis y modelado del software solución.
  3. Diseño y arquitectura.
  4. Implementación, pruebas unitarias e integración.
  5. Pruebas funcionales, verificación y retroalimentación.
  6. Operación y despliegue.

Todo desarrollador de software está familiarizado con este modelo incluso sin conocerlo. El desarrollador, a medida que se incrementa la complejidad del software que hace, se ve cada vez más en la necesidad de organizar de algún modo su trabajo. Este modelo es simple y robusto, pero poco flexible y muchas veces no vale la pena en proyectos de corto tiempo de duración, ya que se gasta más tiempo en los metaprocesos que en el mismo desarrollo, y ni hablar de la cantidad de artefactos a construir. Muchos usan variaciones optimizadas a sus necesidades. Un equipo de trabajo pequeño puede usar un modelo en cascada de tres etapas: levantamiento, implementación y despliegue.

Vale la pena aclarar que no hay modelos obsoletos. Cada modelo está pensado para un determinado grupo de trabajo y proyecto. El modelo en cascada por ejemplo, puede usarse en proyectos donde la necesidad esté bien descrita tecnicamente, donde haya un presupuesto fijo y un grupo de trabajo mediano a grande.

Ahora, ¿en dónde está el DevOps aquí? Recordemos la premisa DevOps: unificar desarrollo con operación. Las tres etapas corresponden al desarrollo de software, y las últimas tres corresponden a las operaciones sobre el software desarrollado. DevOps puede integrar las etapas 4, 5 y 6, lo que reduciría el tiempo invertido en el metaproceso y también reduciría el tiempo que tomaría estar en la quinta y sexta etapa, ya que se automatizarían.

Continuará…

En la siguiente entrega hablaré sobre otro modelo en donde DevOps podría estar presente, y sobre los modelos ágiles y cómo estas popularizaron la unificación entre el desarrollo y las operaciones.

Anterior
Un blog en 2020
2 Comments
DevOps fácil, parte 3: El paradigma ágil – Blog de Julián Mejio

[…] hemos visto modelos de desarrollo tradicionales como el desarrollo en cascada y el desarrollo en espiral. Ahora veremos en qué consiste el modelo de desarrollo […]

DevOps fácil, parte 2: Desarrollo en espiral – Blog de Julián Mejio

[…] la introducción hablé sobre los aspectos generales del desarrollo en cascada y cómo podría integrarse DevOps en […]

Dejar un comentario

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: