Modelo de Capacidades DevSecOps

Ciclo de Vida de Software CICD

Modelo de Capacidades DevSecOps
04/10/2021

Transformación Digital

Mantenerse vigente y rentable en un entorno de negocios cada vez más globalizado y de competencia creciente es uno de los principales retos que enfrentan las compañías. Luego, todas ellas, independientemente de su tamaño o sector de la economía a la que pertenecen, requieren de diversas metamorfosis para lograr dar respuesta a estos desafíos. Para muchas organizaciones estas transformaciones tienen como objetivo principal lograr la evolución de la empresa en su modo presente y tradicional, cualquiera que éste sea, a un estado conocido como Negocio Digital, en el cual sea posible crear valor para los clientes a través de sus nuevas experiencias con los productos o servicios, y nuevos modelos de negocio basados en fuentes y esquemas de generación de ingresos diferentes a los actuales.

Se considera un negocio digital aquel que ha implementado nuevos diseños de negocio eliminando las barreras y las diferencias entre el mundo real (físico) y el digital (GARTNER, 2018). Si bien el término digital podría cambiarse por virtual o ciberespacio, parece ser más cómodo para las personas . Estos nuevos diseños de negocio tienen sus fundamentos en la convergencia sin precedentes entre las personas, las empresas, y los objetos inteligentes y conectados (productos y/o servicios). Se espera que estos diseños de negocio superen, incluso a aquellos que emergieron durante el boom de Internet y los e Business, debido a la integración de los tres elementos mencionados . Así pues, un Negocio Digital utiliza tecnologías de información (TI) para la incorporación de nuevas e innovadoras prácticas para crear, no sólo nuevas formas de generar riqueza sino también para implementar mecanismos orientados a simplificar y automatizar los procesos creados para resolver las necesidades y exceder las expectativas crecientes y cambiantes de los clientes. Esto significa que estas compañías ahora dependen completamente de las TI para materializar la estrategia de negocios y desarrollar su actividad económica.

Considerando esto, se requiere una nueva función de TI dentro de las empresas, preparada para responder de forma oportuna a las dinámicas de la empresa y los requerimientos de mercado, regulación y clientes, entregando soluciones de TI capaces de crear el valor esperado por los clientes y las mismas organizaciones. En concreto, una nueva función de TI capaz de poner en funcionamiento, cada vez que se requiera, software con niveles adecuados de calidad en periodos de tiempo que se pueden medir, en horas, máximo en días, y no en semanas.

En respuesta a esto, metodologías ágiles para el desarrollo de software como Scrum y Extreme Programming (XP) han emergido y han sido implementadas con éxito y su adopción viene en auge. Una encuesta realizada por versionOne entre Julio y Noviembre de 2015 en los 5 continentes, entregó como resultado que el 95% de las compañías han institucionalizado prácticas ágiles para el desarrollo de software, donde el 62% de ellas lo han hecho buscando acelerar la entrega de aplicaciones al negocio (VersionONE Inc, 2016). Sin embargo, la misma encuesta muestra que las prácticas consideradas como claves para reducir el tiempo que transcurre entre una idea y software funcionando que materializa la misma, se encuentran en niveles de implementación inferiores al 50%, con un promedio del 30%. De ahí se infiere que las organizaciones, en su mayoría, se han concentrado en diseñar e implementar procesos y prácticas como Scrum y Extreme Programming , las cuales se centran en escribir software y no en las actividades requeridas para implementar en producción, de forma rápida  y confiable, el código escrito por los desarrolladores.

Historia de DevOps

De acuerdo con (Willis, 2012), es el resultado de varios movimientos, a saber:
El Movimiento Lean, el cual surgió en los inicios de los años 1980 como un intento de codificar el sistema de producción de Toyota y el cual hizo popular las técnicas de Mapa de Flujo de Valor (Value Stream Map), los tableros Kanban y el
mantenimiento productivo total.

El Movimiento Agil, iniciado en el 2001 con la promulgación del manifiesto ágil por parte de diez y siete pensadores del desarrollo de software con el propósito de alivianar los métodos y procesos de desarrollo de software y teniendo como principio básico “Entregar software funcionando de manera frecuente, desde un par de semanas hasta un par de meses, con preferencia de tiempos cortos”. El Movimiento de la Conferencia Velocity, durante la cual, en el año 2007 se presentó el trabajo “10 Deploys per day: Dev and Ops Cooperation at Flickr”. El Movimiento de la Infraestructura Ágil, durante la conferencia de Toronto en el año 2008, Patrick Debois y Andrew Schafer realizaron una presentación sobre la aplicación de principios ágiles a la infraestructura. Allí se gestó el primer DevOpsDay que tuvo lugar en Ghent, Belgica en 2009 y fue acuñado el término DevOps.
El Movimiento Entrega Continua, esta idea fue presentada inicialmente en la conferencia Agile 2006 por Tim Fitz, en un blog titulado “Continuous Deployment” y luego fue enriquecido por Jez Humble y David Farley con su patrón “The Deployment Pipeline”.

Modelo de Capacidades DevOps

En el año 2018 se realizo una investigación por parte de la Dra Nicole Forsgren ( https://nicolefv.com/), analizando identifico 24
capacidades claves que contribuyen estadísticamente al mejoramiento en los procesos de entrega de software y a su vez impactan el desempeño organizacional. Estas Capacidades se organizan en 5 Categorías.

 

 

Categoría 1 – Capacidades de Entrega Continua de Software
1) Utilizar control de versiones para todos los artefactos de producción.
2) Automatizar el proceso de despliegue.
3) Implementar integración continua.
4) Utilizar métodos de desarrollo “Trunk-Based”.
5) Implementar pruebas automáticas.
6) Implementar gestión de los datos de prueba.
7) Incorporar los aspectos de seguridad en las fases de diseño y pruebas.
8) Implementar entrega continua de software.

Categoría 2 – Capacidades de Arquitectura
9) Utilizar arquitecturas de bajo acoplamiento.
10) Permitir a los equipos definir sus propias arquitecturas.

Categoría 3 – Capacidades de Producto y Procesos
11) Recolectar e implementar las recomendaciones de los clientes.
12) Hacer visible el flujo de trabajo durante todo el ciclo
13) Trabajar con lotes o cantidades pequeñas.
14) Fomentar y habilitar al equipo para realizar experimentos.

Categoría 4 Capacidades de Gestión Lean y Monitorización
15) Tener un proceso liviano para la aprobación de cambios.
16) Monitorizar las aplicaciones y la infraestructura para tomar decisiones de negocio.
17) Monitorizar la salud de los servicios y aplicaciones proactivamente
18) Administrar y establecer límites para el trabajo en progreso (Work-In Progress)
19) Visualizar el trabajo para monitorizar la calidad y comunicarlo al equipo

Categoría 5 – Capacidades Culturales
20) Implementar una cultura tipo generativa.
21) Animar y apoyar al equipo a aprender.
22) Apoyar y facilitar la colaboración entre los equipos.
23) Proporcionar recursos y herramientas para que el trabajo sea significativo para los individuos.
24) Apoyar el liderazgo transformacional.