Earlier I had the wonderful opportunity to write on Cloud, titled Is a Cloud-Native Network OS Required? This is my follow up and second article on VMware’s Future:NET 2018, VMware’s premiere event focused on the future of networking.
Those that know me, know how I love to talk about future possibilities; thus, I always jump at a chance to attend a conference like this one.
Microservices
Microservices is a great topic to dig into. Make sure to check out Deepak Bansal’s presentation on Unified SDN for Microservices from Future:NET. Click here to see the original presentation on YouTube. While there is a common definition for microservices, I also have my own take on it that I’d like to share with you.
A microservice is what it sounds like, right? At a high level it is an application developed with a service-based architecture that allows a team or several teams of developers focus on building services to define a application.
The “official” definition from Wikipedia is a bit longer:
Microservices
From Wikipedia, the free encyclopedia
“A microservice is a software development technique—a variant of the service-oriented architecture (SOA) architectural style that structures an application as a collection of loosely coupled services. In a microservices architecture, services are fine-grained and the protocols are lightweight. The benefit of decomposing an application into different smaller services is that it improves modularity and makes the application easier to understand, develop, and test and more resilient to architecture erosion.[1] It parallelizes development by enabling small autonomous teams to develop, deploy and scale their respective services independently.[2] It also allows the architecture of an individual service to emerge through continuous refactoring.[3] Microservices-based architectures enable continuous delivery and deployment.”
Why would one do this? Scale, and Agility come to mind. Both topics hot on the minds of a lot of CIO’s and businesses in today’s competitive market. Before we dive in, we likely should cover what we know on the subject SDN or Software Defined Networking.
To me SDN refers concept of having software define the networking both from a control and data plane standpoint. Often even allowing some ability to be hardware independent or at least have several options to choose from.
Let’s review with Wikipedia.
“Software-defined networking (SDN) technology is an approach to cloud computing that facilitates network management and enables programmatically efficient network configuration in order to improve network performance and monitoring. SDN is meant to address the fact that the static architecture of traditional networks is decentralized and complex while current networks require more flexibility and easy troubleshooting. SDN suggests to centralize network intelligence in one network component by disassociating the forwarding process of network packets (data plane) from the routing process (control plane). The control plane consists of one or more controllers which are considered as the brain of SDN network where the whole intelligence is incorporated. However, the intelligence centralization has its own drawbacks when it comes to security, scalability and elasticity and this is the main issue of SDN.”
Source https://en.m.wikipedia.org/wiki/Software-defined_networking
You get the idea. Decentralization is a big topic. Overall keep in mind that SDN it is the separation of the control plane and data plane in a networking device.
On to today’s subject: Unified SDN for Microservices.
Deepak breaks down the differences between a Monolithic architecture and a Microservices architecture.
I agree with the demand for customers wanting integration with the existing infrastructure. And the monitoring of things like security and diagnostics are challenging in any environment, and more so at scale with a high number of objects. If you think it’s hard to secure your infrastructure today with a few thousand VMs, imagine trying to secure each individual process in those VMs. Because every process has the potential to be a containerized microservice.
I agree having a standard to allow for an open network control would be beneficial. If you are trying to integrate services across a data center or across multiple data centers or clouds you need to have an open standard for control. If you are focused on the software level you can’t worry about how one vendor’s devices are going to talk to another vendor’s software.
Microsoft, in this example, has done a good job of allowing controllers on communication and behave as one via a VM plugin to allow both containers and VM’s to feel like they are in one network so to speak. Having this seamlessness across platforms would be nice. This is one of the huge advantages of cloud computing in this area. Because of their need for delegated control of services to allow software to scale massively, they’ve solved problems that other companies have never even thought about.
I agree that layer 3/4 SDN seems to have been more successful at providing capabilities around routing and load balancing with appliances. Although part of me wonders if it was just the nature of what the providers had to focus on first to make the product successful. A service mesh looks to extend the work done by layer 3 / 4 SDN and make it scale to the level that microservice platforms will need.
As Deepak states in this slide, I agree that customers have a need of both. Having the higher speed of Layer 3 / 4 and more CPU intensive functionality of layer 7 with the benefits of logging and diagnostics. Because microservices are agnostic of the network, there is still a need for both of these in modern network architectures to ensure that every user gets the performance they need.
So is a Unified SDN for Microservices a Reality or a Fantasy?
I think it’s a good idea to take a look at what the cloud providers have done, along with products like VMware NSX to give you an idea that the existence of an SDN standard is needed. I think that I would allow further development of SDN as a whole and a higher adaption of Microservices in enterprise’s if there was a standard that would allow for existing infrastructure to be integrated at a higher level. My mind also goes to hybrid cloud adoption as well, knowing that one could have seamless communication between your existing VM Environment and a green field container build out on a public cloud for example.
Will it become reality? Time will tell. I think that it is good that customers are asking for things like integration with existing infrastructure. What do you think? Will SDN be the next big thing companies adopt in 2019?