About Microservices, Containers and their Underestimated Impact on Network Performance

24 Mar 2015 , first release: 16 Mar 2015 Nice, luke chan / flickr.com, Licence: CC BY-NC-SA 2.0



Microservices are used to build complex applications composed of small, independent and highly decoupled processes. Recently, microservices are often mentioned in one breath with container technologies like Docker. That is why operating system virtualization experiences a renaissance in cloud computing. These approaches shall provide horizontally scalable, easily deployable systems and a high-performance alternative to hypervisors. Nevertheless, performance impacts of containers on top of hypervisors are hardly investigated. Furthermore, microservice frameworks often come along with software defined networks. This contribution presents benchmark results to quantify the impacts of container, software defined networking and encryption on network performance. Even containers, although postulated to be lightweight, show a noteworthy impact to network performance. These impacts can be minimized on several system layers. Some design recommendations for cloud deployed systems following the microservice architecture pattern are derived.



A Docker container providing a MySQL database containing measurement data and analytical views of presented experiments is provided as well as a github repository. Run it by installing Docker and launch the following commands:

docker build -t sdvn github.com/nkratzke/sdvn-impact-database
docker run -d -p 3306:3306 sdvn

How to access this database is described here.


The Ping Pong system was used to collect the benchmark data. You can easily install the system on any Linux system.

git clone https://github.com/nkratzke/pingpong.git
cd pingpong
sudo sh ./install.sh

This will install Dart runtime and development environment, apachebench, Docker as well as the docker overlay network weave.

It is possible to run the ping and pong service as a docker container. Therefore, you have to build a pingpong image on your ping and pong hosts, like that:

docker build -t pingpong github.com/nkratzke/pingpong

For further information please read the informations provided with the Ping Pong github repository.

Conference Impressions