Manual Básico del Ingeniero de DevOps

A lo largo de los años, se han producido innumerables avances tecnológicos en las herramientas que utilizamos para desarrollar software. La aparición de plataformas en la nube por sí sola ha hecho que la infraestructura sea más rápida, más confiable y más fácil de aprovisionar.

Sin embargo, la entrega de software de alto rendimiento no solo tiene que ver con las herramientas, sino con cómo las usamos.

Más que la tecnología en sí, son las prácticas, los procesos y los cambios culturales que DevOps introduce los que pueden tener un impacto más positivo en la entrega de software.

DevOps es un método de desarrollo ágil y eficiente que según las estadísticas, mejora la velocidad y la calidad de la entrega de software. También es el cambio más significativo que ha ocurrido en la comunidad de desarrollo de software.

Creamos el manual del ingeniero de DevOps para compartir nuestra experiencia con la esperanza de que se beneficie de las lecciones que aprendimos.

VERSIÓN EN INGLÉS DEL MANUAL, por si prefieres las versiones originales

Principios y prácticas básicas de DevOps

El objetivo principal de DevOps es eliminar las barreras que impiden la entrega de software. Las barreras más comunes son:

  • Procesos manuales
  • Política de oficina
  • Flujos de trabajo de apoyo contrarrestados

La razón para superar estas barreras es simple: si su producto es software, entonces todos los procesos deben trabajar hacia la entrega de ese software, no en su contra.

Para lograrlo, la mayoría de las organizaciones necesitan cambiar sus herramientas, prácticas y filosofías.

Si quieres adoptar DevOps, debes centrarte en estas áreas clave:

  • Utilizando la automatización, a través de prácticas como la Integración Continua y la Entrega Continua
  • Adopción de sprints de desarrollo más cortos y ciclos de retroalimentación más rápidos
  • Desarrollar la cultura del equipo uniendo el desarrollo y las operaciones de TI
  • Adopción de flujos de trabajo de soporte más fluidos

Estas ideas se aplican a lo largo de todo lo que llamamos el «ciclo de vida de DevOps». El ciclo de vida de DevOps sugiere un proceso de desarrollo de principio a fin que se parece a esto:

  1. Planear
  2. Codificar
  3. Construir
  4. Probar
  5. empaquetar
  6. Liberar
  7. Desplegar
  8. Operar
  9. Monitorear
  10. ¡Repetir!

Adopción y automatización

No existe una única forma correcta de adoptar DevOps porque cada empresa es diferente. Por ejemplo, es posible que encuentres:

  • Las herramientas existentes no son adecuadas
  • Los procesos de equipo están tan profundamente arraigados que es necesario convencer a los equipos para que cambien.

Ambos problemas pueden tardar un tiempo en resolverse. Sin embargo, si empiezas poco a poco, puedes lograr ganancias que puedes reinvertir rápidamente en mejorar otras áreas.

Sin embargo, conviene empezar por la automatización y la cultura de trabajo. Veamos qué implican.

Automatización

Con DevOps, si puedes automatizarlo, debes automatizarlo.

Los beneficios de la automatización son simples:

  • Liberas a las personas para que puedan realizar trabajos más importantes
  • Los resultados son repetibles y predecibles, especialmente cuando se elimina la posibilidad de error humano.
  • Los equipos pueden responder a los problemas de forma mucho más rápida y flexible.

Con las prácticas de Integración Continua (CI) y Entrega Continua (CD) (generalmente acopladas como ‘CI/CD’) puede automatizar grandes partes del ciclo de vida de DevOps e impactar positivamente sus métricas de DevOps .

Integración continua

La mayoría de los desarrolladores saben cómo funciona el control de código fuente y están familiarizados con la codificación en ramas antes de fusionarlas en la rama principal.

Históricamente, las organizaciones solo fusionaban código en intervalos amplios y guardaban las actualizaciones para fusionarlas en lotes.

Si bien eso técnicamente funciona, desarrollándose de esta manera:

  • Ralentiza el desarrollo, los lanzamientos y las implementaciones.
  • Aumenta la probabilidad de que un error impida otras actualizaciones inocentes

