El objetivo principal de DevOps es el de lograr, a través de una serie de prácticas fundamentales, desplegar software a producción lo mas rápido posible, al mismo tiempo que se minimizan los riesgos y se logra un balance entre la calidad y el «time-to-market».
Algunas de estas prácticas implican que:
- El equipo de desarrollo (Dev) debe considerar al de Operaciones (Ops) no solo como un socio sino también como un cliente y stakeholder importante debido a las nuevas necesidades de infraestructura, despliegue, monitorización, trazas y seguridad de las aplicaciones modernas.
- Los desarrolladores deben ser responsables de su código de manera que no solo aseguren el correcto funcionamiento sino que también asuman un rol importante en la resolución e investigación de incidentes incluso en los ambientes de producción.
- Todos los cambios de código y configuración se deben realizar usando mecanismos automatizados, repetibles y con un nivel de trazas adecuado, facilitando así el despliegue continuo de los cambios y por lo tanto aumentar así la velocidad de entrega.
- En el ámbito de la nube (Cloud Computing) es importante entender qué operaciones debe realizar la provisión y configuración de la infraestructura a través de software (Código como Infraestructura), siguiendo las mismas prácticas de calidad que se siguen en el desarrollo de las aplicaciones.
“If Ops goes to lunch with Ops and Dev goes to lunch with Dev, a low level of efficiency is a certainty.”
Ahora bien ¿cómo afectan algunas de estas prácticas y necesidades al rol del Arquitecto de Software?
Los Microservicios
DevOps como práctica se lleva acabo, usualmente por equipos ágiles que resuelven problemas de manera independiente y que de forma natural terminan desarrollando microservicios.
El uso de la arquitectura de microservicios introduce en los sistemas múltiples puntos de posible fallo respecto a arquitecturas más monolíticas y por tanto el arquitecto de software es el responsable de la integración de todos estos «pequeños» servicios, su orquestación y correcto funcionamiento.
Las tecnologías de contenedores (i.e. Docker) junto con las arquitectura de microservicios implica que los arquitectos de software deben entender mejor las necesidades de operaciones además de facilitar la modificación de las aplicaciones no solo a nivel de código sino también de infraestructura.
“It is not the strongest of the species that survive, nor the most intelligent, but the one most responsive to change.” – Charles Darwin
Si quieres conocer cómo crear microservicios con tecnología Microsoft podéis visitar: Over View of Service Fabric o Exploring Microservices in Docker and Microsoft Azure
Monitorización y Trazas
La monitorización y la trazabilidad en DevOps es un factor que cobra mucha importancia, en la arquitectura y diseño de las aplicaciones debido a la tendencia de usar arquitecturas como la de microservicios.
Los retos para el arquitecto de software están en cómo monitorizar una gran cantidad de servicios (microservicios), hacerlo en la nube o ambientes híbridos y todo esto en sistemas que cambian y evolucionan de forma rápida y continua.
«If it isn’t monitored, it isn’t production!»
El articulo Get Started with Visual Studio Application Insights es un buen lugar para entender qué tecnologías para la monitorización de aplicaciones hay disponibles en Microsoft Azure.
Seguridad
Otro aspecto fundamental es la seguridad, ya que en una cultura DevOps el arquitecto también debe conocer qué recursos deben ser protegidos así como también cómo realizar la gestión de identidad, control de accesos y los diversos controles a implementar en la nube, máquinas virtuales e incluso contenedores.
Adicionalmente en los procesos de despliegue continuo también se debe prestar especial atención a la seguridad, controles y validaciones necesarias en cada etapa existente entre desarrollo y producción.
“The most powerful tool we have as developers is automation.” – Scott Hanselman
Microsoft Azure Trust Center: Security y Release Management son algunos recursos ideales para entender qué ofrece Microsoft en el área de seguridad y despliegues.
Además de los aspectos mencionados con anterioridad, existen otros puntos de interés que no he desarrollado como la colaboración y el aseguramiento de la calidad tanto de las aplicaciones como de la infraestructura. Por tanto se hace evidente que un arquitecto de software debe mantenerse al día con las nuevas tendencias y estar abierto a los cambios que implica la cultura DevOps.
Referencias:
Carlos Mendible con más de 14 años de experiencia diseñando e implementado soluciones de software, comenzó su carrera en Venezuela, donde en 1999 obtuvo su primera certificación Microsoft. Actualmente está certificado como CISA, ITILF, MCSD, MCTS y MCP. Trabaja desde 2012 como Arquitecto Senior de Soluciones Microsoft en Sogeti España colaborando también como evangelista tecnológico, formador e ingeniero de pre-venta.
Excelente aporte sobre lo que implica DevOps. Me interesa saber más y si tuvieras algún post que continúe este o que quizá contenga información más actualizada a los cambios en los últimos años.
Me gustaMe gusta
Pingback: Application Insights | itblogsogeti