Development & Operations
Una guía corta y rápida para especializarte en el mundo DevOps.
En esta nota te cuento qué implica ser el DevOps en una empresa de desarrollo, cómo armar una estructura para dar soporte al desarrollo de cualquier aplicación y, por último, recomendaciones de buenas prácticas a la hora de ejercer para convertirte en un DevOps más completo.
Mi trabajo como DevOps
El DevOps es el encargado de implementar las mejores prácticas para integrar los equipos de desarrollo (Dev) y operaciones (Ops), acelerando así las entregas a través de la automatización, colaboración y mejora iterativa, logrando una forma de trabajo mas eficiente en todo el ciclo de vida del desarrollo.
Mi desempeño como DevOps en la empresa implica tareas de configuración y mantenimiento de infraestructura, así como de desarrollo de
tareas de automatización del workflow de distintos proyectos, y la construcción de ciclos de vida de software, basados en CI/CD con AWS, Digital Ocean, Bitbucket Pipelines y Jenkins. Además de la automatización y agilización de los procedimientos y procesos del desarrollo de software, me encargo también de la mantención de herramientas de implementación y monitoreo.
Especializarse en esta rama del desarrollo permite apuntar a un mercado laboral creciente con muy buenas oportunidades.
Por donde empezar
Servidores, contenedores y herramientas de integración contínua. Estas son las tres patas que se necesitan para estructurar cualquier desarrollo. AWS, Digital Ocean, Docker y Jenkins son las que elegimos. Para empezar, te recomiendo usar Docker, Jenkins y cualquier servidor al que tengas acceso, como AWS o Digital Ocean.
¿Qué es Docker?
Es un servicio de administración de contenedores que permite a los desarrolladores crear aplicaciones, enviarlas a contenedores y ejecutarlas en cualquier lugar. Por lo tanto, permite crear sus propios entornos personalizados que pueden incluir una variedad de sistemas operativos y marcos de desarrollo.
Los contenedores Docker son bastante livianos y se pueden implementar en cualquier máquina física y virtual e incluso en la nube. Para profundizar en esta herramienta, te recomiendo leer otro de nuestros artículos donde te contamos todo lo que tenés que saber sobre Docker:
¿Qué es Jenkins?
Jenkins es una herramienta de código abierto, basado en java, que permite realizar flujos CI/CD. Es una de las más utilizadas en la actualidad ya que, a través de plugins, tiene una amplia integridad con distintas herramientas (GIT — Nexus — Base de datos — AWS — Azure — etc.). Para desarrollos grandes que requieran una arquitectura compleja, Jenkins tiene la capacidad de conectarse a los distintos entornos y orquestar el ciclo de vida del desarrollo.
Buenas prácticas y recomendaciones
Como en todas las tareas, siempre hay guías de buenas prácticas a seguir para lograr buenos resultados. En mi opinión, todo DevOps debe:
- Trabajar en conjunto con las diferentes áreas/equipos para conocer sus necesidades. Estas son la base de toda tarea de DevOps.
- Conocer distintas herramientas, sus virtudes y defectos, manteniéndonos actualizados sobre ellas. En el link de abajo, podés ver una tabla periódica interactiva con todas las herramientas disponibles para DevOps, con informacion de cada una para que puedas elegir la más conveniente para tu proyecto.
- No aplicar siempre la misma fórmula a todos los proyectos. Dentro de una empresa de desarrollo suele haber varios proyectos y equipos trabajando en simultáneo. No todos los proyectos son iguales por lo que es importante estar en contacto con cada uno para realizar un análisis sobre el proyecto, teniendo en cuenta su escalabilidad, para utilizar las herramientas adecuadas.
- Automatizar todo lo que se pueda, reduciendo tiempos y errores que se pueden cometer en las implementaciones manuales.
- No quedarse con la implementación hecha. Siempre es necesario hacer un seguimiento constante, analizando registros, métricas o retroalimentación de desarrolladores para realizar mejoras en el flujo.
¿Qué diferencia a un DevOps Junior de un Senior?
En esencia, un ingeniero senior de DevOps analiza cualquier problema dado de manera integral e intentando comprender cómo se puede implementar cambios a escala empresarial y no simplemente tratando de resolver el problema dado por única vez. Francamente, esta habilidad es menos técnica y más sobre evaluación y resolución de problemas.
Para tener una noción más profunda de todo lo que se necesita aprender para convertirte en un DevOps completo, podés ver en el link de abajo una hoja de ruta o roadmap con los lenguajes y programas que se recomienda aprender o tener en cuenta. Nada se logra de un día para el otro. Hay mucha información disponible y por eso es útil ordenarse e ir avanzando de a poco.
Por otro lado, este artículo es muy interesante y completo para adentrarte en el tema, se basa en el mismo roadmap compartido arriba, pero con sugerencias extra y links a los cursos donde se puede profundizar en cada tema:
Para terminar, si te quedaste con ganas de aprender, acá te dejo 10 cursos para capacitarte sobre DevOps online:
¡Gracias por leer hasta el final! Espero que te haya resultado útil y cualquier consulta que tengas no dudes en dejarla en los comentarios.