CI/CD (integración/despliegue continuo): Historia de un amor loco

CI/CD (integración/despliegue continuo): Historia de un amor loco

Adrian Alonso Empresa

La semana pasada participé en un webinar público donde pude hablar del conjunto de buenas prácticas que utilizamos en Cloud District. En este último año, el equipo ha puesto mucho esfuerzo en implantar una estrategia de integración continua y despliegue continuo para todos los proyectos. Echando la vista atrás, para llegar a implantar realmente esta filosofía, hemos ido mejorando muchísimos aspectos de nuestro día a día que nos han ayudado a entregar un software de alta calidad.

Precisamente, este webinar habla de ese camino recorrido en la construcción de los productos digitales de nuestros clientes. Con este tipo de prácticas hemos podido ayudarles en ser eficientes, reducir el “Time to Market” y acelerar su proceso de transformación digital.

Nuestras buenas prácticas 

Estas prácticas adoptadas siguen el ADN de Cloud District, en el que al igual que hacemos con nuestros clientes, definimos, implementamos y optimizamos a través de un proceso de mejora continua.

Code Review

Code Review es el proceso mediante el cual los distintos miembros de un equipo revisan en conjunto la implementación realizada por otra persona del equipo. Es algo muy ligado al desarrollo software, pero este review lo realizamos en todas las áreas de la organización como revisión de documentos de consultoría, presentación de diseños y prototipos o propuestas comerciales.

Contratos ágiles

Los contratos ágiles tratan de romper el paradigma descrito, donde ambas partes comprenden que las estimaciones no son precisas y exactas, sumado a que los riesgos deberán ser compartidos. El contrato pasa a ser un mero trámite y se genera una confianza entre las partes. 

De esta manera vamos de la mano de nuestros clientes, generando una relación de confianza guiados por los principios del manifiesto Agile, centrados en el valor y no en un alcance estático.  En las primeras fases empecemos con sprints de confianza que generen esas sinergias entre las partes ¡Los éxitos de nuestros clientes son nuestros éxitos!

Historias de Usuario

Las historias de usuario son la unidad de trabajo más pequeña de un marco ágil. Es un método de toma de requisitos expresado desde la perspectiva del usuario del software.

Nos apoyamos en esta unidad de medida porque nos ayuda a reducir las incertidumbres de los proyectos, cumpliendo con las expectativas de los clientes y haciendo una buena definición del producto con una estrecha colaboración con nuestros clientes. Además esta unidad de medida, nos ayuda a construir User Story Mappings para plantear los roadmaps de los MVPs (Mínimo Producto Viable) de nuestros clientes y priorizarlos con ellos para aportar el máximo valor.

Trabajar sobre este marco es un win-win, ya que el cliente construye exactamente lo que necesita, y a nosotros nos ayuda a planificar nuestros sprints, analizar las desviaciones y dar estimaciones más realistas.

Equipos multidisciplinares

En Cloud District contamos con un equipo diverso de personas trabajando mano a mano en áreas como Desarrollo, UX/UI, SEO o QA. Cuando afrontamos un proyecto formamos equipos multidisciplinares trabajando codo con codo para ofrecer la mejor solución como un todo. Esta diversidad de perspectivas enriquece el proceso y genera perspectivas que ofrecen soluciones con gran compromiso y eficiente comunicación. 

Es importante evitar silos de información, todas las áreas deben trabajar en conjunto en el mismo proyecto, evitando burocracias de departamentos que ralentice el proceso.

Atomic Web Design

Otro punto importante cuando planteamos un producto digital desde cero, es el uso de Atomic Web Design. Esta estrategia orientada a UI nos ayuda a construir el diseño de una interfaz web descomponiendo en unidades más pequeñas, denominados átomos, moléculas, organismos y plantillas, reutilizando estos componentes a través de la composición para generar elementos más grandes y potentes que compongan todo el diseño.

Aunque parezca ligado solo a diseño es importante adoptar esta práctica de forma transversal unificando disciplinas. En nuestros desarrollos usamos frameworks javascript orientados a componentes como ReactJS o Vue. Es importante que haya una trazabilidad entre lo diseñado y lo construido, permitiendo implementar de manera más eficiente los cambios sobre los componentes y poder realizar prototipos y pruebas de conceptos con estas piezas.

