Guía de DevOps para principiantes

Cuál es la importancia de DevOps, qué significa para los profesionales de TI, una descripción de métodos, marcos y herramientas.

Guía de DevOps para principiantes

Han pasado muchas cosas desde que el término DevOps se afianzó en el mundo de TI. Dado que gran parte del ecosistema es de código abierto, es importante reconsiderar por qué comenzó y qué significa para una carrera en TI.

¿Qué es DevOps?

Si bien no existe una definición única, creo que DevOps es un marco tecnológico que permite la colaboración entre los equipos de desarrollo y operaciones para implementar código más rápido en entornos de producción con la capacidad de iterar y automatizar. Pasaremos el resto de este artículo analizando esta afirmación.

La palabra "DevOps" es una combinación de las palabras "desarrollo" y "operaciones". DevOps ayuda a aumentar la velocidad de entrega de aplicaciones y servicios. Esto permite a las organizaciones atender eficazmente a sus clientes y volverse más competitivas en el mercado. En pocas palabras, DevOps es la alineación entre el desarrollo y las operaciones de TI con una comunicación y colaboración más efectivas.

DevOps implica una cultura en la que la colaboración entre los equipos de desarrollo, operaciones y negocios se considera fundamental. No se trata sólo de herramientas, ya que DevOps en una organización también beneficia continuamente a los clientes. Las herramientas son uno de sus pilares, junto con las personas y los procesos. DevOps aumenta la capacidad de las organizaciones para ofrecer soluciones de alta calidad en el menor tiempo posible. DevOps también automatiza todos los procesos, desde la construcción hasta la implementación, la aplicación o el producto.

La discusión sobre DevOps se centra en la relación entre los desarrolladores, las personas que se ganan la vida escribiendo software y los operadores responsables de mantener ese software.

Desafíos para el equipo de desarrollo

Los desarrolladores tienden a ser entusiastas y deseosos de implementar nuevos enfoques y tecnologías para resolver problemas organizacionales. Sin embargo, también enfrentan ciertos problemas:

  • El mercado competitivo crea mucha presión para entregar el producto a tiempo.
  • Deben encargarse de gestionar el código listo para producción e introducir nuevas funciones.
  • El ciclo de lanzamiento puede ser largo, por lo que el equipo de desarrollo debe hacer varias suposiciones antes de implementar las aplicaciones. En este escenario, se requiere más tiempo para resolver los problemas que surgen durante la implementación en un entorno de producción o prueba.

Desafíos que enfrenta el equipo de operaciones

Históricamente, los equipos de operaciones se han centrado en la estabilidad y confiabilidad de los servicios de TI. Es por eso que los equipos de operaciones buscan estabilidad a través de cambios en recursos, tecnologías o enfoques. Sus tareas incluyen:

  • Gestione la asignación de recursos a medida que aumenta la demanda.
  • Manejar los cambios de diseño o personalización necesarios para su uso en un entorno de producción.
  • Diagnosticar y resolver problemas de producción después de la autoimplementación de aplicaciones.

Cómo DevOps resuelve problemas de desarrollo y operaciones

En lugar de implementar una gran cantidad de funciones de la aplicación a la vez, las empresas están tratando de ver si pueden implementar una pequeña cantidad de funciones para sus clientes a través de una serie de iteraciones de lanzamiento. Este enfoque tiene una serie de ventajas, como una mejor calidad del software, comentarios más rápidos de los clientes, etc. Esto, a su vez, garantiza una alta satisfacción del cliente. Para lograr estos objetivos, las empresas están obligadas a:

  • Reducir la tasa de fracaso al lanzar nuevos lanzamientos
  • Aumentar la frecuencia de implementación
  • Logre un tiempo promedio de recuperación más rápido en caso de que se lance una nueva aplicación.
  • Reducir el tiempo de correcciones

DevOps realiza todas estas tareas y ayuda a garantizar una entrega ininterrumpida. Las organizaciones están utilizando DevOps para alcanzar niveles de productividad que eran inimaginables hace apenas unos años. Realizan decenas, cientos e incluso miles de implementaciones por día y, al mismo tiempo, ofrecen confiabilidad, estabilidad y seguridad de primer nivel. (Obtenga más información sobre los tamaños de lote y su impacto en la entrega de software).

