Descarga el informe de calidad mundial del año 2024 introduciendo tu correo.
Mucho se habla hoy en día de Devops, muchas empresas intentan implantar esta filosofía de trabajo pero no terminar haciéndolo bien o lo hacen a medias así que en istqbhub nos hemos decidido a ayudaros ,comencemos!.
Qué es Devops
Devops realmente es un enfoque que busca promover buenas prácticas para el desarrollo de software. El objetivo es simplificar procesos y unir las fases de desarrollo y operación.
El nombre de DevOps viene de la síntesis de dos conceptos, desarrollo (development) y operaciones (operations). Por lo tanto, este enfoque busca integrar estos dos aspectos para hacer más eficiente los procesos de desarrollo de software, pruebas y despliegue de entorno.
Además utilizando metodologías ágiles, trabajo en equipo y la automatización de procesos y de pruebas se consigue una mejor calidad del software.
Antes los responsables de desarrollo y de operaciones trabajaban de manera aislada pero esta forma de hacer las cosas generaba falta de comunicación y retrasos.
Con DevOps se consigue las siguientes ventajas:
- Desarrollo incremental e iterativo donde mediante cortos ciclos de trabajo (Sprints) se entrega software que puede recibir feedback del cliente.
- Pensamiento colaborativo y adaptativo, donde se pone énfasis en la colaboración y en la respuesta rápida ante problemas y con un flujo constante de comunicación entre cliente y el equipo de desarrollo.
- Entornos automatizados basados en el pensamiento CALM (cultura, automatización, aprendizaje y medición continua).
Esta manera de trabajar permite eliminar los problemas de comunicación creando un ecosistema integral. Al mismo tiempo esta forma de trabajar permite que se pueda actualizar continuamente una aplicación.
También nos permite identificar mas fáciles los errores porque al estar cada paso ligado al anterior si hay errores se identifican más fácilmente.
DevOps se compromete con la mejora continua, con la comunicación y con la agilidad en los procesos.
Cultura de Devops
La cultura DevOps se refiere a que no solo es un enfoque, sino que es una cultura, una forma de pensar que se tiene que implantar en toda la empresa y que tiene que entender y aceptar desde el CEO de la empresa hasta los ingenieros.
Esta cultura disminuye las pérdidas de tiempo y los bugs cuando se está desplegando la aplicación.
Realmente hasta el mercado demanda ingenieros de DevOps que se encargan de implantar las herramientas y prácticas necesarias para implantar esta cultura en el flujo de trabajo.
Que la fase de operación corra al mismo tiempo que la fase de desarrollo hace que se mejoren mucho los resultados porque se detectan de manera temprana errores tanto en el despliegue como en la configuración de los entornos.
La comunicación entre equipos es una de las partes fundamentales de esta cultura porque el equipo de desarrollo puede necesitar de manera rápida información sobre la configuración de la base de datos.
El equipo de operaciones va necesitar información de cómo desplegar la aplicación, qué librerías necesita, etc., todos estos datos solo se consigue si los distintos equipos trabajan conjuntamente.
La implantación de esta cultura DevOps tarda un tiempo porque tiene que empapar a la parte directiva, la parte de RRHH para que entiendan qué perfiles se necesitan.
Los ingenieros devops deben entender que el estar en un departamento diferente no significa que tengan que estar aislados del resto sino en continua comunicación.
Flujo de esta filosofía
Puede parecer que cada empresa va a tener su propio ciclo DevOps, pero la realidad es que la mayoría tiene los mismos principios, y se basa en un ciclo con las siguientes fases y con 5 principios fundamentales:
Planificación
La etapa de planificación consiste en crear un ciclo de vida para tu proyecto, pero tiene que ser diferente a un enfoque tradicional porque si es un enfoque DevOps se tienen que repetir las fases las veces que sean necesarias.
Esto también significa que todas las fases de tu proceso están conectadas provocando que la interacción previa te dé información de la actual y que alimente a futuras revisiones.
Escritura de código
En esta fase es donde se escribe el código basándose en los requerimientos de la fase de planeación y el software tiene que cumplir requerimientos funcionales y no funcionales.
También los desarrolladores tienen que hacer pruebas unitarias y algunas veces también pruebas funcionales y de integración de microservicios y apis con herramientas como Postman.
Construcción
En esta fase es donde el código que se ha escrito se sube a un repositorio como GitHub donde se integra con el resto de código que han escrito el resto de los compañeros.
Prueba
En esta fase del proceso es donde se realizan todo tipo de pruebas, funcionales, no funcionales para cumplir con los estándares del proyecto. Pero antes hay que desplegar el ambiente pruebas para poder realizar estas pruebas.
Lanzamiento
En esta fase del proceso es donde el código del proyecto ha sido probado y listo para ser desplegado para su revisión final que no es más que las pruebas de aceptación que se realizan en el entorno de UAT.
En esta fase si las pruebas son exitosas y no se encuentran bugs, el proyecto o las nuevas funcionalidades estarán listos para la fase de despliegue.
Despliegue
En esta fase es cuando el software ya se despliega en el ambiente de producción para ser usado por los usuarios finales.
En el enfoque clásico esta fase era llevada a cabo por el equipo de operaciones, pero en el enfoque DevOps es como una responsabilidad común tanto del equipo de desarrollo como de operaciones.
Operación
La fase de operación es donde la aplicación ya es usada de manera habitual por los usuarios reales, se evalúa su utilización por los usuarios reales.
Esta fase es fundamental pero no es el final del proceso porque es donde se puedes descubrir bugs que no se descubrieron en la fase de pruebas o de lanzamiento.
Esta fase es importante porque permite optimizar el proceso para mejorarlo y esto básicamente es lo que se llama mejora continua.
Monitoreo
En esta fase es donde se está monitoreando en tiempo real la aplicación para recopilar problemas, comentarios, consejos de los usuarios.
Toda esta información debe tenerse en cuenta en la siguiente iteración del proceso para que los equipos de desarrollo y operación los integren en la planeación de la siguiente iteración.
Principios fundamentales de Devops
Esta filosofía tiene tiene 5 principios que son bastante simples y que paso a explicar.
Pensar desde el punto de vista del usuario
Significa que resuelvas todos los problemas en el momento en que se den, centrándote en prevenir e identificar los problemas, teniendo un historial de los problemas más comunes en esa iteración y su solución.
La continuidad es el centro de la estrategia
La cultura DevOps es un enfoque iterativo donde el ciclo es continuo y donde en cada ciclo se tienen que pasar todos los pasos sin saltar ninguno.
El ciclo de DevOps es integral
Cuando planificas una iteración debes tener en cuenta todos los recursos, las tareas que se van a realizar, posibles problemas que pueden ocurrir y un plan de contingencia.
El listar todas las tareas en cada fase del proceso de iteración es fundamental para poder identificar aquellas tareas que se pueden automatizar y que permitirán usar esas horas en otras actividades.
Dar autonomía y responsabilidades
Dar autonomía y responsabilidades a los miembros del equipo es fundamental para saber el trabajo que tienen asignado y los requisitos y necesidades que tiene el cliente.
Automatizar todo lo que se pueda
Este enfoque tiene su máxima optimización cuando muchos de los procesos se automatizan mejorando la rapidez de entrega y permitiendo una mejora continua al tener más tiempo para hacer más pruebas y mejorar el diseño de todos los procesos.
Una de las cosas que se suele hacer es automatizar las pruebas de regresión y para eso se suele utilizar Selenium si te interesa.
Los roles en esta filosofía de trabajo
En DevOps hay los siguientes roles y todos son importantes:
- Desarrolladores: se encarga de crear el back-end de la aplicación.
- Analista UX: se encarga de la usabilidad de la aplicación.
- Analista QA: aplica estándares de calidad y realiza todo tipo de pruebas.
- Arquitecto de software: define la arquitectura de la aplicación.
- Analista de negocio: define los requisitos en función de las necesidades del negocio.
- Diseñador web: desarrolla el front-end de la aplicación.
- Ingeniero DevOps: se encarga de automatizar todos los procesos e integrar todas las herramientas entre sí.
- Gestor del proyecto: se encarga de gestionar los recursos y que el proyecto llegue a buen puerto.
Todos estos roles se agrupan en 4 grupos que son los siguientes:
- Squads o escuadrones: son grupos formados por los roles descritos anteriormente y que son autónomos y tienen un sentimiento pronunciado de grupo.
- Tribus: está formado por un conjunto de squads.
- Chapters: son un grupo de personas de distintos squads que tienen como objetivo solucionar problemas comunes pero de las mismas tribus.
- Guilds o gremios: son personas que pertenecen a distintos squads que están en distintas tribus y que se intercambian experiencias, conocimientos, prácticas, etc.
Ambiente de pruebas
Los ambientes que existen en una empresa de software dependen del dinero que se puede gastar muchas veces pero los ambientes más habituales son los que se ve en la imagen.
Paso a explicar cada uno de estos ambientes:
Ambiente de desarrollo
Es el ambiente en que los desarrolladores hacen sus pruebas, tienen sus propias bases de datos y algunas veces los analistas de automatización de pruebas suelen compartir este ambiente con ellos.
Suelen utilizar su ambiente local ,el del ordenador en el que trabajan para realizar las pruebas y realmente para ahorrar costes algunas veces no hay ambiente de desarrollo como tal.
Ambiente de pruebas
Es el ambiente que utiliza el equipo de QA y que se utiliza para hacer pruebas con base de datos independientes a la de los desarrolladores porque muchas veces no hay suficientes datos cuando se comparte el entorno de pruebas
En ambientes con metodologías ágiles suele haber un único entorno de desarrollo donde los QA y desarrolladores hacen las pruebas porque como sabemos en los grupos ágiles suelen convivir QA y desarrolladores.
Ambiente de UAT
En este ambiente es donde los usuarios reales prueban la aplicación y se busca garantizar que el cliente está satisfecho con lo que se ha desarrollado.
Ambiente de preproducción
En este ambiente la configuración técnica es idéntica a la de producción y el hardware es muy parecido porque lo que se busca es que el nuevo incremento con nuevas funcionalidades no genera ningún error.
Este ambiente es para garantizar que el software funcionará correctamente en la configuración y hardware de producción.
El de UAT es para verificar que el cliente está contento con el software funcional y suele estar en el cliente.
Ambiente de producción
Es el ambiente donde la aplicación va a ser utilizada en tiempo real por los usuarios finales.
Suele haber unas herramientas para monitorear en tiempo real una serie de KPI o métricas importantes para el rendimiento y funcionamiento correcto de la aplicación.
Implementación de devops en una empresa
Para implementar DevOps en una organización hay que seguir una serie de pasos en el orden que voy a exponer a continuación.
Planificación
Para iniciar la aplicación de DevOps en tu empresa es necesario realizar una agenda con los pasos a seguir.
Esta agenda debe incluir los plazos, acciones, prácticas y estrategias a seguir.
Es muy importante que toda tu empresa esté al tanto y comprenda los cambios que se van a implementar y las ventajas que traerá con todo esto para que no se opongan al cambio.
Definición de herramientas
Es necesario definir qué herramientas o aplicaciones vamos a utilizar para automatizar los procesos, ya que esto es uno de los objetivos fundamentales de la filosofia DevOps.
Cada herramienta tiene que venir acompañada de un presupuesto para su puesta en marcha.
Esta fase debe con la ayuda del equipo de seguridad para evitar vulnerabilidades.
Capacitación a los equipos de la organización
Es importante crear un equipo de trabajo de larga duración y estables y capacitarlos para que puedan trabajar conjuntamente entre departamentos.
Si quieres implementar DevOps en tu empresa o proyecto lo ideal es tener equipos de desarrollo que sean capaces no solo de desarrollar funcionalidades sino también de validarlas en entornos similares a producción.
Feedback
La integración de los equipos tiene que ir acompañada de ciclos de retroalimentación en cada paso del proceso, donde se pueda ver las acciones que se están realizando.
Automatización de pruebas
Otro de los principios fundamentales de DevOps es la automatización de todo tipo de pruebas que ayudará al equipo a encontrar rápido donde se encuentran los errores.
Métricas
Uno de los principios de DevOps es obtener métricas de nuestro código utilizando KPI’s sobre todo en el entorno de producción pero también en otros entornos.
Esto se hace para que los y corregidos rápidamente, con el objetivo de implementar DevOps o cualquier herramienta o prácticas.
Cultura de aprendizaje continuo
Lo fundamental para poder implementar esta metodología es que las personas sientan que pueden tomar riesgos y aporten ideas .
Se debe fomentar la creatividad y para eso se debe premiar al que aporte ideas y se implique en la implantación de esta filosofía.
Fallos controlados
La última estrategia para implementar DevOps es inyectar fallos de producción de manera controlada para aprender como falla el sistema.
Por ejemplo, podemos simular fallos a gran escala, matar procesos de manera aleatoria, generar latencias en la red, todo esto ayudara a mejorar la capacidad de reacción a problemas en tiempo real.
Que te ha parecido el artículo, te ha sido útil? si quieres aportar algo puedes escribir un comentario .
También si te ha gustado puedes darle al corazón al principio del post o compartirlo en tus redes eso nos ayudará mucho.
Por ultimo si quieres aprender más de QA, testing, automatización y DevOPs puedes comprar el libro Scrum. Teoría e implantación práctica donde no solo se habla de Scrum sino de todo lo anterior.
Visitas: 23
Soy Alejandro Juan Canosa Ferreiro, experto en calidad de software y escritor. Tengo publicado el libro Scrum. Teoría e implementación práctica, tiene 9 versiones, y acabo de publicar mi segundo libro Certificación ISTQB Certified Foundation Level 4.0.
Actualmente soy responsable de calidad en un proyecto para SEPI en la empresa pública tragsa.