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.
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.
The software optimally links the various processes of network, storage, visualisation and applications together and thus helps to automate complex IT service workflows.
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.
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.
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.
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.