DevOps intenta resolver varios problemas resultantes de metodologías pasadas, que incluyen:

  • Aislamiento del trabajo entre los equipos de desarrollo y operaciones.
  • Las pruebas y la implementación son fases separadas que ocurren después del diseño y la construcción y requieren más tiempo que los ciclos de construcción.
  • Se dedica demasiado tiempo a probar, implementar y diseñar en lugar de centrarse en crear servicios empresariales básicos.
  • Implementación manual de código que genera errores en producción
  • Las diferencias en los cronogramas del equipo de desarrollo y operaciones causan retrasos adicionales

Guía de DevOps para principiantes

Enfrentamiento entre DevOps, Agile y TI tradicional

DevOps a menudo se analiza en relación con otras prácticas de TI, particularmente Agile y Waterfall IT.

Agile es un conjunto de principios, valores y prácticas para la producción de software. Entonces, por ejemplo, si tienes una idea que quieres transformar en software, puedes utilizar principios y valores ágiles. Pero este software sólo puede ejecutarse en un entorno de desarrollo o prueba. Necesita una forma sencilla y segura de llevar su software a producción de forma rápida y repetible, y la forma es a través de herramientas y técnicas de DevOps. El desarrollo de software ágil se centra en los procesos de desarrollo y DevOps es responsable del desarrollo y la implementación de la manera más segura y confiable.

Comparar el modelo en cascada tradicional con DevOps es una buena manera de comprender los beneficios que aporta DevOps. El siguiente ejemplo supone que la aplicación estará activa en cuatro semanas, que el desarrollo está completo en un 85 %, la aplicación estará activa y que el proceso de compra de servidores para enviar el código acaba de comenzar.

Procesos tradicionales
Procesos en DevOps

Después de realizar un pedido de nuevos servidores, el equipo de desarrollo trabaja en las pruebas. El grupo de trabajo trabaja en la extensa documentación que requieren las empresas para implementar infraestructura.
Una vez que se realiza un pedido de nuevos servidores, los equipos de desarrollo y operaciones trabajan juntos en los procesos y la documentación para instalar los nuevos servidores. Esto le permite comprender mejor sus requisitos de infraestructura.

La información sobre conmutación por error, redundancia, ubicaciones de centros de datos y requisitos de almacenamiento se tergiversa porque no hay aportaciones de un equipo de desarrollo que tenga un conocimiento profundo del dominio.
Los detalles sobre conmutación por error, redundancia, recuperación ante desastres, ubicaciones de centros de datos y requisitos de almacenamiento se conocen y son correctos gracias a las aportaciones del equipo de desarrollo.

El equipo de operaciones no tiene idea sobre el progreso del equipo de desarrollo. También desarrolla un plan de seguimiento basado en sus propias ideas.

El equipo de operaciones es plenamente consciente de los avances realizados por el equipo de desarrollo. También interactúa con el equipo de desarrollo y trabajan juntos para desarrollar un plan de monitoreo que satisfaga las necesidades comerciales y de TI. También utilizan herramientas de monitoreo del rendimiento de aplicaciones (APM).

Una prueba de carga realizada antes del inicio de una aplicación provoca que la aplicación falle, lo que retrasa su inicio.
Una prueba de carga realizada antes de ejecutar una aplicación da como resultado un rendimiento deficiente. El equipo de desarrollo resuelve rápidamente los cuellos de botella y la aplicación se inicia a tiempo.

Ciclo de vida de DevOps

DevOps implica la adopción de ciertas prácticas generalmente aceptadas.

Planificación continua

La planificación continua se basa en principios lean para comenzar poco a poco identificando los recursos y resultados necesarios para probar el valor del negocio o la visión, adaptarse continuamente, medir el progreso, aprender de las necesidades del cliente, cambiar de dirección según sea necesario para adaptarse a la agilidad y reinventar el plan de negocios.

Desarrollo conjunto

El proceso de desarrollo colaborativo permite a las empresas, los equipos de desarrollo y los equipos de prueba distribuidos en diferentes zonas horarias ofrecer continuamente software de calidad. Esto incluye desarrollo multiplataforma, soporte de programación en varios idiomas, creación de historias de usuario, desarrollo de ideas y gestión del ciclo de vida. El desarrollo colaborativo incluye el proceso y la práctica de la integración continua, que promueve la integración frecuente de código y compilaciones automatizadas. Al implementar código con frecuencia en una aplicación, los problemas de integración se identifican temprano en el ciclo de vida (cuando son más fáciles de solucionar) y el esfuerzo de integración general se reduce a través de retroalimentación continua a medida que el proyecto muestra un progreso continuo y visible.

