Metaswitch Proves Its Microservices Mettle

As more communications service providers (CSPs) gain experience with network virtualization, they have found that legacy software has serious limitations in cloud environments. There is growing recognition that if network software is to run efficiently in the cloud, then it needs to be designed for the cloud. As you might expect, we couldn’t agree more. This is what being cloud native is all about.


Metaswitch understood early on that the key architectural principle of cloud native software design is microservices. This is the design methodology used by Web-scale companies like Amazon, Google and Netflix, and it provides the foundation for rapid innovation and agile development environments. For CSPs, microservices are the key to fully realizing the benefits of Network Functions Virtualization (NFV) – from fast service innovation to operational cost savings.

When we built our virtualized Clearwater Core IMS solution years ago, we started from scratch and employed a microservices approach. Clearwater was the first and remains one of the very few truly cloud native Virtual Network Functions (VNFs) that are available for deployment today.

Metaswitch has a better understanding than most in the telecom sector about the capabilities, challenges and advantages of microservices because we’ve actually adopted the architecture in our software. So if you’re new to the topic or just need to brush up on the latest developments, here is some our required reading:

What are Microservices?

“Microservices are small, reusable software components that are developed and deployed independently but interwork and operate in unison to form a complete application. Architecting an application using microservices methodologies is a modern alternative to creating a monolithic piece of code to deliver an application.”

Why Microservices Matter

Microservices allow CSPs to innovate more rapidly and be more agile. Software engineers can deliver better code more quickly, because they can focus on optimizing one element of an application without impacting other components. Microservices-based applications are deployed and scale in a leaner way than monolithic applications, which results in faster, on-demand and resilient implementations. Also, microservices methodologies enable CSPs to adopt a continuous development (DevOps) approach to software development. Individual components can be enhanced in isolation, tested, and then deployed in the production environment without the risk of affecting services.

Breaking It All Down

Admittedly, microservices is not the easiest of subjects to digest but we’ve got you covered here too with some detailed explanations and memorable analogies (plus some of the best headlines seen on our blog):

Talking the Same Language

Never ones to rest on our accomplishments, we’re always working on what’s next in communications software development and that includes adopting the best programming language for our developers to work with. We’re fluent in many programming languages from C and C++ to Python, and several others in between, but wanted to use just one primary language as we evolved and enhanced our product portfolio. We recently decided on Rust because it’s efficient, robust and productive. We also use Swagger to specify the APIs between the microservices that make up our communication software products. Our Swagger Rust code generator, which generates both the client and the server, was recently accepted upstream so that others in the open source community can deploy it. Rust code using our Swagger code generator is already in production at some of our customers.

For more on the importance of microservices to network virtualization, CTO Martin Taylor’s definitive white paper, The Application of Cloud Native Design Principles to Network Functions Virtualization, is a must-read.