Ir al contenido principal

Un enfoque para DevOps

 DevOps es un conjunto de prácticas que automatizan los procesos entre los equipos de desarrollo de software y TI para que puedan compilar, probar y publicar software con mayor rapidez y fiabilidad. El concepto de DevOps se basa en establecer una cultura de colaboración entre equipos que, tradicionalmente, trabajaban en grupos aislados. Entre las ventajas que promete, se incluyen el aumento de la confianza y de la velocidad de publicación de software, la capacidad de solucionar incidencias críticas rápidamente y una mejor gestión del trabajo imprevisto.

Realmente se trata de un cambio de cultura que fomenta la colaboración entre áreas tradicionalmente contrapuestas, como son desarrollo (Dev) y operaciones (Ops), además de aseguramiento de la calidad (QA), permitiendo desarrollar software de forma más rápida, más eficiente y por consiguiente con mayor calidad y a un coste inferior.

5iLTphnjS410rn48A253xYn-asi6Vd9vi1bFPoi8Du1G0fwyWKQa3Tj9_m3LrSIq2hNblN7VVyxI6CZEIjmYdVhA-0bMbNWTSqFunQdxT5MV4YF7C5Xe4vBZGJ9UBpPwVjeie5Cs

Es importante entender que DevOps se trata de un ciclo iterativo compuesto por diferentes fases que buscan siempre el incremento de valor y la mejora continua.

tFwQuU9AolFqFFbxfBo7fB74OSZo07JGp2qcRQyCRYWAqYOCbSRnRueFzlXAOSh_DXmaub2XkLC_SAtBnjHZrSaWos-29zDmQtyiJCyeq7a5ZKTuZvr8SN_OSAPWVgOkg0vHbmOP

Fase 1: el plan

La primera fase del ciclo DevOps se basa en habilitar los mecanismos necesarios para dar la posibilidad a cualquier usuario de aportar de forma continua sus ideas y que estas puedan ser transformadas en requerimientos u objetivos, siendo estos priorizados e incluidos en próximas iteraciones en forma de historias de usuario.

Fase 2: build

¿Cuántas veces habremos oído a un desarrollador la afirmación “Funcionaba en mi máquina”? Normalmente esta afirmación siempre se escucha después de ver cómo falla el software cuando otro desarrollador coge esta funcionalidad para evolucionarla o peor aún, cuando se pasa a un entorno de integración el código que se suponía funcionando y este no cumple su función. DevOpsayuda a la construcción de software propiciando mecanismos que sean capaces de favorecer la creación de entornos de desarrollo repetibles, utilizando por ejemplo tecnologías como Docker.

Fase 3: integración continua

La integración continua (CI) es una técnica que tiene como objetivo detectar los posibles problemas que pueda tener el software de forma temprana, permitiendo así solucionarlos antes de que sea demasiado tarde o la solución implique un gran cambio en la aplicación o componente. Para esta labor es conveniente realizar de forma periódica (por ejemplo, varias veces al día) compilación del código (Jenkins), ejecución de tests unitarios, revisión de la calidad del código y detección de vulnerabilidades. Los resultados de las acciones anteriores se pueden exponer mediante herramientas apropiadas que permitan al desarrollador visualizarlas de una forma ágil.

Fase 4: despliegue

Uno de los grandes objetivos de DevOps es facilitar el paso de un software que se está desarrollando a una versión funcional. En una metodología tradicional, se requiere de una intervención manual desde la construcción de los artefactos hasta el paso de los mismos a producción. DevOps proporciona técnicas que permiten automatizar esta transición, pero también para la subsanación de posibles “catástrofes” que puedan ocurrir.

Programación de despliegues. Existen herramientas que permiten programar los despliegues, organizando las diferentes historias de usuario en versiones, lo que permite además disponer de una trazabilidad completa de qué y cuándo se despliega en cada entrega.

Compatibilidad de componentes. Aseguramiento de que todos los componentes son compatibles unos con los otros. Cuando hablamos de componentes no solo nos referimos a software, sino que también hay que poner en la ecuación a sistemas externos, hardware o requerimientos de arquitectura.

Transición entre entornos. Es muy importante mantener la integridad mientras avanza el software entre los diferentes entornos: desarrollo, testing, staging y producción. No es nada raro que el software sufra pequeños ajustes durante esta transición, por lo que es fundamental garantizar que se siga manteniendo la integridad de la versión.

Solución de desastres. Aunque las técnicas DevOps ayudan a evitar que llegue una versión inestable al entorno productivo, siempre existe una pequeña posibilidad de que se encuentre un fallo, el cual haga que sea necesario realizar un rollback al último estado estable. Dada la automatización de la que disponen las herramientas de despliegue, es posible recuperar de una forma muy rápida el correcto funcionamiento del aplicativo.

