Microservices are an architectural design for building distributed applications using containers. Microservices get their name because each function works as an independent service. This architecture allows for each service to scale or update without disrupting other services in the application. A microservices framework creates a massively scalable and distributed system, which avoids the bottlenecks of a central database and improves business capabilities, such as continuous delivery/deployment applications and modernizing the technology stack
Microservices in Docker Containerization is one of the biggest trends in the world right now. Docker, being the most popular containerization platform, is an excellent tool to build microservices. You have different options to structure microservices in Docker.
You can deploy each microservice in its own Docker container, read more on how Docker works You can also break down a microservice into various processes and run each in a separate container.
You can also use Docker Compose to run multi-container applications. It can save you a lot of time, as you do not have to create and start each container separately.
With Docker Compose, you can configure your app’s microservices using a YAML file. If you are interested here’s a useful article by Linode on how to deploy microservices with Docker and Docker Compose.
If you have a large-scale application with several containers you can also make use of a container orchestration platform. The two most popular tools are Docker Swarm and Kubernetes. Both allow you to deploy containers to a cluster of computers instead of just one machine.
Docker Swarm is embedded in the Docker Engine; it’s Docker’s native orchestration tool. Kubernetes was created by Google and, it’s the most popular orchestration platform at the moment. While Swarm fits well into the Docker ecosystem and it’s easy to set up, Kubernetes is more customizable and has higher fault tolerance.
Below, you can see an illustration from the Docker blog about how to use Docker Swarm and Compose together to manage container clusters:
You won’t need a container orchestration tool in the case of a smaller app. However, you might want to automate container management when you deal with several microservices.
Microservices in the Cloud Microservices are frequently run as cloud applications, as they are lightweight and easy to scale and deploy. Popular cloud platforms come with several microservice-friendly features, such as:
On-demand resources
Pay as you go pricing
Infrastructure as code
Continuous Deployment and Delivery
Managed services (e.g. dealing with scaling, software configuration and optimization, automatic software updates, etc.)
Large choice of programming languages, operating system, database technologies
Built-in tools such as Docker and Kubernetes
Microservices in the cloud are usually deployed in containers, as that's how you can make the most out of the infrastructure. Besides, containers are isolated, run anywhere, and create a predictable environment. However, it is also possible to deploy microservices in the cloud without using containers.
Although the latter solution is less common, it is the better choice. For instance, WeatherBug runs microservices directly on Amazon EC2, without using containers. They decided to skip Docker and containerization altogether to avoid extra overhead and complexity. You can read the detailed analysis of their approach on The New Stack.
Related blog:
Recommended Posts