DevOps & Agile
DevOps & Agile
¿Conoces la diferencia entre DevOps y Agile? Se formaron como conceptos independientes. Pero ahora los dos términos se están fusionando.
En este post, examinaremos las diferencias cruciales entre Agile y DevOps y descubriremos por qué los dos están tan estrechamente conectados.
Para empezar, debemos entender un poco más sobre un ángulo común en el aprendizaje entre DevOps vs Agile, a pesar de que tienen objetivos y procesos similares. Empecemos con las definiciones.
Agile Development
Agile es un enfoque que se centra en la entrega de pequeños resultados con más asiduidad, en lugar de liberar una gran interacción del producto tomando tiempos más largos; el software se desarrolla en iteraciones: El equipo lanza una nueva versión cada mes, cada semana o incluso a diario en algunos casos, con actualizaciones incrementales. El objetivo final de Agile es ofrecer una experiencia óptima a los usuarios finales con cambios progresivos, desde la primera entrega que es un producto mínimo viable.
DevOps
Hemos estado cubriendo esto durante los anteriores días, con algunas diferencias en la forma de describir los objetivos finales de DevOps. DevOps suele describir el desarrollo y la entrega de software basadas en la cooperación entre desarrolladores y especialistas en operaciones. Las principales ventajas de DevOps son la simplificación de los procesos de desarrollo y la minimización de la falta de comunicación.
¿Cuál es la diferencia entre Agile y DevOps?
La diferencia principal son las preocupaciones que tienen. Agile y DevOps tienen preocupaciones diferentes aunque se ayuden mutuamente. Agile quiere una iteración corta, que sólo es posible con la automatización que aporta DevOps. Agile quiere que el cliente pruebe una versión específica y dé rápidamente feedback, lo que sólo es posible si DevOps facilita la creación de los entornos necesarios para este fin.
Diferentes participantes
Agile se centra en optimizar la comunicación entre los usuarios finales y los desarrolladores, mientras que DevOps se dirige a los desarrolladores y a los miembros del equipo de operaciones. Podríamos decir que agile está orientado hacia el exterior, hacia los clientes, mientras que DevOps es un conjunto de prácticas internas.
Equipo
Agile suele aplicarse a los desarrolladores de software y a los gestores de proyectos. Las competencias de los ingenieros de DevOps se encuentran en la intersección del desarrollo, el control de calidad (QA) y las operaciones, ya que participan en todas las etapas del ciclo de vida del software, formando parte también del equipo Agile.
Frameworks aplicados
Agile cuenta con una gran cantidad de marcos de gestión para lograr flexibilidad y transparencia:
Scrum --> Kanban --> Lean --> Extreme --> Crystal --> Dynamic --> Feature-Driven
DevOps se centra en el enfoque de desarrollo en colaboración pero no ofrece metodologías específicas. DevOps promueve prácticas como la Infraestructura como Código (IaC), la Arquitectura como código, la monitorización, Self Healing, la automatización de pruebas de extremo a extremo... Pero en sí no es un marco de trabajo, más bien es una práctica.
Feedback
En Agile la principal fuente de feedback es el usuario final mientras que en DevOps el feedback de los stakeholders y del propio equipo tiene prioridad, ya que ellos conocen los posibles cuellos de botella y las buenas prácticas.
Áreas objetivo
Agile se centra más en el desarrollo de software que en el despliegue y el mantenimiento. DevOps se centra también en el desarrollo de software, pero sus valores y herramientas cubren además las etapas de despliegue y post-lanzamiento, la monitorización, la alta disponibilidad, la seguridad y la protección de datos.
Documentación
Agile da prioridad a la flexibilidad y a las tareas en curso sobre la documentación y la supervisión. En cambio, DevOps considera la documentación del proyecto como uno de los componentes esenciales del mismo. Docs-as-code
Riesgos
Los riesgos Agile se derivan de la flexibilidad de la metodología. Los proyectos Agile son difíciles de predecir o evaluar, ya que las prioridades y los requisitos cambian continuamente.
Los riesgos de DevOps se derivan de una mala interpretación de los términos y/o de la falta de herramientas adecuadas. Algunas personas ven DevOps como una colección de software para el despliegue y la integración continua, pero el software cambia según la estructura subyacente de los procesos de desarrollo.
Las herramientas utilizadas
Las herramientas Agile se centran en la gestión de la comunicación, la colaboración, las métricas y el procesamiento de la información. Las más populares podrían ser Jira, Trello, Slack, Zoom y SurveyMonkey entre otras.
DevOps utiliza herramientas para la comunicación del equipo, el desarrollo de software, el despliegue y la integración como Jenkins, GitHub Actions, BitBucket, etc. Aunque Agile y DevOps tienen enfoques y alcances ligeramente diferentes, los valores clave son casi idénticos, por lo que se pueden combinar los dos.
Unirlo todo... ¿buena idea? ¿Quizá no?
La combinación de Agile y DevOps aporta los siguientes beneficios que obtendrás:
- Gestión flexible y tecnología potente.
- Las prácticas Agile ayudan a los equipos de DevOps a comunicar sus prioridades de forma más eficiente.
- El coste de automatización por las prácticas DevOps se justifican por su requisito Agile de desplegar con rapidez y frecuencia.
- Conlleva un fortalecimiento: el equipo que adopta prácticas Agile mejorará la colaboración, aumentará la motivación del equipo y disminuirá las tasas de rotación de empleados.
- Como resultado, se obtiene una mejor calidad del software y más adaptado a las necesidades del cliente.
Agile permite volver a etapas anteriores de desarrollo del producto para corregir errores y evitar la acumulación de deuda técnica. Para adoptar agile y DevOps simultáneamente sólo hay que seguir estos 7 pasos:
- Unir los equipos de desarrollo y operación con una comunicación fluida.
- Crear equipos de construcción y ejecución, todas las preocupaciones de desarrollo y operaciones son discutidas por todo el equipo DevOps.
- Cambiar el enfoque de los sprints y asignar calificaciones de prioridad para ofrecer tareas DevOps que tengan el mismo valor que las tareas de desarrollo. Animar a los equipos de desarrollo y operaciones a intercambiar su opinión sobre el flujo de trabajo de otros equipos y los posibles problemas/mejoras.
- Incluir el control de calidad en todas las etapas de desarrollo.
- Elegir las herramientas adecuadas.
- Automatizar todo lo que se pueda automatizar.
- Medir y controlar utilizando resultados tangibles.
¿Qué opinas? ¿Tienes otros puntos de vista? Quiero escuchar a los desarrolladores, operaciones, QA o cualquier persona que tenga una mejor comprensión de Agile y DevOps que pueda quiera comentar y dar feedback sobre esto?
Recursos
- DevOps for Developers – Day in the Life: DevOps Engineer in 2021
- 3 Things I wish I knew as a DevOps Engineer
- How to become a DevOps Engineer feat. Shawn Powers
Si has llegado hasta aquí entonces sabrás si es aquí donde quieres estar o no. Nos vemos en el Día 5.