¿Qué es DevOps?
En un modelo tradicional de desarrollo de software, los desarrolladores escriben grandes cantidades de código para nuevas funciones, productos, correcciones de errores y similares, y luego pasan su trabajo al equipo de operaciones para su implementación, normalmente a través de un sistema automatizado de tickets. El equipo de operaciones recibe esta solicitud en su cola, prueba el código y lo prepara para la producción, un proceso que puede llevar días, semanas o meses. Con este modelo tradicional, si las operaciones se topan con algún problema durante la implementación, el equipo envía un ticket a los desarrolladores para decirles qué deben solucionar. Finalmente, una vez resueltas estas idas y venidas, la carga de trabajo pasa a producción.
Este modelo convierte la entrega de software en un proceso largo y fragmentado. Los desarrolladores suelen ver las operaciones como un obstáculo que ralentiza los plazos de sus proyectos, mientras que los equipos de operaciones se sienten como el vertedero de los problemas de desarrollo.
DevOps resuelve estos problemas uniendo a los equipos de desarrollo y operaciones a lo largo de todo el proceso de entrega del software, lo que les permite descubrir y solucionar antes los problemas, automatizar las pruebas y la implementación y reducir el tiempo de comercialización.
DevOps no es
- Una combinación de los equipos de desarrollo y operaciones: Sigue habiendo dos equipos; sólo que funcionan de forma comunicativa y colaborativa.
- Su propio equipo independiente: No existe tal cosa como un "ingeniero DevOps". Aunque algunas empresas pueden nombrar un equipo DevOps como piloto cuando intentan hacer la transición a una cultura DevOps, DevOps se refiere a una cultura en la que los desarrolladores, los probadores y el personal de operaciones cooperan a lo largo de todo el ciclo de vida de entrega del software.
- Una herramienta o un conjunto de herramientas: Aunque hay herramientas que funcionan bien con un modelo DevOps o que ayudan a promover la cultura DevOps, DevOps es en última instancia una estrategia, no una herramienta.
- Automatización: Aunque es muy importante para una cultura DevOps, la automatización por sí sola no define DevOps.
Definición de DevOps
En lugar de que los desarrolladores codifiquen enormes conjuntos de funciones antes de entregarlos ciegamente a Operaciones para su implementación, en un modelo DevOps, los desarrolladores entregan con frecuencia pequeñas cantidades de código para su comprobación continua. En lugar de comunicar los problemas y las solicitudes a través de un sistema de tickets, los equipos de desarrollo y operaciones se reúnen con regularidad, comparten análisis y son copropietarios de los proyectos de principio a fin.
Canalización CI/CD
DevOps es un ciclo de integración continua y entrega continua (o implementación continua), también conocido como conducto CI/CD. El canal de CI/CD integra a los equipos de desarrollo y operaciones para mejorar la productividad mediante la automatización de la infraestructura y los flujos de trabajo, así como la medición continua del rendimiento de las aplicaciones. Tiene este aspecto:

- La integración continua requiere que los desarrolladores integren el código en un repositorio varias veces al día para realizar pruebas automatizadas. Cada comprobación se verifica mediante una compilación automatizada, lo que permite a los equipos detectar los problemas con antelación.
- La entrega continua, que no debe confundirse con la implementación continua, significa que la canalización CI está automatizada, pero el código debe pasar por comprobaciones técnicas manuales antes de implementarse en producción.
- La implementación continua lleva la entrega continua un paso más allá. En lugar de comprobaciones manuales, el código pasa las pruebas automatizadas y se implementa automáticamente, lo que proporciona a los clientes acceso instantáneo a las nuevas funciones.
DevOps y seguridad
Uno de los problemas de DevOps es que la seguridad a menudo queda relegada a un segundo plano. Los desarrolladores se mueven con rapidez y sus flujos de trabajo están automatizados. La seguridad es un equipo aparte, y los desarrolladores no quieren ralentizarse por las comprobaciones y peticiones de seguridad. Como resultado, muchos desarrolladores implementan sin pasar por los canales de seguridad adecuados e inevitablemente cometen errores de seguridad perjudiciales.
Para solucionar esto, las organizaciones están adoptando DevSecOps. DevSecOps toma el concepto que subyace a DevOps -la idea de que los desarrolladores y los equipos de TI deben colaborar estrechamente, en lugar de hacerlo por separado, a lo largo de la entrega del software- y lo amplía para incluir la seguridad e integrar comprobaciones automatizadas en todo el canal de CI/CD. Esto soluciona el problema de que la seguridad parezca una fuerza externa y permite a los desarrolladores mantener su velocidad sin comprometer la seguridad de los datos.