Tipti Market

Sobre Tipti Market

Basada en Ecuador, Tipti Market es una empresa de e-commerce orientada a la venta de productos de supermercado y tiendas especializadas a través de medios digitales (aplicaciones móviles o sitios web) con entrega a domicilio. Su propósito es conectar a un equipo de compradores especializados y a los usuarios consumidores que buscan cubrir las necesidades para su hogar.

Dentro de sus funcionalidades principales se destaca el pedido en línea, donde se puede ordenar desde un dispositivo móvil u ordenador la lista de víveres y artículos para el hogar. Tipti recibe el pedido y lo envía a su red de shoppers, quienes seleccionan y compran los productos del pedido para entregarlos en la ubicación, día y hora seleccionada.

La misión de Tipti Market es que las personas tengan más tiempo para sus familias y para sí mismas, mientras garantizan que sus compras llegarán a casa de forma segura.

 

Tecnologías Usadas

Amazon VPC, Amazon EC2, Amazon EKS, Amazon RDS, Amazon ElastiCache, Amazon S3, Amazon MQ, Amazon CloudWatch, Terraform, Docker, Kubernetes, Gitlab, Gitlab CI, Helm, Helmfile, ChartMuseum.

El Desafío

Tipti Market llegó a DinoCloud con el desafío de poder brindar un servicio confiable para sus clientes. Durante el aislamiento ocasionado por el COVID-19, su negocio creció de manera exponencial durante 2020 y los obligó a revisar el despliegue de su producto para acompañar dicho crecimiento con decisiones tecnológicas.

Las principales prioridades de Tipti Market fueron garantizar el servicio y la alta disponibilidad para que no ocurrieran interrupciones en la plataforma y los clientes tuvieran una mejor experiencia. A su vez, realizar un análisis de costos profundos y poder garantizar la automatización de sus procesos a través de la cultura DevOps.

 

Nuestro Enfoque

En primer lugar decidimos realizar una revisión Well-Architected para entender la situación completa de la plataforma y poder identificar los riesgos y puntos de mejora en cada uno de los 5 pilares del programa. Durante la misma revisión, involucramos mucho  conocimiento en la plataforma Kubernetes para comprender los puntos débiles del despliegue.

Una vez identificados los puntajes de cada pilar, planteamos objetivos de remediación prioritarios para el negocio, los cuales fueron:

Una vez comenzado el proyecto, decidimos trabajar de manera conjunta con el equipo de Tipti Market, utilizando la metodología Kanban a través de una comunicación diaria y sinérgica entre el equipo de arquitectos e ingenieros de DinoCloud y los desarrolladores y arquitectos de Tipti Market.  

Decidimos aplicar todos los cambios en los entornos no productivos hasta realizar todas las pruebas pertinentes. Una vez finalizadas, pudimos promover la nueva arquitectura en el tráfico de producción.

 

En cuanto a lo Técnico

Tipti Market comenzaron con una estrategia de manejo de entornos basada en réplicas de recursos (para cada entorno duplicaban recursos). Desde DinoCloud propusimos planteamos una solución de estandarización donde unificamos el proceso de despliegue basado en parámetros, para desplegar diferentes entornos. Unificamos el repositorio de imágenes de Docker e implementamos buenas prácticas de rotación de imágenes, generando ahorros en Amazon ECR.

Cambiamos el esquema de clusters de Amazon EKS, a través de la funcionalidad de Node Selector para que cada microservicio pueda convivir en el mismo ecosistema y pueda administrar los recursos de las instancias de Amazon EC2 de la mejor manera posible.

Cada recurso desplegado en el ecosistema de AWS se creó utilizando las buenas prácticas de IaC y Terraform, a través de una jerarquía de módulos y entornos para llevar a cabo esta práctica.

Una migración importante realizada fue la de Amazon Classic Elastic Load Balancer a Amazon Application Load Balancer, llevando a cabo la migración a un servicio de nueva generación y permitiendo hacer offloading de HTTPS en el balanceador de carga.

En cuanto a costos, se revisaron los modelos de costos utilizados y, a través de cost allocation tags, pudimos visualizar la distribución lógica de gastos y, de esa manera, descontinuar instancias que no estaban siendo utilizadas. A su vez, implementamos el uso de Spot Instances para entornos productivos y no productivos.

 

Los Resultados

Una arquitectura de última generación.

Logramos la automatización de la creación, modificación y destrucción de infraestructura usando código, logrando aplicar metodologías DevOps en la creación de dichos entornos.

Migramos el sistema de colas de la tecnología RabbitMQ a Amazon MQ, logrando incorporar una tecnología administrada dentro del ecosistema.

Redujimos la cantidad de clusters de Amazon EKS de 7 a 3, logrando un uso más óptimo de los costos y de la infraestructura. A su vez, implementamos la funcionalidad de NodeSelector en el cluster de Kubernetes para una mejor administración de los recursos de infraestructura.

Otras tareas realizadas: