Introducción a DevOps para principiantes

DevOps se ha convertido en una palabra de moda, lo que significa muchas cosas diferentes para muchas personas.

Es un desafío comprender y definir qué es exactamente DevOps. Y es por eso que si conoce los conceptos fundamentales de DevOps con los que la mayoría de la gente se asocia y la historia de cómo evolucionó, obtenga una visión holística de ello.

El origen de DevOps

DevOps es un ejemplo perfecto de desarrollo de software ágil. La idea de DevOps surgió de la necesidad de mantenerse al día con la mayor velocidad del software y lograrlo a través de métodos ágiles. Durante la última década, los grandes avances en la cultura y las prácticas ágiles expusieron la necesidad de un enfoque más holístico para el ciclo de vida de entrega de software de extremo a extremo.

Quizás se esté preguntando qué es el desarrollo ágil de software:

El desarrollo ágil es un término amplio para definir varias metodologías de desarrollo de software iterativo e incremental. Las metodologías ágiles populares son Scrum, Kanban, Scaled Agile Framework® (SAFe®), Lean Development y Extreme Programming (XP).

Los valores fundamentales y la visión de todas estas metodologías ágiles son los mismos, pero cada una de ellas tiene un enfoque único. Todas estas metodologías incorporan iteraciones y retroalimentación continua para refinar y entregar software escalable con éxito. Todas estas metodologías involucran planificación continua, pruebas continuas, integración continua y otras infinitas formas tanto para el proyecto como para el software.

A diferencia de los procesos convencionales de estilo cascada, estas metodologías ágiles son livianas y vienen con una naturaleza inherentemente adaptable. Una de las mejores cosas de estas metodologías ágiles es que todas se enfocan en empoderar a las personas cuando se trata de colaborar y tomar decisiones rápidas en conjunto.

Imagen de Segue

Los ideales de DevOps ejecutan la práctica extendida de desarrollo ágil para refinar el movimiento del cambio de software a través de la construcción, validación, implementación y diferentes etapas de entrega. Permite que el equipo multifuncional tenga la propiedad total del producto de software, desde el diseño hasta la producción.

Desafíos resueltos por DevOps

Proceso de implementación: las aplicaciones distribuidas a menudo requieren la implementación de archivos binarios y de configuración en varios servidores. Se vuelve más desafiante cuando se tiene una granja de servidores. Se vuelve un desafío averiguar qué, cómo y dónde implementar. El resultado obvio es?

La larga espera para llevar los artefactos al siguiente entorno de la ruta de vida hace que se retrasen todo, como las pruebas, el tiempo de vida, etc.

DevOps permite que los desarrolladores de software o web y las operaciones de TI implementen procesos en una sesión de colaboración totalmente libre de culpa. Nos permitirá verificar qué funciona y luego llevarlo al siguiente nivel con automatización para implementar un desarrollo continuo. También crea vías para un desarrollo más frecuente.

Objetivos de DevOps

Mejora la colaboración entre las partes interesadas desde la planificación hasta la entrega e implementa la automatización del proceso de entrega para:

  • Mejorar la frecuencia del despliegue
  • Lograr un tiempo más rápido para comercializar el producto final
  • Disminuye la tasa de fallas de los nuevos lanzamientos.
  • Acorta el tiempo de espera entre arreglos
  • Mejora el tiempo para el propósito de recuperación

Escenario común de DevOps

Todo el software llega al punto de encuentro antes de iniciar un nuevo proyecto de software. El equipo está formado por desarrolladores, evaluadores, operaciones y profesionales de soporte. El equipo hace el plan para crear un software completamente funcional que esté listo para su implementación.

Cada día se implementa un nuevo código una vez que los desarrolladores lo completan. El procedimiento de prueba automatizado garantiza que el código esté listo para implementarse. Una vez que el código recibe la señal verde del proceso de prueba de automatización, se implementa en una pequeña cantidad de usuarios. El código es monitoreado por un período corto para asegurar que no haya problemas imprevistos y que sea estable. Luego, el nuevo código se implementa para el resto de los usuarios una vez que el monitoreo final ha demostrado que el código es estable. Una parte significativa de los pasos posteriores a la planificación y el desarrollo se realiza sin intervención humana.

Diferentes fases de madurez de DevOps

Hay muchas fases diferentes de madurez de DevOps. Aquí están las frases clave que usted debe saber.

Desarrollo de cascada

Antes de la época de la integración continua, los equipos de desarrollo solían escribir una gran cantidad de código y luego los de diferentes equipos se fusionaban para el lanzamiento. Las versiones del código eran tan diferentes que solían requerir una gran cantidad de cambios.

