Brussels / 31 January & 1 February 2015


Go at CoreOS

This session will discuss using Go to build products that make distributed computing as stress-free as installing a Linux distribution.

At CoreOS, we chose to write everything in Go at a time when Python was the language of choice for Linux distributions. It had been almost 10 years since a new Linux distro was created. With the entrance of the cloud era, moving deeply into distributed computing based on Linux containers and multi-core machines, we needed a language that would allow our developers to iterate rapidly and create self-contained components that were not tangled in a web of software dependencies on the operating system. Go was the clear choice because it would enable us to build applications quickly and produce standalone binaries.

With thousands of hours of Go experience, this session will dive into the trenches on Go at CoreOS. It will explore four major projects written in Go: etcd, fleet, rocket and flannel. Attendees will learn tips and tricks for using Go for building and shipping products. Learn the ways Go enables CoreOS to build simple tools to solve a large variety of infrastructure automation tasks, and create high performance components for distributed systems.

This talk will cover some of the major projects written in Go at CoreOS, including etcd, fleet, rocket and flannel. etcd is a highly-available key value store for shared configuration and service discovery, that can be used as a lock service (e.g. for leader election) or for distributed configuration. etcd uses the Go standard library extensively, and the session will detail how we used Go to make our raft implementation lightweight and easy to navigate. Fleet is a distributed init system that extends systemd to the cluster level. The session will explore how fleet uses Go to provide both event-driven and reconcilation-based orchestration of units in a cluster. Rocket is a new container runtime and the first implementation of the appc specification. Developing in Go allowed Rocket to go from concept to functional product in a rapid timeframe. Finally, flannel is an etcd-backed overlay network fabric for Linux containers. Flannel leverages Go’s ability to seamlessly integrate with C code, to provide maximal performance in critical paths but retain the safety of higher level abstractions and ability to leverage existing Go libraries.


Photo of Jonathan Boulle Jonathan Boulle