Many companies today are opting for microservices-based architecture. And this most certainly has to do with the fact that microservices are a perfect complement to SDN/SD-WAN technology, allowing the modules that make up the applications to be implanted in numerous servers or data centers.
What is a microservice?
The first aspect to note is that two types of application can be distinguished depending on the architecture used – monolithic and microservices.
Monolithic architecture is autonomous, meaning that it does not rely on any external services and only focuses on the components it contains.
By contrast, the microservice architecture offers each component in an isolated way (this being a major advantage of microservices), making it easier to maintain and respond to different levels of scalability. It allows replicating the required microservice instances without having to replicate the entire application, as is the case with monolithic architecture.
Microservices and containers
Microservices are closely associated with the container concept. A container is a standard software unit that includes both code and dependencies so that a service or application can run quickly and reliably from one computer environment to another.
And closely connected to the containers, we now move on to the Docker concept. A Docker is a container platform whose purpose is to run applications in an isolated, efficient way.
Dockers need an image for encapsulation. A Docker image consists of a lightweight, independent and executable software package that includes everything necessary to run an application: code, runtime, system tools, libraries and configurations. The containers isolate the software from its environment and ensure that everything works uniformly.
In addition, a Docker is not only used to deploy applications in production, but also to create replicable development environments among all members of a device, to ensure that applications will run the same in all environments, etc.
And now we turn to Kubernetes
The lifecycle of each container is managed by Kubernetes. This is a code system that allows you to automate the processes involved in deploying, scaling and managing containerized applications. In other words, it is a container orchestrator.
The role of a container orchestrator is to manage the lifecycle of each application in the different dockers, coordinating them with each other.
The main features of Kubernetes are:
• Scaling and auto-scaling: The user can choose to manually scale applications or set up rules to automatically scale horizontally based on CPU usage.
• Service Discovery and load balancing: Kubernetes provides the Pods with their own IP address and gives a set of Pods a single DNS name, allowing load-balancing between them.
• Auto-repair: If a container fails, it is automatically restarted.
• Automatic rollouts and rollbacks: Kubernetes permits keeping the Pods of an old version while updating to a new version. If a failure occurs, Kubernetes will automatically rollback the change.
• Planning: It automatically places containers in the best nodes according to their requirements without sacrificing availability.
• Secrets and configuration management: Kubernetes lets you store sensitive data such as passwords, ssh keys, tokens, etc., as secrets. These are stored in a safe place and not within the image.
• Storage orchestration.
• Batch execution.
Containers versus Virtual Machines.
The big difference between containers and virtual machines is that these latter are an abstraction of physical hardware – each virtual machine includes a complete copy of the operating system, the application, and the necessary binaries and libraries, occupying dozens of gigabytes. Conversely, containers adopt a different approach because they rely on the low-level mechanics of the host operating system.
In summary, containers allow you to deploy, start and stop applications faster and make better use of hardware resources, isolating applications and not operating systems. Virtual machines allow us to create completely isolated systems, with greater control over the environment while mixing host and guest operating systems.
Today, Teldat is moving towards microservice architecture – in this way ensuring that the SD-WAN technology the company implements is more efficient and more functional, among other things.