Practical Development of Distributed Systems with Go
Distributed computing has a lot of moving parts. In this workshop, we will start by examining some core components at the base of the stack. Starting with network protocols such as tcp and http. We will then move into data communication formats such as TLV, JSON, and Protocol buffers. Moving on from the basics we will examine distributed concepts. We will cover the implementation and design requirements for gossip and consensus protocols such as MemberList and Raft. We will also talk about existing solutions that use these types of protocols. This is a very hands on workshop, so be ready to break out your laptops and learn the building blocks of concepts such as gRPC, Raft, and more.
What you’ll learn - and how you can apply it
- Popular frameworks, toolkits, and libraries and their key features
- How to communicate between applications
- Common data formats to communicate between applications
- Why Distributed Systems
- CAP Theorem
- Gossip Protocols
- Data Communication Protocols
- TLV (Type Length Value)
- Protocol Buffers (protobuff)
- Building Consensus from Existing Libraries
- HashiCorp Raft
- Design Considerations - How many nodes?
- Common mistakes
- Code Review
- Reading from a non-leader
- Etcd Raft
- Using Etcd and Consul for distributed consensus
This training course is for you because
- You are an intermediate or advanced Go developer who needs to build applications that coordinate and communicate with each other.
- Your project is ready to grow beyond a single instance and you need to learn the fundamentals of distributed application development.
- You are ready to improve your Go skill level by expanding into multi-server and multi-datacenter computing.
- You should already know how to create and compile a Go library or application.
- You should have a basic understanding of simple networking concepts.
Materials or Downloads needed in Advance
- A Go compiler, configured to work on your computer
- Your favorite code editor