The development of virtualization and cloud technologies, as well as the widespread use of agile development methodologies and DevOps practices, have created a new approach to software development – micro-service architecture (MSA – Micro-Service Architecture). While in the traditional model, individual modules can be heavyweight monolithic software, in MSA software is composed of many lightweight modules, each of which performs one simple function. This follows the principles of UNIX-like OS – “Do one thing and do it well”. The microservice itself is an isolated piece of code aimed at solving one problem. That is, the software development process turns into a layering of “bricks” from which a full-fledged “house” is built, and “construction” is thus simplified.
In order to ensure the operability of microservices, to simplify their management, and most importantly, to isolate them from each other, they are “packed” into containers. A container is a shell that contains everything you need to successfully launch and operate a specific microservice. Several different containers can run under the same operating system, but each of them works with its own software libraries and dependencies. Failure of one container does not have any consequences for others, and it can be restarted almost instantly on another server in the cluster.
To optimize and automate the process of managing containers, special software is used – an orchestrator.
World practice shows that when developing web applications today it is advisable to use a cloud-native approach using complex products for working with containers. Therefore, right now you need to think about how your company develops, implements and maintains all business systems. Today, Kubernetes has become almost the industry standard for launching containerized microservices – the rest of the players occupy only certain narrow niches, their percentage is very small.
A Kubernetes-based solution has become extremely popular over the past few years due to its wide customization capabilities. In addition, Kubernetes can be configured and run on almost any hardware platform: bare-metal, virtual machines, and in the cloud.