Based in Ecuador, Tipti Market is an e-commerce company oriented to the sale of supermarket products and specialized stores through digital channels (mobile applications or websites) with home delivery. Its purpose is to connect a team of specialized shoppers and consumers seeking to meet the needs for their home.
Among its main functionalities, online ordering stands out, where the list of groceries and household items can be ordered from a mobile device or computer. Tipti receives the order and sends it to its network of shoppers, who select and buy the products of the order to deliver them at the location, day and time selected.
Tipti Market’s mission is to give people more time for their families and for themselves, while ensuring that their purchases will arrive home safely.
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.
Tipti Market came to DinoCloud with the challenge of being able to provide a reliable service for its customers. During the isolation caused by COVID-19, their business grew exponentially during 2020 and forced them to review the deployment of their product to be prepared for the growth.
Tipti Market’s top priorities were to ensure service and high availability so that platform disruptions did not occur and customers had a better experience. At the same time, they asked for performing an in-depth cost analysis and being able to guarantee the automation of their processes through the DevOps culture.
In the first place, we decided to carry out a Well-Architected Review to understand the whole picture and be able to identify the risks and points of improvement in each of the 5 pillars of the program. During the assessment we involved a lot of knowledge in the Kubernetes platform to understand the pain points of the deployment.
Once the scores for each pillar were identified, we set priority remediation objectives for the business, which were:
Once the project started, we decided to work together with the Tipti Market team, using the Kanban methodology through daily and synergistic communication between the DinoCloud team of architects and engineers and the Tipti Market developers and architects.
We decided to apply all the changes to the non-production environments until all the relevant tests were executed. Once completed, we were able to promote the new architecture in production traffic.
Tipti Market started with an environment management strategy based on resource replicas (for each environment they duplicated resources). From DinoCloud we proposed a standardization solution where we unify the deployment process based on parameters, to deploy different environments. We unified the Docker image repository and implemented good image rotation practices, generating savings in Amazon ECR.
We changed the Amazon EKS cluster scheme, through the Node Selector functionality, so that each microservice can coexist in the same ecosystem and take advantage of the resources of the Amazon EC2 instances as best as possible.
Each resource deployed in the AWS ecosystem was created using the good practices of IaC and Terraform, through a hierarchy of modules and environments to carry out this practice.
An important migration carried out was from the Amazon Classic Elastic Load Balancer to Amazon Application Load Balancer, carrying out the migration to a next-generation service and allowing HTTPS offloading in the load balancer.
Regarding costs, the cost models used were reviewed and, through cost allocation tags, we were able to visualize the logical distribution of expenses and, thus, discontinue instances that were not being used. Also, we implemented the use of Spot Instances for productive and non-productive environments.
An well-optimized architecture.
We achieve the automation of the creation, modification and destruction of infrastructure using code, managing to apply DevOps methodologies in the management of said environments.
We migrated the queuing system from RabbitMQ technology to Amazon MQ, incorporating a managed service within the ecosystem.
We reduced the number of Amazon EKS clusters from 7 to 3, achieving a more optimal use of costs and infrastructure. Also, we implemented the NodeSelector functionality in the Kubernetes cluster for better management of infrastructure resources.
Other tasks performed: