16.09.2020 | Author / Editor: Henrik Hasenkamp / Elke Witmer-Goßner
The development of new applications has changed fundamentally in recent years. Agile and quickly implemented microservices and container solutions have replaced monolithic software developed by companies themselves.
The challenge of orchestrating this new technology has thus come to the fore. The open source technology Kubernetes has become the de facto standard for this and is available as a managed service from the cloud. But how do the various offerings differ?
The demand to make software as quickly and easily usable as possible has led more and more companies to rely on cloud-based software solutions and microservices. The number of infrastructure, platform and software-as-a-service (IaaS, PaaS, SaaS) solutions is therefore increasing rapidly. To maintain the flexibility of these microservices, i.e. small, independently operating utilities, they are packaged in so-called containers that have to be orchestrated. Part of the orchestration is the administration and planning of the container clusters or the provision of new hosts.
Kubernetes for container control
One of the technologies that help is Kubernetes. The system was originally developed by Google as part of a GIFEE (Google Infrastructure for Everybody Else) project and is freely available and customizable as open source technology. The process within the system is completely automatic. The developer passes commands to the Kubernetes master, which then automatically orchestrates the subordinate nodes, i.e. servers on which the containers are located. Containers can also be grouped together in pods to form a group that is located on the same node and can communicate with each other via localhost.
The great advantage of using containers and Kubernetes is the automatic and intelligent distribution of services packed in containers to the Kubernetes cluster. Thus, the available resources are optimally used. Depending on the needs and requests of the developer, single and additional containers can be stopped or started. Furthermore, the system is able to find the optimal place for each container and moves them to the server that still has capacity and computing power left. In case of a server failure, the containers created there are automatically moved to a running server. This makes complete system failures almost impossible and guarantees continuous usability. In addition, IT teams can manage large applications containing many containers more efficiently through Kubernetes.
On-premises or cloud based?
Systems set up in-house to learn how to use microservices, containers and Kubernets can be a useful introduction for developers at the beginning. The problem: The number of containers usually increases relatively quickly in practice, and so do the requirements for orchestration. Despite the large number of tutorials about using Kubernetes and a large number of entries on the developer platform GitHub, a certain amount of know-how is required to use it. Especially companies that do not have a large team of developers will reach their limits at the latest at the first disturbances.
Cloud service providers and managed hosting providers start right there and offer a range of different offerings, which can range from pure server hosting to comprehensive complete solutions. Possible prior experience can help to define the individual needs of your own company and find the right offer. Nevertheless, it is difficult to understand the different models without in-depth research.
The selection of the right offer
Some Managed Hosting Providers only act as resellers, examples are the hyper scalers Google, Microsoft and Amazon. Providers like these, however, are unable to build up expertise for the individual tools because their offerings are too extensive and have sometimes been supplemented by other solutions, such as Red Hat's Kubernetes container platform OpenShift. Companies themselves are responsible for the configuration and selection of tools, which requires either collaboration with partners or a high level of in-house expertise.
With Container-as-a-Service offerings from cloud providers, the responsibility for scaling and availability of the Kubernetes infrastructure remains with the respective service provider. In doing so, resources and performance are agilely adapted to the needs of the company. However, load balancers, persistent storage and schedulers must be selected correctly, which can prove difficult without IT expertise.
Smaller and specialized providers, such as gridscale, provide solutions that can be handled even by laymen. The control of cloud workloads is facilitated by a high degree of user-friendliness and the intuitive graphical interface. The provider's Managed Kubernetes offer also relies on a pre-selection of the most important modules. The configuration of the entire environment is much easier and it takes only a few minutes to get started. Administrative tasks are handled by the development teams and the cloud service provider is responsible for them. The actual application development in containers can thus be fully focused on.
Which variant makes the most sense and is easy to implement for your own company depends on various factors. For example, the available budget, the company structure and the existing competencies in the own team. For small teams of developers, however, offers such as Managed Kubernetes are an advisable solution due to their user-friendliness.
The original article in german can be found here.