Bomba!, sabemos que existen ciertos conceptos avanzados y necesarios para orquestar el desarrollo tu proyecto y llevarlo a un nivel profesional, aquí en el dev sin site somos conscientes de eso y por eso este artículo te brindará las bases ideales para decidirte por un flujo de trabajo exitoso, de la forma más sencilla posible, vamos allá!

El mundo de los devOps es relativamente complejo, pero no hay duda que los beneficios que aporta y el ROI que obtienes, recompensan el dolor de cabeza que podrías llegar a tener, pero no te preocupes, subiremos cada escalón a paso lento pero seguro. Antes que todo necesitamos saber algunos conceptos prácticos.

Integración Continua a la vista

La integración continua es la forma en que los desarrolladores llevan todos sus cambios hechos con algun control de versiones como git, a un flujo de automatización del software, que tiene como objetivo construir completamente tu sistema, hasta el último commit de la rama que estás trabajando para luego ejecutar pruebas.

Entrega Continua, nuestro siguiente paso

La entrega continua, es el siguiente paso luego de CI, es más, lo incluye este proceso, sin desplegar o llevar a producción el software, esto quiere decir que (CD) te permite abarcar las siguientes etapas:

  • Control de cambios (Source Control): No son más que los commits que subes a tu repositorio
  • Construcción y Pruebas (Build and Tests): Compilaciones, mover y copiar archivos, crear esquemas de bases de datos, etc, para luego ejecutar pruebas unitarias.
  • Puesta en escena (Staging): Simplemente desplegar en un ambiente aislado esta versión de software.
  • Producción (Production): Esta parte se realiza manualmente

Que no se envíe automáticamente el software a producción no significa que no esté listo, todo lo contrario, simplemente se evita este comportamiento para que el encargado(QA) de probar el software le dé el visto bueno al staging, si todo esta ok, se procede a desplegar a producción a golpe de click, caso contrario se envía a corregir y repetir el proceso.

Despliegue Continuo sin demora

Esta es una pequeña variación de la entrega continua, pues si antes se tenía que realizar un despliegue manual, aquí en (CD) simplemente por cada merge a la rama master se procede a deployar automáticamente, el proceso queda de la siguiente manera:

  • Control de cambios (Source Control)
  • Construcción y Pruebas (Build and Tests)
  • Puesta en escena (Staging)
  • Despliege a Producción (Production): Última versión corriendo en la web principal

Estoy seguro que esta infografía resume muy bien el flujo que anteriormente se mencionó, dale un vistazo.

infografia-ci-cd

¿Por qué aplicar CI/DC en mi proyecto y qué ventajas obtendrás?

Ya que se ha explicado el flujo que sigue éste modelo y demás trabalenguas, llegó el momento de saber qué benficios te trae aplicar CD/CD a un proyecto en particular.

Mejora de productividad de desarrollo

Liberarte a tí o a tu equipo de tareas manuales, fomenta un ambiente ágil, enfocándose prioritariamente en los requisitos o historias de usuarios.

Detecta y corrige errores rápidamente

En lo único que debes de preocuparte es en commitear y avanzar, pues cualquier error pequeño que se te pudo haber pasado, puede ser detectado antes de que se haga inmeso en el tiempo, tal cual una bola de nieve, ésto te permite corregir rápidamente antes que sea enviado en una versión final.

Actualizaciones a la velocidad de la luz

Cada actualización de la aplicación y sus nuevas características llegarán más rápido y con frecuencia a manos de tus clientes. Ellos se darán cuenta y obtendrás un feedback instantáneo.

Herramientas disponibles

La elección de una u otra opción dependerá siempre de lo que demande tu proyecto, no es lo mismo tener 1 o 2 desarrolladores, que tener un equipo entero a cargo, que corra en un lenguaje tan versátil como Nodejs, el clásico PHP o la bala de Golang, si vas a necesitar o no soporte para Docker, etc. Pero no te preocupes tienes una infididad de sabores disponibles para elegir, y para hacerlo más fácil aún, estas son las herramientas principales y más populares que puedes encontrar al día de hoy.

Datos complementarios

G2Crowd elaboró una grilla actualizada hasta el 2018, comparando diferentes herramientas para CI, donde se medía la satisfacción que brindaban según sus clientes reales y su presencia en el mercado según 10 fuentes sociales. Puede que una que otra herramienta no se ha tomado en cuenta y nos lamentamos, más adelante te darás cuenta por qué, ok sigamos, los resultados obtenidos fueron clasificados por el tamaño del negocio.

Negocios pequeños

pequenas-negocios

Negocios medianos

mediana-min

Empresas grandes

empresa-grande-min

Si quieres ver por tí mismo esta y otras estadísticas de g2crowd aquí tienes la fuente. Por otra parte Slant también tiene sus resultados a la pregunta ¿Cuál es la mejor herramienta de integración continua del 2018?, estas fuentes te pueden dar más a detalle diversos pro y contras de cada una de las herramientas.

Que elegimos nosotros

Aquí en el el dev sin site solo usamos este flujo para realizar mejoras a este pequeño gran blog, así que nos sobra y basta con Gitlab CI, simple y fácil, aunque también esta en consideración utilizarlo para una aplicación más grande en un futuro cercano.

Consideraciones finales

El uso de un flujo de trabajo de éste tipo es muy importante incluso en etapas iniciales de un proyecto, y dependerá de la herramienta en la que te apoyes lo que facilitará tu trabajo o lo complique, cuando estás iniciando puedes optar por una herramienta free que cumpla tus exigncias mínimas, es más, tú mismo puedes apoyarte de la documentación e integrarla fácilmente, ahora, cuando tu proyecto empieza a crecer debes empezar a considerar contratar a alguien más especializado que maneje los hilos de tu proyecto.

no-problem-thumbs-up-GIF-source

Finished! Hemos revisado satisfactoriamente una parte fundamental del desarrollo de software, si te ha servido este artículo no dudes en compartirlo y dejar un comentario, además suscríbete para más actualizaciones y visítanos en nuestras redes sociales.