Distributed Services with Go
by Travis Jeffery
--
Table of Contents
- How JSON over HTTP Services Fits into Distributed Systems
- Set Up the Project
- Build a Commit Log Prototype
- Build a JSON over HTTP Server
- Run Your Server
- Test Your API
- What You Learned
2. Structure Data with Protocol Buffers
- Why Use Protocol Buffers?
- Install the Protocol Buffer Compiler
- Define Your Domain Types as Protocol Buffers
- Compile Protocol Buffers
- Work with the Generated Code
- What You Learned
- What Is gRPC?
- Goals When Building a Service
- Define a gRPC Service
- Compile with the gRPC Plugin
- Implement a gRPC Server
- Register Your Server
- Test a gRPC Server and Client
- What You Learned
- Secure Services in Three Steps
- Authenticate the Server with TLS
- Authenticate the Client with Mutual TLS Authentication
- Authorize with Access Control Lists
- What You Learned
7. Server-to-Server Service Discovery
- Why Use Service Discovery?
- Embed Service Discovery
- Discover Services with Serf
- Request Discovered Services and Replicate Logs
- Test Discovery and the Service End-to-End
- What You Learned
8. Coordinate Your Services with Consensus
- What Is Raft and How Does It Work?
- Implement Raft in Our Service
- Multiplex to Run Multiple Services on One Port
- What You Learned
9. Discover Servers and Load Balance from the Client
- Three Load-Balancing Strategies
- Load Balance on the Client in gRPC
- Make Servers Discoverable
- Resolve the Servers
- Route and Balance Requests with Pickers
- Test Discovery and Balancing End-to-End
- What You Learned
- Part IV. Deploy
10. Deploy Applications with Kubernetes Locally
- What Is Kubernetes?
- Install kubectl
- Use Kind for Local Development and Continuous Integration
- Write an Agent Command-Line Interface
- Build Your Docker Image
- Configure and Deploy Your Service with Helm
- Advertise Raft on the Fully Qualified Domain Name
- What You Learned
11. Deploy Applications with Kubernetes to the Cloud
- Create a Google Kubernetes Engine Cluster
- Create Custom Controllers with Metacontroller
- Deploy to the Internet
- What You Learned
Copyright © 2021, The Pragmatic Bookshelf.
Distributed Services with Go by Travis Jeffery can be purchased in other book formats directly from the Pragmatic Programmers. If you notice a code error or formatting mistake, please let us know here so that we can fix it.