Mucho ha sucedido desde que el término DevOps se arraigó en el mundo de TI. Dado que la mayor parte del ecosistema es de código abierto, es importante revisar por qué comenzó y qué significa para una carrera en TI.
¿Qué es DevOps?
Aunque no existe una definición única, creo que DevOps es una estructura tecnológica que proporciona interacción entre los equipos de desarrollo y los equipos operativos para una implementación de código más rápida en entornos de producción con la posibilidad de repetición de acciones y automatización. Pasaremos el resto del artículo desempacando esta declaración.
La palabra "DevOps" es una concatenación de las palabras "desarrollo" y "operaciones". DevOps ayuda a aumentar la velocidad de entrega de aplicaciones y servicios. Esto permite a las organizaciones servir eficazmente a sus clientes y ser más competitivos en el mercado. En pocas palabras, DevOps es la coherencia entre el desarrollo y las operaciones de TI con una colaboración y colaboración más efectiva.
DevOps visualiza una cultura en la que la colaboración entre equipos de desarrollo, operadores y equipos de negocios se considera un aspecto crítico. No se trata solo de herramientas, porque 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 permite a las organizaciones ofrecer soluciones de alta calidad en el menor tiempo posible. DevOps también automatiza todos los procesos, desde el ensamblaje hasta la implementación, la aplicación o el producto.
La discusión de DevOps se centra en la relación entre los desarrolladores, las personas que escriben software de por vida y los operadores responsables de mantener ese software.
Desafíos para el equipo de desarrollo.
Los desarrolladores, como regla, introducen entusiasta y voluntariamente nuevos enfoques y tecnologías para resolver los problemas de las organizaciones. Sin embargo, también enfrentan ciertos desafíos:
- El mercado competitivo genera mucha presión para entregar el producto a tiempo.
- Deben ocuparse de administrar el código listo para producción e introducir nuevas características.
- El ciclo de lanzamiento puede ser largo, por lo que el equipo de desarrollo debe hacer varias suposiciones antes de implementar aplicaciones. En tal escenario, se necesita 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
Los equipos de operaciones se han centrado históricamente en la estabilidad y la fiabilidad de los servicios de TI. Es por eso que los equipos operativos buscan estabilidad a través de cambios en los recursos, tecnologías o enfoques. Sus tareas incluyen:
- Administre la asignación de recursos a medida que crece la demanda.
- Maneje los cambios de diseño o personalización necesarios para su aplicación en un entorno de producción.
- Diagnostique y resuelva problemas relacionados con la producción después de las aplicaciones de autodespliegue.
Cómo DevOps resuelve problemas de desarrollo y operaciones
En lugar de implementar una gran cantidad de características de la aplicación a la vez, las compañías están tratando de descubrir si pueden implementar una pequeña cantidad de características para sus clientes a través de una serie de iteraciones de lanzamiento. Este enfoque tiene varias ventajas, como una mejor calidad de software, comentarios más rápidos de los clientes, etc. Esto, a su vez, garantiza un alto grado de satisfacción del cliente. Para lograr estos objetivos, las empresas deben:
- Reduzca la tasa de rebote para nuevos lanzamientos
- Aumentar la frecuencia de implementación
- Logre un tiempo de recuperación promedio más rápido en caso de una nueva versión de la aplicación.
- Reduce el tiempo de correcciones
DevOps realiza todas estas tareas y ayuda a garantizar un suministro ininterrumpido. Las organizaciones están utilizando DevOps para alcanzar niveles de rendimiento que eran impensables hace solo unos años. Realizan decenas, cientos e incluso miles de implementaciones por día, al tiempo que garantizan confiabilidad, estabilidad y seguridad de clase mundial. (Obtenga más información sobre los tamaños de lote y su impacto en la entrega de software).
DevOps intenta abordar una variedad de problemas derivados de metodologías pasadas, que incluyen:
- Aislamiento de equipos de desarrollo y operadores.
- Las pruebas y la implementación como fases separadas, realizadas después del diseño y la compilación, y demoran más que los ciclos de compilación.
- , -
- ,
- ,
DevOps, Agile IT
DevOps a menudo se discute en relación con otras prácticas de TI, en particular la infraestructura de TI ágil y en cascada.
Agile es un conjunto de principios, valores y métodos de producción de software. Entonces, por ejemplo, si tiene una idea que desea convertir en software, puede usar los principios y valores de Agile. Pero este software solo puede ejecutarse en un entorno de desarrollo o prueba. Necesita una forma simple y segura de transferir rápidamente y con un software de alta repetibilidad al entorno de producción, y el camino se encuentra en las herramientas y métodos de DevOps. El desarrollo ágil de software se centra en los procesos de desarrollo, mientras que DevOps es responsable del desarrollo y la implementación de la manera más segura y confiable.
Comparar el modelo de cascada tradicional con DevOps es una buena manera de comprender los beneficios de DevOps. El siguiente ejemplo supone que la aplicación estará en funcionamiento en cuatro semanas, el desarrollo estará completo en un 85%, la aplicación estará en funcionamiento y el proceso de compra de servidores para enviar código acaba de comenzar.
Procesos tradicionales | Procesos en DevOps |
---|---|
Después de realizar un pedido de nuevos servidores, el equipo de desarrollo está trabajando en las pruebas. El grupo de trabajo está trabajando en la extensa documentación que las empresas necesitan para desplegar infraestructura. | Después de realizar un pedido de nuevos servidores, los equipos de desarrollo y operadores trabajan juntos en los procesos y el flujo de trabajo para instalar los nuevos servidores. Esto permite una mejor comprensión de los requisitos de infraestructura.
|
, , , , . | , , , . |
. .
|
El equipo operativo es plenamente consciente del progreso realizado por el equipo de desarrollo. También interactúa con el equipo de desarrollo y conjuntamente desarrollan un plan de monitoreo que satisface las necesidades de TI y comerciales. También usan las herramientas de Application Performance Monitoring (APM).
|
La prueba de carga realizada antes de iniciar la aplicación hace que la aplicación se bloquee, lo que retrasa su inicio. | Una prueba de carga antes de ejecutar una aplicación da como resultado un bajo rendimiento. El equipo de desarrollo elimina rápidamente los cuellos de botella y la aplicación comienza a tiempo. |
Ciclo de vida de DevOps
DevOps implica adoptar ciertas prácticas generalmente aceptadas.
Planificación continua
La planificación continua se basa en principios lean para comenzar en pequeño mediante la identificación de los recursos y productos necesarios para validar el valor o la visión del negocio, adaptarse continuamente, medir el progreso, aprender de las necesidades del cliente, cambiar la dirección según sea necesario con agilidad y renovar plan de negocios.
Desarrollo conjunto
El proceso de desarrollo colaborativo permite que las empresas, los equipos de desarrollo y los equipos de prueba en múltiples zonas horarias entreguen software de calidad continuamente. Esto incluye desarrollo multiplataforma, soporte de programación multilingüe, narración de historias de usuario, desarrollo de ideas y gestión del ciclo de vida. El desarrollo conjunto incluye un proceso y una práctica de integración continua que facilita la integración frecuente de código y las compilaciones automatizadas. Con la inyección frecuente de código, los problemas de integración se identifican temprano en el ciclo de vida (cuando son más fáciles de solucionar), y los esfuerzos generales de integración se reducen a través de la retroalimentación continua a medida que el proyecto muestra un progreso continuo y visible.
Prueba continua
Las pruebas continuas reducen el costo de las pruebas al ayudar a los equipos de desarrollo a equilibrar la velocidad y la calidad. También elimina los cuellos de botella de prueba a través de la virtualización de servicios y simplifica 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 inicializar y mantener entornos de prueba, y también reducen los tiempos de ciclo de prueba al permitir las pruebas de integración al inicio del ciclo de vida.
Lanzamiento continuo y despliegue
Estas técnicas traen consigo una de las prácticas principales: lanzamiento y despliegue continuo. Esto proporciona una tubería continua que automatiza los procesos clave. Reduce la cantidad de operaciones manuales, el tiempo de espera para recursos y la cantidad de retrabajo, lo que le permite implementar con solo hacer clic en un botón, lo que proporciona más versiones, menos errores y total transparencia.
La automatización desempeña un papel clave para garantizar la entrega de software estable y confiable. Uno de los mayores desafíos es adoptar y automatizar procesos manuales tales como compilación, regresión, implementación e infraestructura. Esto requiere control de versión del código fuente; escenarios de prueba e implementación; infraestructura y datos de configuración de aplicaciones; así como 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 permite la generación de informes a nivel empresarial que ayudan a los equipos de desarrollo a comprender la disponibilidad y el rendimiento de las aplicaciones en un entorno de producción, incluso antes de que se implementen en la 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 a menudo incluye herramientas de monitoreo, que generalmente revelan métricas relacionadas con el rendimiento de la aplicación.
Retroalimentación constante y optimización
La retroalimentación continua y la optimización proporcionan una representación visual del flujo de clientes e identificación precisa de las áreas problemáticas. La retroalimentación se puede incluir en las etapas de preventa y posproducción para maximizar el valor y garantizar la finalización exitosa de aún más transacciones. Todo esto proporciona una visualización inmediata de la causa raíz de los problemas del cliente que afectan su comportamiento e impacto en el negocio.
Beneficios de DevOps
DevOps puede ayudar a crear un entorno en el que los desarrolladores y operadores trabajen en equipo para lograr objetivos comunes. Un hito importante en este proceso es la introducción de la integración continua y la entrega continua (CI / CD). Estas técnicas permitirán a los equipos llevar el software al mercado más rápido con menos errores.
Los beneficios importantes de DevOps son:
- Previsibilidad: DevOps ofrece tasas de falla significativamente más bajas para nuevas versiones.
- Mantenibilidad: DevOps proporciona una recuperación fácil en caso de un nuevo fallo de la versión o la interrupción de la aplicación.
- Reproducibilidad: un sistema de control de revisión de ensamblaje o código le permite restaurar versiones anteriores según sea necesario.
- Mayor calidad: la resolución de problemas de infraestructura mejora el desarrollo de aplicaciones.
- : 50%.
- : .
- : .
- : , , .
- : DevOps , .
DevOps
La adopción de DevOps ha generado varios principios que han evolucionado (y continúan evolucionando). La mayoría de los proveedores de soluciones han desarrollado sus propias modificaciones a las diversas técnicas. Todos estos principios se basan en un enfoque holístico de DevOps, y las organizaciones de cualquier tamaño pueden usarlos.
Desarrollar y probar en un entorno similar a la producción.
La conclusión es permitir que los equipos de desarrollo y los equipos de control de calidad (QA) diseñen 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 la implementación. ...
Una aplicación debe estar conectada a los sistemas de producción lo antes posible durante su ciclo de vida para abordar tres problemas potenciales principales. Primero, le permite probar su aplicación en un entorno similar al entorno real. En segundo lugar, le permite probar y validar sus procesos de entrega de aplicaciones por adelantado. En tercer lugar, permite al equipo operativo verificar en una etapa temprana del ciclo de vida cómo se comportará su entorno cuando se implementen las aplicaciones, lo que les permite crear un entorno orientado a las aplicaciones finamente ajustado.
Implementación con procesos repetibles y confiables
Este principio permite a los equipos de desarrollo y operadores mantener procesos ágiles de desarrollo de software durante todo el ciclo de vida. La automatización es crítica para crear procesos iterativos, confiables y reproducibles. Por lo tanto, la organización debe crear un canal de entrega que permita la implementación y las pruebas automáticas continuas. Las implementaciones frecuentes también permiten a los equipos probar los procesos de implementación, lo que reduce el riesgo de fallas de implementación durante las versiones reales.
Monitorear y verificar 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 brinda monitoreo al inicio del ciclo de vida, asegurando que las pruebas automatizadas rastreen los atributos funcionales y no funcionales de una aplicación al inicio del proceso. Cada vez que se prueba e implementa una aplicación, se deben examinar y analizar métricas de calidad. Las herramientas de monitoreo proporcionan una alerta temprana de los 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 todos los interesados.
Mejora de los bucles de retroalimentación
Uno de los objetivos de los procesos de DevOps es permitir que las organizaciones respondan más rápido y hagan 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 tomada. Este principio requiere que las organizaciones creen canales de comunicación que permitan a las partes interesadas acceder e interactuar sobre una base de comentarios. El desarrollo puede llevarse a cabo ajustando sus planes o prioridades de proyecto. La producción puede actuar mejorando el ambiente de trabajo.
Dev
- Programación: Kanboard, Wekan y otras alternativas de Trello GitLab, Tuleap, Redmine y otras alternativas de JIRA; Mattermost, Roit.im, IRC y otras alternativas de Slack.
- : Git, Gerrit, Bugzilla; Jenkins CI/CD
- : Apache Maven, Gradle, Apache Ant, Packer
- : JUnit, Cucumber, Selenium, Apache JMeter
Ops
- , , : Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
- : Grafana, Prometheus, Nagios, InfluxDB, Fluentd, ,
(* , . .)
DevOps es una metodología cada vez más popular que tiene como objetivo reunir a los desarrolladores y operadores en un todo coherente. Es único, diferente de las operaciones de TI tradicionales y complementario de Agile (pero no tan flexible).
Aprenda los detalles de cómo obtener una profesión solicitada desde cero o subir de nivel en habilidades y salario completando los cursos en línea pagos de SkillFactory:
- Curso DevOps (12 meses)
mas cursos
- Machine Learning (12 )
- Data Science (12 )
- (9 )
- «Python -» (9 )