Enviado por EWister el Lun, 02/09/2019 - 23:47
DevOps Loop

Quizá en los últimos años en toda empresa que se dedique al Desarrollo se habrá hecho las siguientes preguntas:

¿Qué son los dockers?

¿Qué son los Kubernetes?

¿Qué carajo es DevOps?

Si tu empresa ya comienza a hacerse esas 3 preguntas, podríamos decir que ¡bienvenidos al mundo DevOps!

 


                                                                         - Papá quiero comenzar a hacer DevOps.

- Hijo, una vez que empiezas no puedes interrumpirlo.
- Lo sé.
- Es un compromiso total.

1
DevOps

Antes de iniciar por favor investiga qué son los siguientes términos:

  • Git Flow
  • Pipeline
  • Agente de compilación
  • Continuos integration
  • Continuos delivery

¿Qué es DevOps?

Según Internet “Wiki” DevOps es un acrónimo inglés de development (desarrollo) y operations (operaciones), que se refiere a una metodología de desarrollo de software que se centra en la comunicación, colaboración e integración entre desarrolladores de software y los profesionales de sistemas en las tecnologías de la información (IT).

Se podría decir que el termino es correcto, pero como todas las cosas, sobre todo en la teoría, eso no es tan preciso, lo que voy a contar es la historia de cómo una empresa inició en el proceso de DevOps utilizando Dockers y Kubernetes como herramientas para lograr ese objetivo, no te estoy diciendo que si usas Dockers y Kubernetes ya estas usando DevOps, lo que quiero decirte es que estas herramientas están pensadas para un funcionamiento enfocado en DevOps y te harán la vida un poco más fácil, o eso creo.

¿Cómo iniciar DevOps? Antes de iniciar a implementar DevOps deberías hacer un par de checks en tu organización, si cuentas con todo, adelante, si no, es mejor comenzar por poner el SET UP antes que otra cosa.

Continuos Integration

Lo primero que deberás revisar es si tus repositorios están concentrados en un solo lugar, es decir que no se encuentren en diferentes lugares, por ejemplo, que tu front este en Git Hub y tu back en repositorio en Gitlab. No es malo tenerlo separado solo que te evitarás trabajar doble más adelante.

Segundo es revisar que las brachs de tus repositorios tengan un orden, si no sabes a qué me refiero visita este enlace: https://danielkummer.github.io/git-flow-cheatsheet/

Te abrirá los ojos en cuanto orden dentro de tu Repositorio, tienes que comenzar por tener una cultura de orden de branchs principalmente en las 3 principales:

  • master (Producción)
  • STG o QA (Preproducción)
  • Devlop (Desarrollo)

Si cumples con al menos estas 3 ramas podríamos decir que cumples con el estándar mínimo para seguir. Nota: no tener los repositorios concentrados en un solo lugar no es malo, solo que tendrás que hacer más configuraciones y quizá aumente la complejidad de los pipelines.

Como un segundo paso tocará configurar un agente de compilación y aquí comenzamos por las cosas que nos hace darnos cuenta si tenemos una buena organización.

¿Qué es una agente compilación? Es aquella máquina que se encargará de compilar nuestro código en la nube u on premises cada que se dispare nuestra integración continua, es decir, es quien se encargará de ejecutar y en algunos casos de coordinar nuestros Pipelines.

Cosas a tener en cuenta para crear nuestro agente compilación:

  • Elegir el sistema operativo
  • Plataforma (Jenkins, Azure DevOps, Circle CI, Travis)

Por ejemplo nuestra solución es un API Rest basado en un Net Core 2.2 se podría elegir un Ubuntu (Una versión reciente) y Azure DevOps Agent

La misión de un agente de compilación es realizar una secuencia de pasos que llevan a que nuestro código compile y/o genere un ejecutable que pueda ser deployado en algún hosting, Docker , kubernetes o web app.

2
Agent Job

La idea de tener un Agente compilación es monitorear la salud de nuestros repositorios y de nuestro código fuera de los ordenadores de los desarrolladores.

Una vez ya establecido nuestra agente compilación podremos agregar opciones como alertas, test u otras cosas, debemos entender que un proceso de compilación es solo para mantener y monitorear la salud del repo así que cualquier cosa que pueda ayudar a monitorear es bienvenida.

3
Agente de compilación

Pipelines

Como bien dice el nombre en inglés es una tubería, si lo vemos desde un punto de vista literal el pipeline es el proceso que tendrá nuestro código en nuestro CI/DI, el agua seria nuestro código que recorrerá la tubería (nuestros pasos y procesos) antes de llegar al otro lado de nuestra tubería.

Diseñando una tubería:

Cuando creamos una pipeline, debemos tener en cuenta nuestros recursos y qué queremos lograr, pensando en nuestro proyecto planteado al inicio de este artículo , nuestra aplicación es codificada por un Desarrollador que sube su información a un repositorio git, al momento de que el Desarrollador sube su código dispara nuestra integración continua que lo primero que hace es avisarle a nuestro agente de compilación que actualice el repositorio local del Agente, una vez que lo hace, inicia con una secuencia de pasos para compilar el código, por ejemplo: dotnet restore, dotnet build, dotnet publish etc. (los comandos cambiarán dependiendo el lenguaje). Ya que termine de compilar en local el agente de compilación nos avisa que la compilación es satisfactoria y en caso de que falle nos indica el motivo.

Un buen equipo de desarrollo se preocupa por el estatus de los pipelines, si el agente de compilación tiene un error detienen la actualización del repositorio hasta que encuentran el motivo.

Si nuestra integración continua fue satisfactoria el agente de compilación dejara en algún lugar determinado nuestro ejecutable que será utilizado por un proceso de DI o Despliegue continuo.

4
Pipelines

Eso es todo lo que quería enseñarte, espero que haya sido de tu agrado. Si fue así, chatea con nosotros en Discord, registrate en el foro, síguenos en Facebook y Twitter, y no olvides compartirnos en las redes sociales, te lo agradecemos.

Acerca del autor

Cloud architect professional Azure, C# Developer, SRE Padawan, Kung Fu Panda in Kubernetes and dockers

Comentarios