AWS NATIVE KUBERNETES SOLUTION IMPLEMENTATION
As one of the most influential humanitarian organizations, Adra specializes in managing diversified services, each of which is intended to help individuals, communities, and society as a whole. Such a charity-oriented mission undeniably requires a robust technical foundation. For this reason, Adra decided to choose Matoffo as a reliable and trustworthy cloud development company that can satisfy this request in a fast and client-focused manner. Ultimately, our fruitful cooperation resulted in a functional AWS-powered solution transformed from a serverless model into Kubernetes.
About the Customer
Adra is a global humanitarian organization that helps to develop healthcare and education networks by delivering specific programs to boost sustainable change in local communities, companies, and organizations. Providing their services in more than 118 countries around the world, Adra handles multifaceted solutions in order to ensure immediate assistance in times of crisis.
Adra's current infrastructure could not manage such a wide variety of services in an efficient way. Even though their services had the same fundamental components, they handled them separately. What is more, not all services were dockerized, which also resulted in a long delivery process. Their CI/CD process was time-consuming and led to certain security issues, while they deployed their applications through custom bash scripts.
Adra needed to change their AWS environment. They stuck to the serverless model applying AWS CloudFormation to each service. As a result, they even had to implement some static infrastructure each time per deployment. Finally, Adra's approach to such practices as injecting and using secrets for applications was also inefficient.
Given the paramount importance of Adra's pain points, it was clear that the organization requires an effectively managed container service to run and scale applications in the cloud/on-premises. Thus, Amazon Elastic Kubernetes Service (Amazon EKS) may be a perfect option if the company wants to get the most out of managing, deploying, and scaling containerized applications. EKS not only provides a vast scope of flexibility and rich ecosystem advantages but also represents the best practice to run containers on AWS.
With thousands of cloud providers in the market, it may be truly challenging to choose the one you are ready to entrust your business to. More than that, it may be even more challenging if you are an owner of an international humanitarian organization like Adra. By handling tons of relevant data and resources that can eventually save someone's life, you do not have the right to make mistakes in implementing inefficient solutions. Fortunately, Matoffo managed to prove itself as a trusted partner that easily gets to the core of the established problem and comes up with a functional solution that meets the client's needs.
Since most of Adra's services have a similar structure, we decided to start by splitting each Laravel PHP service into separate components (web server, fmp server, queue, cron job). Next, we dockerized each of these components. Kubernetes Cluster was created to manage docker containers.
As a core of this solution, our development team used AWS EKS because it provides a fault tolerance/high availability environment with multiple beneficial features like the ability to use:
- Scalable solutions using HPA/Replicas/Specified resources per Service;
- Karpenter as Autoscaler to AWS EKS Cluster (can determine which node should be raised with a specific type);
- Managing secrets using HashiCorp Vault (injected as a sidecar to Kubernetes pods);
- Automation deploy using GitOps solution (ArgoCD as a tool to implement this approach);
- Full automated CD with automatically created DNS records (using ExternalDNS addon for EKS);
Clear monitoring and logging using Prometheus and Grafana (with own dashboards/alert manager to get some notifications in Slack);
- Ability to create new environments from scratch using the IaC approach (Terraform for infrastructure/Kustomize for applications).
Last but not least, we also built a VPN server based on OpenVPN to enable completely private access to the AWS environment and all services located in Private Subnets and not exposed to the world.
Additionally, we redesigned the GitLab CI part to maintain a fully automated build and deploy services without interruptions so that the developer just pushes code, while CI and CD completely cover all the rest.
The development team included three DevOps engineers responsible for different processes, including Kubernetes configuration, CI/CD setup, frontend development, and allied support. In general, it took us about a month to deliver a ready-to-use AWS solution.
On the one hand, this solution may be described as a thorough development process that resulted in vast AWS functionality. On the other hand, the Matoffo team perceived this task as a significant contribution to Adra's global humanitarian mission. Therefore, we intended to bring value in the following aspects:
- Saving Valuable Time
Managing multiple services can be time-consuming. For this reason, we put an emphasis on simplified service management to allow Adra to spend their valuable time fulfilling their humanitarian goals.
- Easy-to-Use Templates
We turned similar services into customizable templates so that the client can easily manage them as per their current needs.
- Broader Opportunities
Implementing Kubernetes and GitOps as a stable technical foundation, we provided Adra with vast deployment and scaling opportunities, as well as enabled faster app testing activities.
At Matoffo, we always perceive the client's needs as the top priority. For this reason, we not only managed to deliver an on-budget and on-time turnkey AWS solution but also paid extra attention to each feature so that we can guarantee everything works as the client requested. Consequently, the client is delighted with the outcome, so we will be glad to continue cooperation with Adra in the future.
OUR FOCUS IS
Our primary goal is value delivery for the client by resolving technical challenges and assisting them to achieve their objectives. AWS cloud solutions are great toolset which we use to make it happens, primary by outstanding agility, where companies could scale up cloud resources as needed and significantly decrease time from idea to market as well as seamless adopt rapidly growing tech capabilities to transform their businesses to be competitive in the market.