En cambio, la integración continua implica confirmar, fusionar y probar el código muchas veces durante el día. Para ello, es necesario:

  • Es más rápido y menos disruptivo encontrar problemas.
  • No hay necesidad de ventanas de cambio ni fechas límite de confirmación.
  • Sus resultados se vuelven mucho más predecibles
  • Tienes más confianza al implementar tu producto

Sin embargo, la automatización es vital para la eficiencia de la integración continua. Los servidores de compilación o las plataformas de integración continua pueden ayudarlo a automatizar todo, entre las confirmaciones de código y la administración de la versión, lo que incluye:

  • Compilar código confirmado desde su repositorio varias veces al día
  • Ejecutar pruebas automáticas para validar y fusionar código en su rama principal
  • Creación de paquetes implementables y entrega a una herramienta de implementación, como Octopus Deploy

Para verlo de otra manera: las herramientas de integración continua pueden automatizar completamente las siguientes fases del ciclo de vida de DevOps:

  • Construir
  • Prueba
  • Paquete

Se trata de 3 de las 10 fases del ciclo de vida de DevOps automatizadas, pero se puede mejorar aún más añadiendo la entrega continua.

https://cibered.com/jenkins/

Entrega continua

La entrega continua es una práctica que comienza con la integración continua y la incluye, pero termina cuando los usuarios acceden a su software.

La entrega continua le ayuda a:

  • Obtenga artefactos implementables en sus entornos de la manera más rápida y confiable posible
  • Construya y mejore constantemente su canal de implementación y sus procesos
  • Utilice la automatización para liberar a su equipo y permitirle centrarse en trabajos más importantes

Para lograrlo, siga los cinco principios de entrega continua:

  1. Calidad de construcción en
  2. Trabajar en lotes pequeños
  3. Automatiza todo lo que puedas
  4. Mejorar siempre
  5. Todos somos responsables

La entrega continua comparte algunas ideas básicas con la integración continua. Ambas requieren que trabajes en pequeñas cantidades, actúes con frecuencia y automatices todo lo que puedas.

El objetivo de la entrega continua es generar confianza y eficiencia en la entrega de tu software para que beneficie a todos : tu empresa, tu personal y tus usuarios.

https://cibered.com/screwdriver-plataforma-escalable-entrega-continua/

Creando una cultura DevOps ideal

En las organizaciones tradicionales, los desarrolladores y aquellos que los apoyan (como los equipos de operaciones o de bases de datos) a menudo están en equipos separados con poca interacción.

Cada equipo tiene sus propias creencias, responsabilidades y prioridades. Si bien no están en total desacuerdo, esas prioridades pueden entrar en conflicto debido a lo que cada equipo considera que es la mejor práctica.

Adoptar DevOps como cultura significa eliminar esa fricción introduciendo un propósito compartido.

Los métodos para lograrlo pueden variar y dependen de lo arraigadas que estén las personas en sus formas de trabajar. El objetivo es garantizar que todos los equipos:

  • Genere confianza a través de una comunicación y retroalimentación claras y honestas.
  • Colaborar durante todo el ciclo de vida del producto.
  • Tienen lo que necesitan para tomar decisiones rápidas.
  • Puede asumir riesgos sin miedo al fracaso o a la culpa.
  • Son colectivamente responsables del éxito del producto.
  • Revise lo que funcionó y lo que no para el próximo ciclo de vida.

Esto es parte de lo que el modelo organizacional de Westrum llama a una cultura de trabajo generativa.

Aprender Más

Mejores herramientas y soluciones de DevOps
¿Qué es GitOps?
¿Qué es un flujo de trabajo de GitOps?
DevOps vs GitOps, ¿Qué diferencias existen?
¿Qué es la interoperabilidad dentro de la Entrega Continua?
Historia de entrega continua de Dailymotion con Jenkins
¿Qué son los contenedores como Kubernetes o Docker?
10 Mejores Herramientas de DevOps 2024
11 Mejores Herramientas de Automatización de Pruebas
15 Mejores alternativas a Jenkins