El desarrollo de una plataforma que conecte a todo el ciclo de venta y distribución requiere de metodologías DevOps orientadas en la nube.
El proyecto de Grupo Bimbo consiste en una aplicación que se utiliza para recuperar y almacenar datos de otra aplicación llamada TConnecta, cuyo objetivo principal es generar información mediante diferentes consultas a múltiples bases de datos, como Azure Synames y DynamoDB.
Lecciones Aprendidas
Tabla técnica
Definición del problema | El cliente tenía el reto de actualizar su actual solución serverless que visualizaba en tiempo real el estado de su cadena de valor y el estado de cuenta de sus clientes, para ello, se requiere hacer un pipeline de automatización que les ayude a entregar nuevas versiones de la API más rápido para satisfacer la demanda del negocio. La solución serverless proporciona información que utilizan para tomar decisiones más inteligentes sobre la venta a clientes con crédito aceptable, una mejor comprensión de la demanda y la producción de lo que necesitan en el momento adecuado, por lo que un pipeline de automatización para integrar y desplegar nuevas versiones con cero tiempo de inactividad es una necesidad. Esta falta de integración impedía el seguimiento de los problemas a lo largo de la cadena de valor y dificultaba la mejora de los plazos de entrega. • El negocio exigía cambios continuos y nuevas funcionalidades en la integración de los sistemas empresariales y el equipo de desarrollo no puede seguir el ritmo que el negocio requiere debido a la falta de un modelo de integración de código y despliegues automatizados. Los despliegues se hacían una vez al mes • Debido al gran número de cambios que se introducían en cada despliegue, el periodo de pruebas duraba varios días, lo que ralentizaba aún más la puesta en producción. • El rollback era manual, por lo que, bloqueaba la visibilidad de la cadena de valor durante casi un día entero. • Los sistemas de ventas y las integraciones entre ellos funcionaban como infraestructura heredada y su mantenimiento a nivel de configuración generaba múltiples problemas debido a errores humanos de configuración. • La seguridad en la arquitectura de los sistemas heredados presentaba riesgos como los código hardcodeado y permisos amplios de lectura y escritura. • Falta de trazabilidad de la cadena de valor de la producción de múltiples productos que desencadenaba falta de producción o devoluciones excesivas por falta de información de ventas a la fabricación del proyecto. • Falta de trazabilidad de los costes de infraestructura debido al mantenimiento de los sistemas heredados. |
Solución propuesta | Como parte de nuestro servicio DevOps, propusimos lo siguiente: • Propusimos escribir toda la infraestructura como código necesario para desplegar las funciones lambdas para soportar las interfaces de comunicación entre los sistemas de venta. • Como parte de la estrategia DevSecOps, cada una de las funciones debería tener un rol independiente con la menor cantidad de permisos y la política de permisos gestionada como código. • La creación de toda la infraestructura como código usando Terraform, que disminuiría el riesgo de errores humanos, traería consistencia de la configuración, ayuda a identificar potenciales ahorros de costos al rastrear qué infraestructura se está usando realmente y en conjunto con un SCM mantendría el seguimiento de los cambios de infraestructura. • Pipelines de automatización independientes para cada función Lambda y sus correspondientes recursos y métodos de API Gateway, que aislarían los procesos de CI/CD aportando mayor rapidez en los despliegues, control de variables de entorno y aislamiento de errores. Más información a continuación: Integración continua Hemos configurado un pipeline de CI en nuestro repositorio de código interno en el que estamos utilizando un conjunto de herramientas que comprueban la calidad del código, la estructura de commit, realiza pruebas unitarias y validaciones de build: QA • Pruebas unitarias • Pruebas funcionales basadas en simulacros • Análisis estático del código (SCA) • Vulnerabilidades y exposiciones comunes (CVEs) en dependencias de terceros • Escaneo de actualizaciones disponibles de dependencias de terceros (Semantic Versioning) • Análisis de vulnerabilidad de entornos virtualizados (Dockerfile) • Análisis de sintaxis YAML (AWS SAM) • Análisis de configuración de plantillas SAM (cfn-nag) • Validación de la estructura de la documentación (Markdown) • Validación de estándares de codificación Build • Resolución de dependencias • Construcción de aplicaciones, generación de artefactos y construcción de plantillas de AWS SAM (AWS SAM) Reorganización de los equipos de desarrolladores en pequeñas células de trabajo con pipelines de CI/CD. La propuesta se basó en la formación de los equipos de desarrolladores del cliente que mantenían las soluciones heredadas en la metodología devops para que puedan desarrollar microservicios que acaben sustituyendo a los sistemas heredados poco a poco. La práctica de CI/CD permitirá la creación de diferentes pipelines de desarrollo y despliegue que resuelvan cada una de las necesidades de exposición, transformación y conexión de datos. El desarrollo de recetas de Terraform para el despliegue automático de funciones Lambda, que alojen el código de integración resolvería los problemas de despliegue, escalabilidad y mantenimiento que agobiaban al cliente. |
Servicios de AWS utilizados | API Gateway AWS Lambda DynamoDB CodeBuild CodePipeline CodeDeploy CloudWatch |
Herramientas de terceros | Terraform GitLab |
Resultados después de la implementación | El cliente logró la interconexión de algunos sistemas centrales, heredados y uno moderno con los siguientes beneficios. Gracias a la implementación de CI/CD, los despliegues tardan unos 2 minutos, lo que significa que los tiempos de entrega se redujeron drásticamente en comparación con los procesos que el cliente tenía antes. Como parte de la revisión de la seguridad, los permisos y la configuración de red de las funciones Lambda son gestionados por el pipeline CI/CD, de ahí que se versionen, limiten y revisen constantemente para mantener sólo los permisos y comunicaciones estrictamente necesarios para el funcionamiento de cada función Lambda. Como resultado de esta integración, el cliente puede conocer la trazabilidad de su cadena de valor y obtener en tiempo real la información de crédito y el estado de pago de todos sus clientes. Estas mejoras en la trazabilidad de la información y la disponibilidad inmediata de los datos se tradujeron en una línea de negocio de crédito para sus clientes, permitiéndoles desarrollar sus tiendas de una manera más eficiente, esto permitió a los supervisores y vendedores visualizar sus métricas clave en cualquier momento mejorando la toma de decisiones comerciales de los vendedores y aumentando las ventas en un 12%. Con la metodología DevOps, el equipo de desarrollo se organiza ahora en unidades dedicadas a partes específicas de la plataforma, que se integran a través del control de cambios, según el flujo de desarrollo establecido por sprints. Esto ha dado lugar a una ampliación de las capacidades de los sistemas heredados y a una mejora significativa del entorno organizativo interno, ya que los equipos se centran en el desarrollo de características y en abordar los problemas subyacentes de la cadena de valor en lugar de preocuparse por el proceso de despliegue y el costoso mantenimiento de las aplicaciones. Principales logros y métricas de éxito Despliegue de nuevas versiones en 2 minutos para una mayor flexibilidad y adaptabilidad a los cambios en la demanda. Visibilidad de los datos en tiempo real para la toma de decisiones de ventas. Aprovechamiento del equipo de desarrolladores para implementar nuevas funcionalidades y no mantener procesos manuales de integración de datos, aumentando en un 50% el despliegue de nuevas funcionalidades mensualmente. Aumento de las ventas de hasta un 12% en las líneas de productos afectadas. |
Lecciones aprendidas | Las metodologías DevOps implementadas permitieron que las distintas plataformas operaran de forma más eficiente, también facilitaron el cambio interno hacia la mejora continua. |
Results
Agilidad y resolución como parte integral de mejora continua.
Gracias a la integración de pipelines de Integración Continua y Despliegue Continuo, nuevas características, corrección de errores en el código, y mantenimiento son cosas que el equipo de desarrollo ahora puede afrontar de forma eficiente, por medio de la metodología Agile.
2 min
Duración de despliegues
50%
Más funcionalidades nuevas cada mes
12%
Incremento en ventas