Monday, March 28, 2022

Opinión: Por qué un desarrollador debe aprender DevOps

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

Como desarrollador, es posible que estés tentado en aplicar inmediatamente las prácticas técnicas de DevOps para colocar software en producción de manera rápida. Pero cuidado, antes debemos estar cómodos con ciertas prácticas ágiles, porque sino corremos el riesgo de entregar rápidamente software de baja calidad. Entre las mencionadas prácticas ágiles tenemos:.

Prácticas técnicas
  • Versioning
  • Continuous Integration
  • Formal test cases
  • Automated unit tests
  • Automated acceptance tests
  • ...

Prácticas de gestión

  • Retrospectives
  • Backlog management
  • Time-boxing
  • On-site customer
  • ...

Para más información sobre las prácticas ágiles recomiendo el artículo Technical and Organizational Agile Practices: A Latin-American Survey.

¿Por dónde empiezo?

Vimos que las prácticas DevOps se pueden clasificar en dos grupos: prácticas de procesos y prácticas técnicas. Las prácticas de proceso dependen de la organización donde trabajes, pues implica un cambio en como opera esta. Por otro lado, las prácticas técnicas si están muy relacionados con tu trabajo como desarrollador. Mi sugerencia es que sigas el siguiente orden:
  • 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. 


Links Interesantes

Cursos:

No comments:

Post a Comment

API Gateway with ASP.NET Core

Grandes preguntas: ¿Repites mucho código en cada nuevo microservicio? ¿Haces que tus frontends llamen múltiples endpoints para obtener lo qu...