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
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.
Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.
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.
Note, this review refers to the MEAP version of the book. Some of the issues mentioned may be corrected in the final print version.
Build an Orchestrator in Go walks you through a project where you build a relatively simple orchestrator in Go. The project is enjoyable enough, but within the MEAP version of the book there are a number of places where the book references methods or types which have never been previously introduced. While this is not a major issue, it does cause some minor frustrations and detracts from the enjoyment of going through the project.
Additionally, the method of collecting stats assumes that you are using a Linux machine, which means there was a whole chapter and half of the book where non-Linux users essentially just have to skip over. I think this is a slightly bigger issue which probably deserves some attention.
Additionally, some of the polishing of the project (Cobra command line/bolt persistence layer) towards the end of the book seemed needlessly repetitive without introducing any new features, and is something which could have been left to readers to do should they have been interested in expanding the projects functionality.
Enjoyable, simple guide on building your own orchestrator. What I missed was more focus on failure scenarios. They were mentioned only briefly and I'd love a chapter or two about mitigating failures. One thing worth noting: don't get discouraged if you don't have Linux at hand. It's mentioned several times in prerequisites, but you're not really losing much if you proceed without it. You'll need to mock it when you get to the E-PVM scheduler, but that's about it. Still worth it if you're on Windows/Mac.