Pruebas continuas

Las pruebas continuas reducen el costo de las pruebas al ayudar a los equipos de desarrollo a equilibrar la velocidad con la calidad. También elimina los cuellos de botella en las pruebas a través de la virtualización de servicios y facilita la creación de entornos de prueba virtualizados que se pueden compartir, implementar y actualizar fácilmente a medida que cambian los sistemas. Estas capacidades reducen el costo de aprovisionar y mantener entornos de prueba y acortan los tiempos del ciclo de prueba, lo que permite que las pruebas de integración se realicen en una etapa más temprana del ciclo de vida.

Lanzamiento e implementación continuos

Estas técnicas traen consigo una práctica central: liberación e implementación continuas. Esto está garantizado por un proceso continuo que automatiza procesos clave. Reduce los pasos manuales, los tiempos de espera de recursos y el retrabajo al permitir la implementación con solo presionar un botón, lo que genera más lanzamientos, menos errores y una transparencia total.

La automatización juega un papel clave para garantizar una versión de software estable y confiable. Uno de los mayores desafíos es tomar procesos manuales como la construcción, la regresión, la implementación y la creación de infraestructura y automatizarlos. Esto requiere control de versiones del código fuente; escenarios de prueba e implementación; datos de configuración de infraestructura y aplicaciones; y las bibliotecas y paquetes de los que depende la aplicación. Otro factor importante es la capacidad de consultar el estado de todos los entornos.

Monitoreo continuo

El monitoreo continuo proporciona informes de nivel empresarial que ayudan a los equipos de desarrollo a comprender la disponibilidad y el rendimiento de las aplicaciones en entornos de producción antes de implementarlas en producción. La retroalimentación temprana proporcionada por el monitoreo continuo es fundamental para reducir el costo de los errores y dirigir los proyectos en la dirección correcta. Esta práctica suele incluir herramientas de supervisión que normalmente revelan métricas relacionadas con el rendimiento de las aplicaciones.

Retroalimentación y optimización constantes

La retroalimentación y la optimización continuas proporcionan una representación visual del flujo de clientes e identifican áreas problemáticas. Se pueden incluir comentarios en las etapas previa y posterior a la venta para maximizar el valor y garantizar que aún más transacciones se completen con éxito. Todo esto proporciona una visualización inmediata de la causa raíz de los problemas de los clientes que influyen en su comportamiento y su impacto empresarial.

Guía de DevOps para principiantes

Beneficios de DevOps

DevOps puede ayudar a crear un entorno en el que los desarrolladores y las operaciones trabajen en equipo para lograr objetivos comunes. Un hito importante en este proceso es la implementación de la integración continua y la entrega continua (CI/CD). Estas técnicas permitirán a los equipos lanzar software al mercado más rápido y con menos errores.

Los beneficios importantes de DevOps son:

  • Previsibilidad: DevOps ofrece una tasa de fallas significativamente menor para las nuevas versiones.
  • Mantenibilidad: DevOps permite una fácil recuperación si falla una nueva versión o una aplicación deja de funcionar.
  • Reproducibilidad: el control de versiones de una compilación o código le permite restaurar versiones anteriores según sea necesario.
  • Mayor calidad: abordar los problemas de infraestructura mejora la calidad del desarrollo de aplicaciones.
  • Tiempo de comercialización: la optimización de la entrega de software reduce el tiempo de comercialización en un 50 %.
  • Reducción de riesgos: la implementación de seguridad en el ciclo de vida del software reduce la cantidad de defectos a lo largo del ciclo de vida.
  • Eficiencia de costos: la búsqueda de la eficiencia de costos en el desarrollo de software atrae a la alta dirección.
  • Estabilidad: el sistema de software es más estable, seguro y los cambios se pueden auditar.
  • Dividir una base de código más grande en partes manejables: DevOps se basa en métodos de desarrollo ágiles, lo que le permite dividir una base de código grande en partes más pequeñas y manejables.

Principios de DevOps

