Es hora de aprender seriamente DevOps ¿Porqué?
Así es. Es necesario empezar por el porqué. Descubrir el propósito, hallar la motivación que te mantenga firme en la meta por aprender los procesos, prácticas y herramientas que giran alrededor de DevOps.
Básicamente es una cuestión de entrega rápida de valor. No olvides que los clientes pagan por el valor aportado a sus negocios y esto es prácticamente software funcionando en manos del usuario. Vale la pena revisar el manifiesto ágil para reforzar esta idea.
En este sentido, tu trabajo como desarrollador no termina cuando subes el código al repositorio, sino cuando lo despliegas a un ambiente productivo para que el usuario lo pueda usar. Con este criterio, como desarrolladores nos toca hacer tareas de desarrollo y tareas de operaciones (infraestructura) para lograr que el software esté disponible cuando el usuario lo necesite.
Por lo anterior, DevOps propone un conjunto de prácticas para reducir el tiempo entre un cambio que se realiza en el código y colocar dicho cambio en un ambiente productivo manteniendo altos estándares de calidad.
En el libro DevOps: A Software Architect’s Perspective (by Liming Zhu, Ingo Weber, Len Bass) se proponen 5 prácticas sobre los cuales se basa DevOps:
Práticas de procesos
- Involucrar al área de operaciones desde el kickoff del proyecto
- Hacer que el área de desarrollo asuma la responsabilidad por los incidentes de producción
- Tener un proceso formal de despliegue utilizados por todos (desarrollo y operaciones)
Prácticas técnicas
- Continuos Delivery para entregar el software cuando el negocio lo necesita.
- Infrastructure as code para generar los ambientes de forma rápida y sencilla. Si podemos representar nuestra infraestructura como código, entonces tendremos todos los beneficios del código (versionar, ejecutar, probar, desplegar)
Requisitos para aplicar DevOps
- Versioning
- Continuous Integration
- Formal test cases
- Automated unit tests
- Automated acceptance tests
- ...
- Retrospectives
- Backlog management
- Time-boxing
- On-site customer
- ...
¿Por dónde empiezo?
- Infrastructure as code: aprender las herramientas (Docker, por ejemplo) para manejar nuestra infraestructura como código y poder levantar distintos ambientes.
- Continuous Delivery: aprender las herramientas (Jenkins, por ejemplo) para hacer que nuestro código fluya los ambientes creados anteriormente.