Hacer estos números de cambios utilizados lleva más de unos pocos meses. Este proceso no fue productivo.

Integración continua

Es una práctica de integrar rápidamente un código recién desarrollado con el código principal que se lanzará. Cuando se trata de publicar el código, el desarrollo continuo ayuda a ahorrar mucho tiempo.

DevOps no introdujo este término. La integración continua es una práctica de ingeniería ágil proveniente de la metodología de Programación Extrema. DevOps ha adoptado esta práctica porque se requiere automatización cuando se trata de ejecutar con éxito la integración continua. La integración continua suele ser lo primero en el camino hacia la madurez de DevOps.

La integración continua desde la perspectiva de DevOps incluye pasos como verificar el código, compilarlo en un código utilizable y ejecutar algunas de las pruebas de validación necesarias. ‘

Entrega continua

Es una extensión de la integración continua y la segunda etapa de DevOps.

La entrega continua le permite agregar automatización y pruebas adicionales para que no solo fusione rápidamente el código con la línea de código principal, sino que también tenga el código casi listo para implementarse sin intervención humana.

Es una práctica mantener su base de código en un estado casi listo para implementar.

Implementación continua

La implementación continua es la evolución avanzada de la entrega continua. Esta práctica nos permite implementar todas las formas en producción sin ninguna intervención humana.

El equipo que trabaja en desarrollo continuo nunca implementa ningún código sin probar. Todo el código recién creado pasa por pruebas automatizadas antes de pasar a la etapa de producción. El código se implementa en una pequeña cantidad de usuarios y hay un circuito de retroalimentación automatizado que supervisa la calidad y el uso antes de que el código pase al siguiente nivel.

Un pequeño número de empresas como Netflix, Etsy, Amazon, Pinterest, Flicker, IMVU, Google, etc., realizan un desarrollo continuo.

El valor

DevOps se enfoca mucho en desarrollar una cultura colaborativa y mejorar la eficiencia a través de la automatización con diferentes herramientas DevOps. Para implementar DevOps para su solución de software, necesita usar una combinación de cultura y herramientas.

Cultura DevOps

DevOps es una cultura particular que ayuda a mejorar la colaboración, disminuir el caos, manejar mejor las responsabilidades compartidas, implementar la automatización, mejorar la calidad, valorar los comentarios y aumentar la automatización.

Los métodos ágiles siempre han sido la mejor manera holística de entregar software. Cuando se trata de medir el progreso, el equipo de desarrollo ágil lo hace en términos de software funcional. El método ágil de la cultura DevOps permite que los propietarios de productos, desarrolladores, evaluadores y personas de UX trabajen en estrecha colaboración con el mismo objetivo en mente.

Herramientas de operaciones de desarrollo

Incluye las herramientas para la gestión de la configuración, las pruebas y la creación de sistemas, el desarrollo de aplicaciones, el control de versiones y la supervisión. Cuando se trata de implementar la integración continua, la entrega continua y la implementación continua, requieren herramientas diferentes y, al mismo tiempo, también usan las mismas herramientas. Necesitará usar más herramientas a medida que avanza en la cadena de entrega.

Conozcamos algunas de las herramientas y prácticas populares.

Repositorio de código fuente: este es un lugar donde los desarrolladores pueden registrarse y cambiar el código. El repositorio de código fuente administra varias versiones del código que se registra para asegurarse de que los desarrolladores escriban sobre el código de los demás.

Git, Apache Subversion, IBM Rational, Artifactory, Nexus, Eclipse, etc., son algunas de las herramientas de repositorio de código populares.

Servidor de compilación: el servidor de compilación es la herramienta de automatización que se utiliza para compilar el código en el código fuente que se respira en la base del código ejecutable. Algunas de las herramientas de servidor de compilación más utilizadas son Jenkins, SonarQube y Artifactory.

Gestión de la configuración: Puppet, Chef, Ansible, SaltStack, Run Deck, etc., ayuda a gestionar la configuración de la aplicación y la infraestructura para mantener la coherencia en todos los entornos.

Infraestructura virtual: AWS, GCP y Azure son los tres principales proveedores de nube pública que ofrecen casi todos los servicios de infraestructura. Ofrecen API, que le permite aprovisionar la infraestructura y administrarla como un código.

Conclusión

Espero que le dé una idea sobre DevOps, y si esto le emociona, entonces puede probar este curso de clase magistral en línea.

Artículo de Payal Goyal