Container Orchestration and Software Defined Network: A Field Report by Sargun Dhillon


By Erlang Central | Published: September 30, 2016



Slides and more info: http://www.erlang-factory.com/euc2016/sargun-dhillon

Microservices, distributed systems, and containers are becoming the norm. With this, orchestration software, such as K8s, and Mesos are becoming more and more relevant to the computing ecosystem in the datacenter today. These systems become the under crust of our operational environment. We build such a system on top of Mesos, named DC/OS. Back in mid-2015, the company realized that they needed to build a networking layer that was on par with other competitors in the market. With a small team of two people, we were tasked with building and maintaining a set of distributed systems to support DC/OS’s network subsystem. We decided to turn to Erlang because of the healthy ecosystem and focus on reliability. Not only did we build the individual services, we also built a shared control plane, Lashup. In this talk, we’ll cover how we were able to leverage off the shelf tools available to the Erlang community such as CRDTs, property checking, distributed erlang, and datastores to build a system that provides membership, failure detection, multicast, and acts as an eventually consistent datastore. We’ll also talk about how we used this library to build a load balancer, distributed DNS server, and overlay while maintaining a high standard of reliability. A persistent theme throughout the talk will be about the implicit business value that Erlang is able to drive with minimal effort due to its nature from deployment to supportability.

Talk objectives:

* Discuss the benefits of decentralized, eventually consistent vs. centralized strongly consistent distributed systems for container orchestration

* Discuss property checking, and testing practical software inside of the data center.

* Discuss the operational excellence of Erlang in practical systems. Often times Erlang is thrown around as this magical system that’s easy to operate and run at scale. There are a lot of myths around what can be done, but there are some practical pieces of knowledge that should be applied in real life.

* Evangelize our libraries, and control plane that we’ve built in order to enable the rapid evolution of our Erlang stack.