fullonnet-la-era-de-los-devops

La era de los DevOps

16 jul., 2018 | José Manuel Ortega Falcón | | 0 Comentarios

En la actualidad, la competitividad tecnológica es abismal, y el lanzar un servicio/producto al mercado en el momento justo puedo determinar el éxito o el fracaso del mismo. Por esto es muy importante que entendamos las reglas. Entre ellas figura el término "SecDevOps” y me centrare únicamente en este. A lo largo de este artículo aclararemos su significado, y conoceremos todo lo que gira a su alrededor: actores, procesos, métodos de trabajo, etc.

 

SecDevOps (o también DevSecOps y DevOpsSec), es una filosofía donde se pretende mejorar la productividad en el desarrollo de servicios y/o productos tecnológicos. Para ello, se involucra en un solo proceso tanto al equipo de desarrollo, como al de operaciones y seguridad. Cuando se cita este término, lo primero que me viene a la cabeza son tres cosas: CI (integración continua -contiuous integration-), CD (despliegue continuo - continuous deployment -) y "Agile" (Scrum, kanban y todos sus derivados). Todas ellas están presentes dentro del concepto SecDevOps. A continuación, profundizaremos uno a uno:

 

Integración continua:

 

Enmarca el proceso de construcción del producto o servicio. Un proceso donde tienen que ir de la mano la fase de desarrollo (Dev), seguridad (Sec) y de pruebas (QA - test unitarios, dinámicos, usabilidad, rendimiento, etc.). Es decir, conforme se desarrolla el producto o servicio se certifica que se va cumpliendo con los requisitos funcionales, de calidad, de seguridad, usabilidad, etc.

 

No se debe esperar a completar el producto o servicio final para validar el mismo, debemos ir haciendo pequeñas entregas (mínimo producto viable) que aporten valor. De lo contrario, no cumpliremos las expectativas de los clientes y/o usuarios. Si no se satisfacen dichas expectativas, deberemos descartar el producto, con lo que esto conlleva: pérdida de dinero, de tiempo y, lo más importante, la pérdida de la oportunidad de negocio.

 

Despliegue continuo.

 

La salida del punto anterior es la entrada de este. Por lo que, conforme se lleva a cabo la fase de integración continua se debe ir realizando los correspondientes despliegues del producto/servicio. Esta es la parte de operaciones (Ops).

 

La infraestructura y el aprovisionamiento deben ser dinámicos y evolucionar a la par que lo hace el desarrollo. El mejor amigo para alcanzar estos objetivos es crear la infraestructura con código (IaC – Infrastructure as Code) y utilizar herramientas de aprovisionamiento innovadoras (Ansible, Puppet, Chef, etc.) Además, podemos automatizar todo esto, con herramientas como Jenkins, y así evitar fallos humanos y reducir el tiempo de lanzamiento del producto, independientemente del entorno en el que nos encontremos (desarrollo, integración o producción).

 

Agile.

 

Este punto da para unos cientos de artículos pero trataré de transmitir la esencia. Agile no es una conspiración contra los jefes ni una anarquía. Agile es maximizar los recursos, es confianza, respeto, valor y un largo etcétera. El objetivo es sacar lo mejor de cada trabajador, incluidos los jefes, maximizar los recursos y el tiempo. – Pasamos ocho horas o más diarias en el trabajo (1/3 de nuestra vida aproximadamente), y lo menos que debemos hacer es disfrutarlo.

 

Agile se encarga de definir una forma de trabajo, y proporciona un conjunto de herramientas que ayuda a mantener un ritmo de trabajo fluido y adaptado al universo SecDevOps. Personalmente, pienso que es muy enriquecedor, y que encaja y facilita muchísimo tanto la integración continua, como el despliegue continuo.

 

Todo lo anterior no tiene sentido sin sus actores. Por ello vamos a ver el papel de cada uno de ellos, haciendo las oportunas combinaciones con las tres áreas involucradas en todo esto (seguridad, desarrollo y operaciones):

 

"Dev (developer – desarrollador)".

 

Experto que se hace valer de los lenguajes de programación para construir programas informáticos o servicios digitales.

 

DevOps.

 

Este es el más ambiguo de todos. Pero basándome en mi experiencia, es la persona encargada de los sistemas y el aprovisionamiento de los mismos. Crea infraestructura a partir de código (terraform, vagrant), y la aprovisiona de forma automatizada con herramientas como Ansible, Puppet o Chef.

 

Tiene una segunda interpretación, a mi parecer no es la adecuada, refiriéndose al desarrollador que además de programar, conoce o sabe cómo funciona el campo de operaciones.

 

SecDev.

 

Experto en seguridad que automatiza mediante código (SaC – Security as Code) los procesos manuales necesarios para aplicar y verificar los requisitos de seguridad. Además de integrar y acoplar esto durante todas las fases de desarrollo, pruebas y despliegue.

 

SecOps

 

Al igual que un SecDev, es un experto en seguridad pero en la parte de operaciones (sistemas). Tiene los mismo cometidos pero aplicados a los sistemas informáticos (servidores, routers, firewall, etc.)

 

Tener claro cada uno de estos roles es clave para: entendernos los unos a los otros, hablar el mismo idioma y facilitar la tarea de buscar profesionales para cubrir cada uno de estos puestos de trabajos con el correspondiente perfil.

 

 

Me despido, pero no sin antes aclarar que un DevOps no es una persona experta en desarrollo y operaciones. Insisto, un DevOps es aquella persona que crea infraestructura a partir de código y aprovisiona dichas máquinas también mediante código. Como excepción, se podría citar haciendo referencia a un desarrollador que conoce cómo funciona y se opera en el área de operaciones, y por ello facilita el trabajo al personal de operaciones. Pero preferiría que no lo hicieras ;)

 

Y tú, ¿qué rol tienes?


Sobre el Autor

José Manuel Ortega Falcón

José Manuel Ortega Falcón


Comentarios


Escribe un comentario