4 Reasons Why Microservices Matter to Telcos

Microservices are a foundational concept in cloud native software design. Entire books have been written on the topic, so they’re a big deal for anyone who develops software and not just in the realm of telcos implementing network virtualization. However, seeing as I’m not paid to write about just anyone, this short post explains why they matter to network operators.

devops-microservices-graphic

Microservices refers to 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 highly decoupled and focus on doing a single small task well, facilitating a modular approach to system-building.

what-are-microservices

 Source: What are Microservices

Most of the Web-scale players are strongly bought into microservices, none more so than Netflix. Following a disastrous outage in 2008, Netflix started transitioning away from a single monolithic Web application, and has now deployed in excess of 500 microservices to support their Web presence and business operations. Netflix has blogged extensively about its microservices journey, and it’s essential reading for anyone wanting to understand this approach to system design.

How do Microservices Benefit Network Operators?

The world’s Web-scale giants are convinced, but what’s in it for telcos? Developing applications using a microservices methodology not only enables the adoption of DevOps approaches but also effectively eliminates the deployment inefficiencies that result when scaling services. Furthermore, unlike its monolithic predecessor, microservices development principles make it far easier to incrementally upgrade when new technologies emerge.

Microservices are also deployed and scale in a much leaner fashion than classic, monolithic applications. Each instance of a microservice can be installed on-demand within its own lightweight Linux container. When service load increases, only the distinct elements (microservices) requiring additional processing capability need be added to the overall system. Compared to typical scale-up approaches, this scale-out model significantly reduces the compute overheads and stranded (unused or unusable) compute capacity.

Here are the main benefits:

1. Composability and reusability

Microservices encourages the development of modular software components, each of which performs a very specific task that is exposed via an open and well-documented API. Components built this way lend themselves to easy re-use in a variety of different circumstances, enabling applications to be “composed” by combining a suitable set of microservices glued together by a lightweight front end.

2. Technology heterogeneity 

Microservices enables development teams to pick the best software technology and language for the implementation of any given application component, without worrying about the rest of the system. Components are loosely-coupled, typically via HTTP or messaging APIs, and this hides their implementation details.

3. Efficient scaling

Each microservice can be designed to scale out independently of other microservices associated with a given application, which typically means we get more efficient use of resources than with monolithic applications where all functions have to scale in lockstep.

4. Ease of development and deployment

It’s possible to make incremental enhancements to individual microservices and deploy these to production independently of other microservices. If any problems arise from the new version of a given microservices component, the change can quickly be rolled back. This allows for a DevOps approach to the progressive enhancement of an overall application, enabling innovations to be introduced much more rapidly than with monolithic applications which inevitably accumulate many changes between releases, requiring far more comprehensive testing.

The microservices approach is not a panacea. Highly distributed, loosely coupled systems bring their own complications, and the complexity of a large application does not disappear just because it is reduced to a set of relatively simple components. 

For more on microservices and cloud native network functions (CNFs), please download our recent white paper.