SHALB delivered cloud infrastructure in AWS for DRINKS.CH, a Swiss spirits shop. The team helped to containerize the customer’s apps, write Helm charts, and develop pipelines to deploy the apps to the cluster. The technologies used were Terraform, GitLab, and Kubernetes.
DRINKS.CH is the largest online spirits retailer in Switzerland. The company’s online platform hosts over 5,000 products and serves customers all over the country, including restaurants and specialist retailers.
In 2014, when DRINKS.CH was founded, it was perhaps the only online retailer in the mostly offline and traditional Swiss spirits market. Its founder, Alexander Curiger, relied on digitization from the start. The company had an AWS-based infrastructure that enabled the serving of customers and processing of orders in real time.
Over time, DRINKS.CH’s existing stack grew outdated and was no longer capable of meeting business demands. Their infrastructure wasn’t defined in code or scalable, and the apps weren’t containerized. The company needed a new system that would allow dynamic provision of environments and a reliable delivery system.
A mutual contact recommended SHALB as a contractor and the tasks we were subsequently assigned with included:
- Designing an architecture for the new system
- Implementing dev/stage/prod environments
- Setting up a code delivery system
- Containerizing existing apps
- Migrating the workloads, databases, and message queueing services to the new infrastructure
- Setting up monitoring
- Providing 24/7 support.
Using a self-made reference code, SHALB engineers launched an EKS infrastructure in AWS with a predefined VPC, private subnets, and access permissions. The Terraform code deploys a fully-provisioned Kubernetes cluster with add-ons, cluster resources with dependencies, and preset monitoring stack.
Code delivery and feature environments
Code delivery to target environments is implemented by means of GitOps. GitLab CI Runner runs inside the dev-stage cluster and leverages its unoccupied resources to run builds.
Setup of the CD system allows for dynamic provisioning of the feature environment each time developers commit new changes to the feature branch. The temporary environment is automatically launched in a dedicated namespace within the cluster. This is a fully-fledged, totally isolated setting with all services running, preconfigured ingresses, SSL certificates, and domains specified for an app. The environment allows testing of the functionality of either an individual app or several apps working together.
Successful changes are automatically delivered to a stage environment for system testing. Here, the app is being tested in suite with other apps in an environment that replicates the production. Deployment to production is done manually after approval.
Containerization and Helm charts
Within the project workflow the customer’s apps were containerized and made ready for deployment to the cluster. Writing Helm charts was one of the most time-consuming tasks. The customer’s apps significantly differ from each other, so it was decided to create an individual Helm chart for each one. This was also more convenient for the developers who try to maintain the charts for their apps to have the chart within the application repository.
Monitoring is based on a cloud-native stack that includes Grafana, Prometheus, and Alertmanager configuration.
Upon completion of the project, DRINKS.CH had an up-to-date and scalable infrastructure, perfectly aligned with their business needs. Now they are able to process as many customer queries as needed without degrading their systems’ performance. Automated CI/CD pipelines enable quick delivery of changes and the launching of temporary environments on demand. In addition, the advanced monitoring system provides insights into the state of deployed services and infrastructure components.
Deploying a fully-provisioned EKS cluster can be challenging and time-intensive. With a reference code at hand we reduced this time fourfold, from a month up to a week. Working on DRINKS.CH’s case, we further refined the code to be able to deliver large projects in the shortest terms.
SHALB provides all kinds of services for infrastructure development and maintenance, including infrastructure design and scaling, Kubernetes deployment and infrastructure migration. Our team is flexible, accommodating, and knowledgeable. Book an online meeting or contact email@example.com to see it for yourself. We’d be delighted to hear from you!