La adopción de DevOps dio lugar a varios principios que han evolucionado (y continúan evolucionando). La mayoría de los proveedores de soluciones han desarrollado sus propias modificaciones de diversas técnicas. Todos estos principios se basan en un enfoque holístico de DevOps y organizaciones de cualquier tamaño pueden utilizarlos.

Desarrollar y probar en un entorno similar a la producción.

La idea es permitir que los equipos de desarrollo y control de calidad (QA) desarrollen y prueben sistemas que se comporten como sistemas de producción para que puedan ver cómo se comporta y funciona la aplicación mucho antes de que esté lista para su implementación.

La aplicación debe conectarse a los sistemas de producción lo antes posible en su ciclo de vida para abordar tres problemas potenciales importantes. En primer lugar, le permite probar la aplicación en un entorno cercano al entorno real. En segundo lugar, le permite probar y validar los procesos de entrega de aplicaciones con antelación. En tercer lugar, permite al equipo de operaciones probar tempranamente en el ciclo de vida cómo se comportará su entorno cuando se implementen las aplicaciones, permitiéndoles así crear un entorno altamente personalizado y centrado en las aplicaciones.

Implemente con procesos repetibles y confiables

Este principio permite a los equipos de desarrollo y operaciones respaldar procesos ágiles de desarrollo de software durante todo el ciclo de vida del software. La automatización es fundamental para crear procesos iterativos, confiables y repetibles. Por lo tanto, la organización debe crear un canal de entrega que permita la implementación y las pruebas continuas y automatizadas. La implementación frecuente también permite a los equipos probar los procesos de implementación, lo que reduce el riesgo de fallas en la implementación durante los lanzamientos en vivo.

Seguimiento y control de la calidad del trabajo.

Las organizaciones son buenas para monitorear aplicaciones en producción porque tienen herramientas que capturan métricas e indicadores clave de rendimiento (KPI) en tiempo real. Este principio mueve el monitoreo temprano en el ciclo de vida, asegurando que las pruebas automatizadas monitoreen los atributos funcionales y no funcionales de una aplicación en las primeras etapas del proceso. Siempre que se prueba e implementa una aplicación, se deben examinar y analizar las métricas de calidad. Las herramientas de monitoreo brindan alerta temprana sobre problemas operativos y de calidad que pueden surgir durante la producción. Estos indicadores deben recopilarse en un formato que sea accesible y comprensible para todas las partes interesadas.

Mejorar los bucles de retroalimentación

Uno de los objetivos de los procesos DevOps es permitir que las organizaciones respondan y realicen cambios más rápido. En la entrega de software, este objetivo requiere que la organización reciba retroalimentación temprana y luego aprenda rápidamente de cada acción realizada. Este principio requiere que las organizaciones creen canales de comunicación que permitan a las partes interesadas acceder e interactuar de manera retroalimentada. El desarrollo se puede realizar ajustando los planes o prioridades de su proyecto. La industria manufacturera puede actuar mejorando el entorno de producción.

Dev

  • Planificación: Kanboard, Wekan y otras alternativas de Trello; GitLab, Tuleap, Redmine y otras alternativas a JIRA; Mattermost, Roit.im, IRC y otras alternativas de Slack.
  • Código de escritura: Git, Gerrit, Bugzilla; Jenkins y otras herramientas de código abierto para CI/CD
  • Asamblea: Apache Maven, Gradle, Apache Ant, Packer
  • Pruebas: JUnit, pepino, selenio, Apache JMeter

ops

  • Lanzamiento, implementación, operaciones: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etc., Netflix Archaius, Terraform
  • Supervisión: Grafana, Prometheus, Nagios, InfluxDB, Fluentd y otros cubiertos en esta guía

(*Las herramientas de operaciones se han numerado en orden de uso por parte de los equipos de operaciones, pero sus herramientas se superponen con las etapas del ciclo de vida de las herramientas de lanzamiento e implementación. Para facilitar la lectura, se ha eliminado la numeración).

en conclusión

DevOps es una metodología cada vez más popular que tiene como objetivo unir a los desarrolladores y las operaciones como una sola unidad. Es único, diferente de las operaciones de TI tradicionales y complementa Agile (pero no es tan flexible).

Guía de DevOps para principiantes

Descubra los detalles de cómo conseguir una profesión solicitada desde cero o subir de nivel en términos de habilidades y salario completando los cursos en línea pagos de SkillFactory:

más cursos

útil

Fuente: habr.com

Añadir un comentario