DevOps Engineer – Qué es y qué hace

El concepto de DevOps Engineer cada vez es más visible con la implantación de esta cultura, pero, ¿qué es? y más importante ¿qué hace?

Con la llegada de novedades en el día a día de la programación, van apareciendo inevitablemente nuevos conceptos directamente relacionados.

Ya sea metodología, framework, cultura o lenguaje de programación, si ello trae beneficios, las empresas buscan especialistas que les ayuden a conseguirlos.

Así, si como yo, creciste viendo Dragon Ball, Oliver y Benji, He-man y demás, no en reposición 😉 , te será muy difícil imaginar a alguien guardando un código fuente en un disquete, y que existieran puestos como: Agile coach, Scrum Master o [Introdúzcase aquí puesto super molón y actual]

DevOpsEngineer

Por eso, entiendo como normal que el puesto de DevOps Engineer haya aparecido cada vez más, porque DevOps, como sabes (o deberías saber) trae beneficios a las empresas.

Recordando qué es DevOps

Como en los libros de “Elige tu propia aventura”, si tienes claro lo que es DevOps, puedes pasar al siguiente punto, sino, quédate un poquito y te lo recuerdo. 🙂

DevOps es una cultura, que debe estar implementada y por lo tanto seguir todos los componentes de la organización.

DevOpsTeam

Con DevOps tratamos de principalmente de romper las barreras que han existido, y por desgracia todavía existen, entre los departamentos de Desarrollo (Dev) y los de Operaciones o Sistemas (Ops)

Esto es lo principal, pero el término DevOps, abarca mucho más.

Si quieres profundizar en el tema, puedes leer este artículo que escribí sobre qué es DevOps

Así que un DevOps Engineer es…

Pues un DevOps Engineer, a mi modo de ver, debe ser la persona responsable de que, en primer lugar, no existan las barreras entre los equipos que causan tantos retrasos, desperdicios y pérdidas.

Principalmente, claro está, hablando de las barreras que han existido tradicionalmente entre los departamentos de Desarrollo y Operaciones.

Y con esto no me refiero a ningún tipo de coach ni nada similar, aunque lógicamente, las habilidades sociales de esta persona tienen que ser buenas para poder mostrar, bien con actividades, pero sobretodo dando ejemplo, como esta cultura basada en la estrecha colaboración mejora los resultados.

También tiene un componente técnico muy importante, pues hasta ahora, esta separación, tenía entre sus causas, que cada departamento tenía tareas y herramientas diferentes, por lo que era diferente integrarlos.

Por esto, y como veremos más adelante, su trabajo diario será el de administrar y gestionar una serie de herramientas que permitan que el software se cree de forma ágil, segura y con calidad.

Otro motivo, ha sido la falta de automatización en los procesos, lo que generaba una dependencia sobre otras personas que debían completar las tareas, y que a su vez derivaba, en caso de error, en una falta de responsabilidad y en “culpar a otros” a la hora de localizar el origen de la incidencia.

En muchos casos, he visto el puesto de “Site Reliabilty Engineer” o “Release Engineer” como igual, o al menos muy similar. Pero, a mi parecer, con la extensión del concepto DevOps, me parece más sencillo de asimilar y comprender llamarlo DevOps Engineer.

devops

Las tareas de un DevOps Engineer

Muy bien, y ahora entrando más en detalle, ¿qué hace un DevOps Engineer en el día a día?¿qué tareas realiza?¿a qué dedica el tiempo libre? Bueno, esto último no 🙂 pero seguramente la tecnología está entre sus aficiones, como nos pasa a muchos 😀

Pues aquí tienes un recopilatorio de las tareas que tiene que hacer

No son todas, pero si al menos en mi opinión las más importantes.

Administrar herramientas de control de versiones y gestor de repositorios

Hoy en día es impensable no contar con repositorios donde alojar nuestro software, además de ayudarnos de forma fácil la diferencia entre versiones, o la escalabilidad del producto gracias al trabajo con ramas.

Y cuando hablo de repositorios, no me estoy refiriendo solo a los de código fuente.

También debe haber repositorios de artefactos donde podamos guardar tanto paquetes de los productos que desarrollamos, como por ejemplo librerías que serán necesarias.

Administrar herramientas de integración continua

Posiblemente el núcleo de las tareas, sea la administración de estas herramientas.

Las herramientas de integración continua son el “centro de operaciones” en el ciclo de vida del software actualmente.

Desde ellos, se obtienen o llaman al resto de herramientas que nos ayudaran a probar, construir, desplegar y entregar el software.

Gestionar aplicaciones de Testing e Inspección continua

El concepto DevOps nos ha traído agilidad y un mayor número de despliegues.

Pero esto no serviría de nada, sino va acompañado de una mayor calidad.

Así que el DevOps Engineer también debería tener controlado que haya un buen entorno y sistemas de pruebas que permitan asegurar que el producto que construimos hace lo que tiene que hacer.

Aunque en la gestión de las pruebas unitarias, que son principalmente responsabilidad del desarrollador, tengan sus entornos locales configurados, las máquinas encargadas de construir y entregar el software deben contar con las herramientas y librerías adecuadas para poder superarlos.

Y lo mismo ocurrirá con el resto de pruebas que puedan/deban realizarse por una máquina.

Administración de servidores

El dominio de Linux será imprescindible para el día a día un DevOps Engineer.

No solo me refiero a servidores on premise alojados en las dependencias de la organización.

También deberá administrarlos si estos se encuentran en entornos Cloud.

Configuración de entornos Cloud

Y para la gestión de este tipo de entornos, como mencionaba en el punto anterior, será necesario que conozca la configuración adecuada para ello.

Además, su dominio facilita las tareas para la configuración de los pipelines que organizarán los pasos que seguirá el producto.

Programación de scripts

Si, como has visto, las tareas son principalmente configurar, probar, administrar y, además, necesitamos que se haga rápido y bien, mejor que lo haga una máquina 😉

Por eso, también es necesario que se encargue de programar scripts que ayuden a seguir las tareas adecuadas.

Monitorizar

De nada sirve hacer las cosas, si después no sabes que está funcionando bien. Y para eso hay que monitorizar y detectar lo antes posible, cualquier impedimento para que estos ciclos continuos no se interrumpan nunca.

Como hemos visto, un DevOps Engineer hace cosas muy chulas, muy importantes, pero sobretodo muy satisfactorias, tanto por el componente humano/psicológico que tiene, como por la parte técnica que es esencial.

Así que ya lo sabes, si no lo tienes en tu organización… 😀

adoptaundevops

Deja un comentario