Fase 5: operación

Una vez una versión de software sea funcional, es fundamental realizar un seguimiento de la misma:

Monitorización del rendimiento de la aplicación y servidor. Para ello hay que realizar de forma automatizada la lectura de parámetros que permitan dar la voz de alarma en caso de fallo.

Seguimiento de problemas, incidentes y cambios. Una comunicación fluida entre las diferentes personas es fundamental para poder identificar y resolver los posibles problemas que se vayan encontrando.

Fase 6: feedback continuo

Es muy importante escuchar lo que todos los implicados tienen que decir acerca de los productos de software. La cultura DevOpsfomenta la utilización de herramientas que facilitan exista un flujo continuo de comunicación. Medios como encuestas, herramientas de ticketing, chats o incluso redes sociales pueden ser utilizados para cumplir esta finalidad.

 

DevOps es algo complicado de definir porque, al igual que con Agile, se trata de una cultura, y por tanto no está circunscrita, ni prescribe actividades específicas. En SOLTEL hicimos una rápida integración de DevOps en nuestra cultura de empresa, ya que había una serie de buenas prácticas que ya aplicábamos anteriormente. En definitiva, en SOLTEL mejoramos la colaboración y la automatización no solo para construir software, sino también para entregarlo exitosamente a nuestros clientes y satisfacer sus expectativas de rendimiento, disponibilidad, seguridad y evolución.

Comentarios

Entradas populares de este blog

Métrica v3 vs Metodologías Ágiles

Métrica v3: Metodología de Planificación, Desarrollo y Mantenimiento de sistemas de información que propone el Ministerio de Administraciones Públicas. Cualquier defensor de la técnicas, metodologías y herramienta ágiles sostendrá que Métrica v3 es un sistema demasiado pesado, tanto en su implementación, como en sus procesos de mantenimiento. Yo lo corroboraría, pero sin demonizarla. Estoy acostumbrado a que en este mundo de la informática se creen auténticos "dogmas de fe", que acarrean sus propias "guerras religiosas". Algunos ejemplos podrían ser: Software privativo vs Software libre, Windows vs Linux, Web Services vs Rest, Oracle vs MySQL, Explorer vs Firefox, Apache vs IIS, Eclipse vs Netbeans, y así podríamos seguir con un largo etcétera. En vez de buscar la mejor solución, o soluciones universales, yo propongo realizar un intenso análisis, y respondernos ciertas preguntas. Por regla general, no hay una solución que valga "para todo". La pregunta que

Lenguajes: Pasado, Presente y Futuro

Escribo este post al hilo del artículo que he leido en dosideas.com. En él, se habla de las habilidades que debería tener un programador para tener un currículum relevante en los próximos cinco años: 1. Uno de los "3 Grandes" (Java, .NET, PHP) 2. Aplicaciones Ricas de Internet (RIA - Rich Internet Applications) 3. Desarrollo web 4. Servicios web 5. Habilidades humanas 6. Un lenguaje de programación dinámico y/o funcional 7. Metodologías ágiles 8. Conocimiento de dominio 9. "Higiene" de desarrollo 10. Desarrollo móvil A partir de este artículo, estuve debatiendo con algunos compañeros y saqué algunas conclusiones que quiero plasmar aquí. Pienso que el artículo es un poco mejorable, dada la arbitrariedad con la que se han escogido los conocimientos a adquirir. De hecho, muchas de esas habilidades hay que tenerlas en el presente (yo cumpliría de 9 a 10). Me voy a centrar en el punto 1, uno de los "3 Grandes" (Java, .NET, PHP). Antes de hablar de "gran

¿Por qué Yii Framework?

En Soltel presumimos de tener una actitud innovadora, que nos obliga a probar las distintas tecnologías que van llegando al mercado, y que ajustándose a nuestro stack, puedan mejorar en algo nuestros desarrollos. Una vez analizado el framework o librería, lo probamos en proyectos internos que nos permitan conocer con más detalle sus características. En este trabajo de campo es donde realmente se decide si es interesante o no añadir el framework a nuestro stack, y con ello ofrecerlo en los desarrollos que realizamos para nuestros clientes. En este proceso, llevábamos bastante tiempo buscando un framework PHP que realmente aportara valor y se adecuara en tiempos de desarrollo, rendimiento y arquitectura a lo que necesitamos ofrecer en nuestros proyectos. Ya habíamos descartado frameworks como Prado, por ser bastante pesado y tener una arquitectura demasiado compleja. Con Yii, sin embargo, nos hemos llevado una agradable sorpresa. Yii es un framework PHP, libre (licencia BSD), basado en