Medi-Market is a chain of parapharmacies of the Belgian company Medi-Market Group and is active in the pharmacy and parapharmacy industry. It’s Medi-Market’s goal to make the most extensive range of high quality products accessible to as many people as possible at the lowest price. Medi-Market has about 40 points of sale spread over Belgium, France and Italy.
Medi-Market was no stranger to ACA IT-Solutions. One of our project teams developed a new application for the stock management of their stores and warehouses. With a view of growth and expansion abroad, Medi-Market asked for such an application, which also had to be easily expandable and adaptable.
You can read all about that part of this project in this case study.
Since the start of our journey at Medi-Market, the number of applications used by the company has grown tremendously. At the end of 2018, one of our development teams started writing one application. Fast forward to two years later, and there are 13 different applications running already. The infrastructure of these applications is used in Belgium and Italy.
We used Docker containers to develop the various applications for Medi-Market. By using these containers, we ensure that the Medi-Market applications can be updated faster and that they use less resources.
For all the applications of Medi-Market to work correctly, various additional tools are also needed. For example, the Medi-Market applications use ElasticSearch and Kafka. With regard to the infrastructure for the applications, Datadog provides monitoring, metrics and logging. Finally, there are also some tools to improve security, such as Sealed Secrets and Calico.
These additional tools also run in separate containers. In total, there are around 60 containers containing tools and applications running in Medi-Market’s infrastructure. However, manually managing such a large number of containers quickly becomes a huge task. Medi-Market therefore needed more automation and reliable hosting in order to minimize manual management needed to run all applications correctly.
To be able to offer a flexible and cost-efficient solution, we used cloud provider Amazon Web Services (AWS). With AWS’ powerful container management capabilities, we started the Docker containers, necessary for the correct operation of the applications of Medi-Market, on the AWS virtual machines. Thanks to the flexibility that AWS offers, we could start with the minimum number of virtual machines required. When new containers or applications are added, we can quickly set up additional capacity.
We used Kubernetes as a container orchestrator, the perfect tool to manage the large number of containers at Medi-Market. The Kubernetes platform ensures the correct management of the various applications, supporting tools and monitoring that run within Medi-Market’s infrastructure. This means that all applications, including the application for automatic stock management, only run on the capacity that is required at that time. As soon as more or less capacity is needed or when new applications are added, Kubernetes scales the hosting up or down. This way, Medi-Market never pays for unused overcapacity and retains efficient hosting that scales flexibly.
Due to the uniform set-up of the Kubernetes platform, additional applications or supporting tools can quickly be added, without previous development work. Another advantage is that it is easy to adjust capacity based on the current requirements. Updating an application to a new version can also be done easily, automatically and in many cases without downtime. This allows Medi-Market to always work in a safe environment and use the latest features. The Kubernetes platform also supports ‘auto-healing’: issues like broken hardware or crashing machines are automatically detected and replaced, with minimal impact on performance or availability. In many cases, the end user will not notice anything at all.
We used an infrastructure-as-code approach with Terraform. In an infrastructure-as-code approach, infrastructure is written as executable code. This approach allows us to quickly add new environments, such as a test or production environment. Additionally, this approach allows us to quickly and easily test changes in a test environment before they go into production. Because everything is written in code, we always have control over changes.
Another advantage is that we can treat the infrastructure code like any other code. This way, we can also make pull requests and require a review of the code from some team members before it is added to the codebase. This allows us to maintain extra control over what exactly we create in AWS.
A datadog-agent runs at all times within the Kubernetes cluster. This monitoring agent is responsible for forwarding monitoring metrics and the logs of the various applications. The incoming metrics are continuously evaluated via monitors that we set up. As soon as a critical value is reached, the team will be automatically notified via an alert in OpsGenie. This allows us to respond quickly and proactively to potential problems.
We make the cloud personal and it is coming your way! Getting started Cloud migration Cloud optimization Managed cloud Cloud security Cloud DevOps Atlassian Hosting Kubernetes