Streamlining App-Suite Maintenance Through Kubernetes Migration – A DevOps Odyssey

Case studies

When Maxcode received a request to improve the maintenance operations for an increasingly cumbersome suite of independent apps, the company embarked on a mission to simplify the platform’s architecture and establish a unified approach. Due to compliance reasons, the team decided to rely solely on internal, self-managed infrastructure. The talented DevOps team rose to the extra challenges this created, and succeeded in standardizing the use of a Kubernetes infrastructure. Thanks to the new unified way of working, keeping the app suite operational has never been easier.

We received a request to improve the maintenance operations for a suite of apps. These covered a wide range of potential needs for employees of small companies, from allowing them to perform work-time tracking, to handling days off and adjusting key business metrics. Interacting with each other in a cohesive manner, these apps delivered great operational value for small companies.

However, the task of keeping the entire ecosystem operational had become increasingly cumbersome for the operations team. The applications in the suite had started out as independent initiatives, meaning that the technology stacks and practices varied greatly. Some applications were hosted on on-premise servers and relied solely on internal functionality, while others used a variety of cloud providers and services. Some apps were configured with continuous delivery in mind, while others relied on being manually deployed with PowerShell scripts.

As the suite had continued to expand and evolve, the team had found themselves navigating through a labyrinth of disparate systems and processes, often requiring them to spread their knowledge and time thinly across multiple platforms. In their quest to maintain the platform’s stability, the team were tasked with mastering up to six different methods of performing maintenance activities, further increasing their already demanding workload. Recognizing the pressing need for intervention, we embarked on a mission to simplify the platform’s architecture and establish a unified approach towards its maintenance and operations.


The DevOps symphony behind app-suite transformation

The request was mostly a DevOps-centric activity, focused on the technical setup, infrastructure, and service integration. Therefore, we put together a team of talented DevOps engineers, coupled with a seasoned developer who could offer programming support when things became more difficult.

Before starting on any project, Maxcode teams familiarize themselves with the business requirements to facilitate a smooth delivery of the request and ensure the integrity of the functionality. In this specific case, business continuity was key. To ensure applications behaved according to expectations throughout the transition, the team therefore decided to maintain close collaboration with platform users.


Shaping a project into two phases for seamless transformation

We decided to divide the project into two phases. In the first phase, we put together a proof of concept, which was subject to the scrutiny of all involved stakeholders. After feedback and necessary adjustments, the team would then be able to align all the other applications to this new way of working in the second phase


The path to the proof of concept

Finding a suitable Kubernetes self-hosted solution to satisfy the compliance requirements
Setting up an experimental/testing environment
Creating a proof of concept with the selected Kubernetes solution
Containerizing and hosting one of the applications
Setting up the Kubernetes deployment along with other resources required
Setting up a CI/CD pipeline for the new Kubernetes environment


Crafting a compliance-driven infrastructure makeover

To futureproof the app suite while improving the ease of maintenance, the team decided to migrate the applications towards a containerized setup, running in a container orchestration environment. Due to compliance reasons, we had a hard requirement of not using public cloud provider services, but relying solely on internal, self-managed infrastructure instead. This meant having to find stable alternatives that offer a sufficiently developed feature set, alongside an approachable setup path.

The biggest challenge was to adapt a straightforward cloud service to work within an on-premise environment, without compromising on security, stability and ease of use. Despite the relative complexity of the Kubernetes system, the puzzle pieces soon started to fall into place for the team. We tested Minikube, Kind and K3s as suitable self-hosted Kubernetes providers. While each one of these solutions has its strong suits, we concluded that Rancher’s K3s would be the best tool for the given scenario.

K3s is a lightweight Kubernetes distribution designed for resource-constrained environments, making it particularly suitable for edge computing, IoT devices, and development/testing scenarios. It simplifies the deployment and management of Kubernetes clusters by significantly reducing the overhead typically associated with Kubernetes installations. With its small footprint and streamlined approach, K3s maintains compatibility with the Kubernetes ecosystem, offering essential features for container orchestration while being easy to install and operate.

It was specified early on that these applications would face a reduced level of usage in the beginning. Given this lower traffic potential, we opted for a simple setup with one Replica Set per deployment, ClusterIP services and Nginx ingress controllers in order to expose the services on the network. Each application would have two namespaces: one for a Quality Assurance environment and another for a Production environment.

We also set up an easy CI/CD pipeline with Azure DevOps where we could build and publish the Docker images to an Azure Container Registry resource. We would then deploy them using image pull secrets integrated in each namespace.

46% Less time spent on maintenance
51% Mean Time to Recovery reduction
20% Lead time for changes reduction


Mastering app-suite control with Kubernetes

We managed to successfully create and standardize the use of a Kubernetes infrastructure, and achieved the main goal of this project: to centralize the deployment and maintenance of the app suite. With a unified way of working for all the applications, keeping them operational has become a breeze. Engineers can now focus on creative work, such as building new features and apps, instead of struggling to keep existing ones up and running. The team have already extended the app-suite with 2 additional components built on top of the established scaffolding, allowing the business to grow while keeping technical operations future-proof.

If you’re planning on remaining relevant in the industry, Kubernetes is a must-have instrument in your toolkit. It has been the best choice for building robust, highly scalable, and highly available infrastructure, and we believe it will remain so for the foreseeable future. In fact, we have already started to explore other possibilities with Kubernetes, such as setting up a monitoring stack with Prometheus and Grafana, or adding an additional layer of security to the resources with an OIDC sidecar like Open2Auth Proxy. With such powerful scaffolding, the sky is the limit!


Next Level Tech

Revolutionize your payments game! Dive into the realm of cutting-edge financial solutions with us. Let’s collaborate to streamline your transactions and take your financial processes to new heights.

Small business seeking efficiency or a large enterprise after seamless transactions? We’ve got customized strategies ready for you. Let’s talk about your unique needs and pave the way to financial excellence.