Understand Kubernetes and other orchestration systems deeply by building your own using Go and the Docker API.
In Build an Orchestrator in Go (From Scratch) you will learn how to:
Identify the components that make up any orchestration system
Schedule containers on to worker nodes
Start and stop containers using the Docker API
Manage a cluster of worker nodes using a simple API
Work with algorithms taken from cutting-edge Google Borg research papers
Demystify orchestration systems like Kubernetes and Nomad
Orchestration systems like Kubernetes coordinate other software subsystems and services to create a complete organized system. Although orchestration tools have a reputation for complexity, they’re designed around few important patterns that apply across many aspects of software development. Build an Orchestrator in Go (From Scratch) reveals the inner workings of orchestration frameworks by guiding you as you design and implement your own using the Go SDK. As you create your own orchestration framework, you’ll improve your understanding of Kubernetes and its role in distributed system design. You’ll also build the skills required to design custom orchestration solutions for those times when an out-of-the-box solution isn’t a good fit.
about the technology
Orchestration systems provide the management framework for software and infrastructure that’s distributed across multiple machines and services. By managing the many individual components and containers in a large application, they ensure web apps are resilient and reliable, automatically switching between resources in response to crashes and outages. A properly designed orchestration system can seamlessly scale to handle traffic loads, and reduce time-consuming manual work for sysadmin and site reliability engineers.
about the book
Build an Orchestrator in Go (From Scratch) teaches you to implement an orchestrator from scratch. You’ll discover the components that make up all orchestration systems, and use the Docker API and Go SDK to build layers of functionality from tasks, to workers, to the manager. Learn how to save on costs by maximising the usage of a cluster, or spread tasks among workers to avoid overload and downtime. Once you’ve built your working system, you’ll even implement a command line user interface to easily manage your orchestrator.
about the reader
For software engineers, operations professionals, and SREs who are familiar with Docker and the basics of Go.
about the author
Tim Boring is a staff engineer at Golioth. He has twenty years of experience in technology organizations ranging from small business to global enterprises. His career spans roles in technical support to site reliability and software engineering. Tim is most interested in the design of software systems and distributed systems in particular.