DevOps es una metodología muy publicitada que se centra en la cooperación y la colaboración entre los desarrolladores de software y otros profesionales de TI más centrados en las operaciones. DevOps como idea es una consecuencia de la infraestructura ágil, extrapolada de manera efectiva a toda la empresa en lugar de solo al departamento de TI. El concepto ganó popularidad tras la primera conferencia de los devopsdays en Bélgica en 2009.
En este post descubrirás qué es DevOps, por qué es importante y qué habilidades necesitas para desarrollar una carrera exitosa como ingeniero DevOps.
La cultura DevOps
¿Qué es DevOps?
DevOps (una combinación de "Desarrollo" y "Operaciones") enfatiza la importancia de la comunicación y la colaboración entre los desarrolladores de software y los profesionales de TI de producción al tiempo que automatiza la implementación de cambios de software e infraestructura.
El objetivo de DevOps es crear un entorno de trabajo en el que la compilación, prueba e implementación de software pueda ocurrir de manera rápida, frecuente y confiable. A su vez, esto permite que una organización logre sus objetivos más rápidamente, lo que permite un tiempo de respuesta más rápido en la implementación de nuevas funciones, parches de seguridad y corrección de errores.
No existe un único producto o una fórmula mágica que pueda solucionar los problemas existentes en una organización; el propósito de DevOps es aumentar la colaboración.
¿Por qué es importante DevOps?
En pocas palabras, DevOps es importante porque DevOps acelera todo el ciclo de vida del software, desde la confirmación del código hasta la implementación de producción.
Habilidades necesarias para ser un buen ingeniero DevOps
Ya sea durante una implementación o a la hora de gestionar incidentes, un ingeniero de DevOps se verá constantemente desafiado por nuevas tecnologías y problemas complejos. Es por ello, que además de necesitar una gran cantidad de habilidades técnicas para cualquier entorno dado, debe ser una persona curiosa, motivada e inteligente.
Estas son las habilidades básicas que necesita tener un buen ingeniero DevOps:
1- Conocimiento amplio de herramientas y tecnologías
Si bien las nuevas herramientas y tecnologías surgen continuamente en el mundo TI, es importante que un buen ingeniero de DevOps tenga un amplio conocimiento de las que se encuentran en las siguientes áreas:
- Control de código fuente (Git, Bitbucket, …)
- Contenedores (Docker, LXD, …)
- Orquestación (Kubernetes, Swarm, …)
- Cloud (Azure, AWS, …)
- Integración continua (Jenkins, Bamboo, …)
- Automatización de la infraestructura (Terraform, Puppet, Ansible, …)
- Automatización y orquestación de la implementación (Jenkins, GitHub Actions, …)
2- Experiencia con herramientas de automatización de infraestructura
Anteriormente, el aprovisionamiento de la infraestructura de TI era un proceso largo, tedioso y manual. Con el nacimiento de la computación en la nube y las tecnologías de contenedores, la infraestructura que necesitan los desarrolladores se puede aprovisionar a través de un script automatizado. El script ejecuta los comandos necesarios y realiza la gestión de la configuración utilizando una herramientas para ello. La plataforma o infraestructura de aplicaciones requerida se entrega en segundos.
Un ingeniero de DevOps debe poder implementar tecnologías y herramientas de automatización en cualquier nivel, desde los requisitos hasta el desarrollo, las pruebas y las operaciones.
3- Testing
La automatización es impulsada por las pruebas, por lo que se necesitan sólidas habilidades en testing para ser un ingeniero de DevOps exitoso.
Es importante hacer test adecuados en todas las etapas, desde el desarrollo hasta la implementación, para asegurar que todo el sistema funciona correctamente.
El testing continuo es el proceso de reducir el tiempo de espera por la retroalimentación tras hacer las pruebas de código. El código se prueba en el propio entorno de desarrollo utilizando herramientas de prueba de automatización. Las herramientas más usadas para las pruebas continuas son: Selenium, TestComplete y TestingWhiz.
4- Conocimientos en seguridad
Si bien combinar el desarrollo y las operaciones es una excelente manera de optimizar el desarrollo y la implementación del código, ciclos más rápidos significa que las vulnerabilidades se pueden introducir en el código mucho más rápido que antes. Por lo tanto, los ingenieros de DevOps deben poder escribir código seguro para proteger las aplicaciones de ataques, así como defenderse de vulnerabilidades comunes de ciberseguridad.
Es clave crear software seguro desde el principio, en lugar de "arreglarlo" más tarde. Cuanto antes se aborde el tema de la seguridad más barato será solucionar los problemas.
Los profesionales de DevOps, aunque no necesitan ser profesionales expertos en seguridad, se beneficiarán enormemente de tener capacitación en seguridad de software.
5- Habilidades blandas (soft skills)
Las habilidades con las personas son clave. Como ingenieros de software, los profesionales de DevOps tienden, erróneamente, a enfocarse en las herramientas en lugar de las personas y los procesos.
Sin embargo, releyendo el apartado donde se definía la cultura DevOps, se deduce que un buen ingeniero DevOps debe poseer sólidas habilidades de comunicación, para que haga de puente entre los departamentos (desarrollo y operaciones) y reúna a los diferentes equipos para trabajar hacia un objetivo común.
Otra de sus principales habilidades es la colaboración y flexibilidad. Deben ser excelentes trabajadores en equipo y ayudar a eliminar los cuellos de botella donde se produzcan, ya sean realizando revisiones de código o escribiendo test de aceptación. La clave es tener empatía hacia los demás para que todo el equipo pueda trabajar más rápidamente.
Conclusión
Si es un novato en el mundo de DevOps, la lista de habilidades de DevOps puede abrumarte. Sin embargo, estas son las principales habilidades de ingeniería de DevOps que las empresas buscan y aprenderlas puede hacer que tu candidatura destaque sobre las demás.