Microservice based applications provide scalability and resiliency that makes them highly suitable for deployment in a Cloud or Enterprise environment. To successfully deploy applications based on the microservices architecture (in the Cloud or the Enterprise), the Cloud or Enterprise infrastructure provider must enable a seamless virtual network across different compute platforms such as bare metal, VMs and Containers and must provide users with the capability to deploy multi-tier networks that can be used by microservices. In this article we show you how SDN based virtual networks integrated with network services can provide the networking environment that microservices need.
In computing, microservices is a software architecture style, in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs. These services are small, highly decoupled and focus on doing a small task.
The Microservice Architecture has unique requirements on the network, which must be met by the provider (Cloud or Enterprise) for successful development and deployment of applications.
However in order to build a scalable, resilient and efficient Microservice application one needs a new type of network that can support Microservice architecture at scale.
Network plays a crucial role in
Design and implementation of an application
• The network architecture provided by the Cloud infrastructure must provide adequate flexibility and control so that application designers can create a distributed application architecture that meets their needs
Scalability and performance of the application
• Network services such as load balancers are needed to ensure that an application can be scaled appropriately
Security of the application
• Network services such as VPN to secure communication between components that are in the Cloud and components that are in private Data Centers
• Appropriate security rules for controlling access to the application
Accessibility of the application
• by users over the Internet (for example: users accessing an online retail store)
• by other programs hosted in an on premise location (for example: interaction with on premise Database of corporate authentication systems such as LDAP
• by programmers (Dev) and IT staff (Ops) for continuous improvement of the business logic
Microservices are loosely coupled components that communicate with each other via APIs. So the network is a critical component of microservice applications.
In order to support microservice development and deployment the networking infrastructure should support the following features:
1. A multi-tenant, multi-tier virtual network that is decoupled from the underlying physical network infrastructure so that microservice components can be connected as needed without any dependencies on the underling physical network Multi-tenancy allows one to build several applications on the same shared, simple physical network infrastructure
2. Supports multiple compute platforms such as Virtual Machines (VM), Containers and Bare Metal servers so that right compute platform may be used for various service components
3. Virtual network infrastructure that enables different modes of communication to the Internet at large: communication over the open Internet so that anyone can reach the service, secure communication via VPN (Virtual Private Network) for management and secure access to on premise capabilities
4. Integrated on-demand (API-based) discovery, auto-scaling and configuration of network services such as load balancers, VPN, Firewalls etc., for extensibility and scalability
5. Virtual network infrastructure that can span across multiple data centers so that a geographically distributed microservices may be built
Following is a unified SDN network architecture that provides virtual networks that are decoupled from the underlying physical network. This is an example of an environment that allows the creation of a multi-tenant, multi-tiered virtual network that is based on overlay principles. The top half of the figure shows the physical deployment, while the bottom half of this picture shows one of several possible application sets that can be deployed simultaneously on the common physical infrastructure (BM, VM and CM represent Bare Metal, Virtual Machine and Containers, respectively). In this scheme a virtual network is overlayed on top of an existing physical network infrastructure with the use of a suitable encapsulation technology such as VXLAN. An overlayed virtual network can span across cloud provider’s PODs, data centers and physical network’s L2 (Layer 2) and L3 (Layer 3) boundaries. This allows the various components of a microservice to be distributed across available compute resources. An overlay virtual network also provides great flexibility in scaling the microservice since the microservice components may be placed anywhere without any regard to underlying physical network topology. A complete network virtualization solution also provides suitable gateways and network services (such as load balancers, firewalls, VPN devices etc.) for microservices which allow the application to be reachable from the Internet and also lets microservices reach cloud provider resources such as storage that are outside of the virtual network. Typically these network services are also made available through APIs so that an orchestration layer can create needed network topology on the fly for the microservices to connect to each other.
To summarize, one can build a scalable, resilient and efficient Microservices with the help of a unified SDN network with integrated network services. A unified SDN network with integrated service provides the flexibility, scalability and performance needed to build Microservice in cloud. Some of these mechanisms are available today through open solutions such as OpenStack, and some are still proprietary and available via specific vendors. To unlock the true potential of the Microservices architecture, the industry must work together on developing standard interfaces and solutions that will allow broad adoption of this incredibly powerful software development and delivery technology. The charter of the recently formed Cloud Native Computing Foundation (CNCF) is the right step in that direction.