Cultura de testing

Uno de los puntos fuertes y valor diferencial destacable es la calidad de nuestros productosPor ello estos años hemos esparcido la semilla de una cultura de testing, en el que lo abrazamos como un aliado, y que es la base esencial de nuestro proceso de CI/CD. Esto nos ayuda a trabajar con la seguridad de que el software ponemos en producción tiene toda nuestra confianza.

La cultura de testing nos ayuda a realizar refactorings sin miedo, aumentar nuestra productividad y encontramos y resolver los bugs de forma temprana. Cubrimos todo el espectro de la pirámide de testing, sin olvidarnos de test de estrés y carga si los escenarios lo necesitaran.  

Además contamos con un equipo de QA, el cual asegura con sus procesos que el producto que entregamos cumple con los estándares de calidad adecuados.

Integración Continua

Implementamos en nuestros proyectos una estrategia de Integración Continua, donde ejecutamos en cada cambio la construcción del software para detectar problemas de manera anticipada y asegurar que todo está en orden.

A través de las definiciones de los Pipelines, automatizamos la construcción y testeo de nuestras aplicaciones, además de revisar de manera automática otros aspectos como el code style, el análisis estático, el performance o la accesibilidad.

Este proceso nos ayuda a asegurar que los artefactos que construimos están preparados para ponerlos en producción con una estrategia de Continuous Deployment.

Despliegue Continuo

Una vez que nos aseguramos que nuestro software está funcionando correctamente, tenemos que automatizar la puesta en producción de nuestro software utilizando la filosofía de la metodología DevOps, que se centra en la colaboración, la entrega y el despliegue continuo.

Es importante para cumplir con un corto Time to Market, que los ciclos de entrega sean cortos y la automatización, evitando la intervención humana nos va ayudar a reducir el riesgo.

Para ello nos apoyamos en los principales proveedores de cloud computing como Google Cloud, Microsoft Azure o Amazon Web Services. Principalmente confiando en los servicios Serverless, que nos ofrecen un modelo de ejecución de software en la nube que se responsabiliza de ejecutar nuestro código en producción mediante una capa abstracta y dinámica de los recursos. 

Esto nos ayuda a ofrecer un software escalable, sin grandes costes de mantenimiento y gran agilidad en la puesta en producción centrándonos y poniendo los esfuerzos en el propio desarrollo.

Performance Review

Sobre todo, nos sentimos orgullosos de nuestro equipo, por ello invertimos en las personas optimizando el desempeño de estas y de su contribución a la organización, manteniendo al equipo motivado, con objetivos claros y con una progresión clara para entender sus necesidades y ayudarles en su crecimiento personal.

Es importante que los objetivos que nos marquemos sean alcanzables en ciclos cortos y que la comunicación y el feedback fluya. Mantener al equipo enchufado y motivado nos permite construir un software de mayor calidad, sintiendo los proyectos como nuestros y crear estrechas relaciones con nuestros clientes. 

Fin de la historia CI/CD

Hemos hecho un recorrido por distintas buenas prácticas que nos ayudan en el proceso de construir un producto digital. Desde todas las áreas estamos alineados para ofrecer la mejor solución a nuestros clientes, siempre poniendo en el centro el valor diferenciar de la calidad y el buen hacer. 

En este camino, hemos recorrido prácticas que tocan distintas perspectivas que influyen en el éxito de los proyectos. La integración continua es el punto de nexo de todas estas prácticas validando que el software está listo para ser desplegado, y en ese momento, estamos listos para automatizar y poner en producción cuanto antes a través del despliegue continuo.

Contáctanos

INFORMACIÓN IMPORTANTE SOBRE COOKIES

Este sitio web utiliza cookies propias y de analítica para mejorar tu experiencia. Algunas de estas cookies son imprescindibles para que el site funcione correctamente.
Puedes ver más información sobre las cookies en nuestra Política de privacidad.

Aceptar