Pretty Technical

Tech Insights: Building Scalable and Resilient Applications with Microservices and Kubernetes

Microservices and Kubernetes are the latest trend in the world of software development, and for good reason! Rather than slaving away on a massive, monolithic application, microservices allow you to break things down into bite-sized chunks that can be developed, deployed and scaled independently. It’s like going from a set menu three-course meal to a buffet banquet – you can pick and choose whatever you want, whenever you want it. And if one dish isn’t quite what you had in mind, you can simply swap it out for another without ruining your meal! Its improved scalability, agility, and fault tolerance is tasty enough to make a developer’s mouth water!

Microservices Architecture

A microservice is a small, independent service that performs a specific function within an application. Each microservice is responsible for a specific business capability and communicates with other microservices in different ways (depending on the needs). They can be communicated Peer to Peer (P2P)  via Application Programming Interfaces (APIs) or they all can share the same channel of information using a queue that contains the data they need. This makes it easier to develop, test, and deploy individual services, as well as to maintain and scale the application as a whole.

Microservices architecture promotes decoupling and independence between services, which can lead to higher availability, better fault tolerance and easier scalability. It also enables teams to work in parallel on different services, allowing faster and more frequent releases.

Kubernetes and Microservices

Kubernetes (known also as K8S) is an open-source container orchestration system that automates the deployment, scaling, and management of containerised applications. It provides a platform for managing microservices at scale, making it easier to deploy and manage large numbers of services across a cluster of machines.

So, why K8S with microservices? Two words: Horizontal scaling. This involves adding more instances of a service to handle increased traffic. K8S can automatically scale services up or down based on demand, ensuring the application can handle spikes in traffic without downtime.

Kubernetes also provides quite a large set of tools for managing and monitoring microservices, including automatic load balancing, service discovery, and self-healing capabilities. This helps ensure the application stays up and running even in the face of sudden failures or unexpected spikes in traffic.

Our Experience

We use microservices and Kubernetes for our Domino platform (a Data Vault used by igaming customers in the Netherlands and Germany). It uses microservices to break down complex tasks into smaller, more manageable pieces, making it easier to maintain and scale the platform. 

While one microservice (ingester) exposes the API that receives incoming information from Operators, another microservice (extractor) grabs the data and generates the reports required by the regulator. This way, if we need to modify how the reports are made we can work on the extractor by deploying a new version with no impact (and no downtime) at all on the Ingester. The separation of concerns is key to solving problems in different parts of the solution without impacting it in its entirety.

We also use microservices and Kubernetes for our Mikado Platform (a player account management solution for igaming). By breaking down the application into smaller services, such as product bonus, players, and payment processing, Mikado can scale more efficiently and handle large spikes in traffic. Kubernetes is used to manage the deployment and scaling of these services, ensuring that the application stays up and running even during peak traffic periods.

TLDR

So in summary, Microservices architecture and Kubernetes break things down into smaller, independent services. Like an army of ants, each carrying their own little bit of the load. Microservices and Kubernetes are quite simply our go-to when it comes to building top-notch, scalable and resilient applications with greater agility. If you’d like to talk more tech, please email us at [email protected].

Microservices and Kubernetes