Blog

Kubernetes for the orchestration of containers

How we master the complexity of the microservice architecture

Daniel Wegner - 09 July 2020

For more than two years we at MACD have been using the open source system Kubernetes (k8s) to deploy some software products. Here I would like to explain how this came about, what the advantages are, and what Kubernetes is all about.

Traditionally, we have developed software that does not have to be available all the time. At night the trading systems could stop and on weekends they were not even started. The idea of developing an innovative digital financial information tool called AIXRAY has changed this situation.

The new communication tool was to be designed for the interaction of different customer groups from the financial world, to guarantee a constant availability of 24/7 (i.e. 24 hours a day, 7 days a week). We decided to develop a concept based on a website.

"Do One Thing and Do It Well"

This requirement required a rethink and so we started to evaluate the current techniques. It quickly became clear that we had to break the website down into parts, on the one hand to be able to update individual functionalities in a targeted manner without affecting the entire website, and on the other hand to reduce the complexity of the underlying source code.

Since then we have been working according to the motto: "Do One Thing and Do It Well"  by Malcolm Douglas McIlroy, whose saying originally referred to something else, but which fits our context very well.

We also use independent services in the development of our new Order Management System MAX. This modular successor product to our previous trading systems XKYTE and GLOX contains the best of both systems and is technologically state-of-the-art.

Our micro service architecture for our systems currently consists of 15 services. This results in the situation that we no longer have only one single application, but many, which have to be rolled out and maintained together.

This results in a completely new complexity, which was not available with our previous software products. To master this complexity, we need orchestration, i.e. the intelligent interaction of many individual services to form a functioning overall service - and this is exactly where Kubernetes (k8s) comes into play.

What exactly does Kubernetes do for me?

The software optimally links the various processes of network, storage, visualisation and applications together and thus helps to automate complex IT service workflows.

Deployment

If I pack my application into so-called containers, k8s is able to roll out the application on my servers and make it accessible. Additionally, updates are rolled out - usually without causing an interruption.

Scalability

If I can assume that for example my website will have a very high number of visitors, my application might react too slowly. I can counteract this problem by scaling, in which I create the application several times and distribute it on multiple servers. If a visitor now accesses the website, an application that has enough resources available to answer the query as quickly as possible will respond.

Administration

My application is started, stopped, and monitored by k8s. If my application falls into an unusable state, k8s is able to restart the application automatically and possibly solve the problem automatically.

Thanks to these features, we are now able to provide complex software products like MAX in a highly automated way and ensure high availability.

About Kubernetes

Originally developed by Google and then handed over to the Cloud-Native-Computing-Foundation as an open source project, Kubernetes takes on the orchestration part by taking care of service delivery, scaling, and management. The goal of the deployment is also the distribution to multiple servers to ensure failover.

Kubernetes itself is currently used by all major cloud providers, such as Microsoft Azure, Amazon AWS and Google Cloud Platform, and has since November 2017 been listed on the ThoughtWorks Technology Radar as a technology to be adopted.

 

More Blog Posts