Containers are lightweight, efficient and standard way for applications to move between and among the environments.
Micro services is a architectural design for building a distributed application using containers. Micro services are modular in terms of supporting any kind of business requirements. Monolithic code can be divided into smaller parts known as micro services. Micro Services can communicate to each other by using RPC calls.
While implementing Applications require a set of services from their infrastructure like load balancing, traffic managing, routing, health monitoring, security policies and user authentication. These services are often implemented as discrete appliances. Providing an application with these services required going to the appliance to implement and configure the service.
This process was possible when managing dozens of monolithic applications, but as these monoliths become modernized into micro services it isn’t practical to provision hundreds or thousands of containers in the same way. Monitoring, scalability, and high availability can no longer be provided by discrete appliances. These discrete appliances will be from different OEMs and every OEM has different EMS and NMS. It’s a big bottle neck for a customer to manage these discrete appliances.
The solution for this problem is call a service mesh — a new way to deliver these services integrated from within the compute cluster itself through APIs that doesn’t require any additional or discrete appliances. This flexible framework removes the operational complexity associated with modern applications.