Container-orchestration by Kubernetes

By looking at the structure of software in a smart way, we create applications that always perform on any infrastructure.

Starting with the foundation

In a world where more and more is possible, it is sometimes quite a challenge to build a solid foundation for software that is future-proof. With a solid foundation you are assured of software that is easy to expand with extra features and you won't have any problems in terms of capacity if it turns out to be a much greater success than you ever dared to dream. One of the latest trends in software development is the containerization of software.

What is containerization?

When installing software on a server, there are many things to take into account. Is the correct operating system running on the server? Do you need to communicate with multiple servers? Are all configuration files present? And don't even get us started on the consequences of switching cloud providers. One of the solution to all these issues is containerization: packing the code of software (and all the libraries, operating systems, and configurations needed to run the code) into a single file called a ‘container’. This way of packaging allows the software to run uniformly and consistently on any infrastructure.

Clarity about development

The popularity of placing software in containers can be explained even before a single line of code is written. Because you can make clear agreements with the development team about what a container should look like, they can develop and implement applications quickly and uninhibited. Do you want to use a new tool as a developer? No problem! You really don't have to call the system administrator first, who then has to install a new framework on the server. We install the new tool in the container we are working on, this ensures us that the software works everywhere. Was the code written on a desktop computer and now it needs to be moved to a virtual machine? No worries! The container stands on its own and is therefore portable; the software will run smoothly on any platform and/or cloud.

All software safely stored in a movable container. Ready to perform the same everywhere!
All software safely stored in a movable container. Ready to perform the same everywhere!

The role of Kubernetes

‘Kubernetes’ (sounds like coo-ber-net-ees) is a container-orchestration system. Large application consist of different functionalities and all these different parts are stored in their own container. Kubernetes is the ecosystem that allows you to automate all your different containers and their capabilities. It helps you communicate with your different containers and automates a LOT. There are other tools that do roughly the same thing (such as ECS and Docker Swarm), but Kubernetes has been the market leader for years.

Efficiënt automatiseren

Dat software ontwikkelen in een container veel voordelen biedt is nu wel duidelijk, maar ook op het gebied van performance en beheer biedt containerisatie veel voordelen. Stel je hebt ineens heel veel bezoekers op je website, dan zorgt Kubernetes er (volledig automatisch) voor dat er een extra container wordt opgestart en de aanvragen van de website worden verdeeld over beide containers (ook wel ‘load balancing’ genoemd). De gebruiker merkt daar helemaal niets van, behalve misschien dat je website zo soepel draait.

Groeien zonder grenzen

De echte kracht van Kubernetes zit hem in de eindeloze mogelijkheden voor groei. Doordat je volledige applicatie in containers draait, is het eenvoudig om losse containers te upgraden of updaten (zelfs terwijl ze in gebruik zijn). Zo kan je precies toevoegingen of aanpassingen doen op die plekken waar het meeste winst te behalen valt. Ook horizontaal schalen (het gebruik van meerdere servers) is geen enkel probleem. De containerstructuur maakt verschillende software onderdelen eenvoudig verplaatsbaar, zonder dat je alles opnieuw moet configureren.

Powercombo samen met Knative

Maar het kan nóg efficiënter! Op het moment dat (delen van) applicaties niet worden gebruikt, hebben ze ook geen servercapaciteit nodig. Daarom maken we ook nog gebruik van ‘Knative’. Knative helpt ons om serverruimte beschikbaar te stellen, maar alleen als daar om wordt gevraagd. Applicaties draaien dus niet meer standaard in de achtergrond, maar worden opgestart op het moment dat iemand er om vraagt. Door deze combinatie van Kubernetes en Knative maken we optimaal gebruik van serverruimte én tijd.

Voordelen

  • Verplaatsbare software die op elke infrastructuur dezelfde performance laat zien.
  • Serverruimte wordt optimaal benut en serverbelasting wordt automatisch opgevangen.
  • Als (een deel van) je software crasht, start Kubernetes automatisch een nieuwe container op zodat de eindgebruiker daar geen hinder aan ondervindt.

Nadelen

  • Een applicatie moet cloud native zijn, wil het werken met deze software (maar daar kunnen we je wel mee helpen!).
Ewout

Wil jij weten of containerisatie voor jouw volgende (of huidige) project ook relevant is? Neem contact met ons op en dan gaan we kijken wat we voor elkaar kunnen betekenen!

Projecten die gebruik maken van Kubernetes