In-Person Training

Go + Distributed Computing

Mission Bay Conference Center, San Francisco, CA

See ticket options

Course limited to 30 people. Sign up before it sells out!

As companies fight the competing requirements of high availability and time to market, distributed applications are becoming more and more popular, as are their specific refinement as microservices. The Go programming language is purpose-built for creating these kinds of applications.

Join Brian Ketelsen for a hands-on, in-depth exploration of distributed applications with Go. In this course, you’ll get a comprehensive examination of the components of a distributed application and you’ll learn how to implement them in Go.

What you’ll learn—and how you can apply it

By the end of this live, hands-on course, you’ll understand:

  • Popular frameworks and toolkits and their key features
  • How to communicate between applications

And you’ll be able to:

  • Choose the right communication patterns for your needs.
  • Create secure services that are well instrumented and easy to monitor.
  • Determine the framework and toolkits that are most appropriate for your business requirements.

This 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.
  • You should have an installation of Go on your computer and have your favorite editor or IDE configured to use Go.
  • You should have Docker configured on your laptop, and docker-compose installed (docker-compose is included in the most recent Docker for Windows and Mac OS).

About your instructor

Brian Ketelsen

Brian Ketelsen is an experienced leader of technical teams who has been writing software for various platforms since 1993. Brian’s diverse background contributes to his broad technical skills. He has held roles ranging from DBA to CIO, with a strong focus on data warehouses and distributed computing. Brian co-organizes GopherCon, the yearly conference for Go programmers held each summer in Denver. A prolific open source enthusiast, Brian has contributed to some of the largest Go projects, including Docker, Kubernetes, Etcd, SkyDNS, Kong, Go-Kit, and Goa.

Brian holds a Bachelor’s Degree in Computer Science, and helps to organize the Tampa Go Meetup. He co-wrote the Manning Press book Go in Action, and spends much of his free time fostering the Go community.

Course outline

  • Day One
  • Distributed communication
    • Course agenda
    • Student introductions
    • Various ways you can communicate between applications
    • Options for transport mechanisms and encoding data
  • Architecture
    • Choosing boundaries between your applications
    • Architectural patterns:
      • – Monolithic architecture
      • – Three-tiered architecture
      • – Request/response services
      • – Nearline and offline services
      • – Synchronous and asynchronous services
      • – Database per service
  • Contexts
    • Go’s Context package
    • Cancellation
    • Timeouts
    • Embedding metadata in a request
    • Reading metadata from a response
  • Service and peer discovery
    • Static configuration
    • Dynamically generated static configuration
    • Multicast DNS
    • Service registries
    • Hybrid
  • Security, authentication, and authorization
    • Securing your applications
    • Ensuring valid communications between systems
    • Transport security
    • Authentication
    • Authorization
    • Reducing the cost of security with tokens and claims
  • Consensus
    • Sharing a common state across systems
    • Agreeing on changes across systems
    • Distributed consensus
    • Raft, Paxos, Zab
    • Building your own consensus using Go libraries
    • Using Etcd and Consul for distributed consensus
  • Day Two
  • Monitoring, metrics, and logging
    • Determining what applications do while they run.
    • Metrics
    • Logging
    • Health checks
    • Combining instrumentation with spans
  • Distributed tracing
    • End-to-end visibility into distributed applications
    • Tying distributed requests together
    • Generating unique request identifiers
    • Building a distributed trace service
    • OpenTracing
    • LightStep, Appdash, Zipkin
  • Offline and nearline processing
    • Creating services that process data outside the application request/response flow
    • Nearline and offline processing
    • Queues and communication options
    • Nearline asynchronous processing
    • Offline processing
    • Helpful Go tools and libraries
  • Frameworks and toolkits
    • When to use a framework
    • Toolkits and frameworks available for distributed applications
    • go-kit
    • micro
    • gizmo
    • goa
  • Deployment
    • Popular options for deploying distributed applications
    • Kubernetes
    • Mesos/Marathon
    • Docker Swarm
    • CoreOS/Fleet


The course will be held at: Mission Bay Conference Center at UCSF, 1675 Owens Street, San Francisco, California

Lunch will be provided.

Travel discounts

Rental Car Discounts


If you need a rental car while attending the conference, you may go to the Hertz Interactive Reservation System to receive the special O’Reilly discount on rental cars for the conference. Or call Hertz Reservations at (800) 654-3131 and mention code #01XY0041.

United Airline Discount


To receive your 3%–10% Discount on United Airlines flights to our event, you can book online at and provide discount Code ZVUR591372. Or, for a $25 service fee you can call United Meetings at (800) 426-1122 where a ticketing agent can help you by phone.

Group tickets

Working as a team? Learn as a team.

Taking this course as a team ensures that everyone is on the same page and understands both the immediate and long-term and immediate goals of your project. Exploring new ideas and collaborating on exercises together is a great team-building experience; everyone on your team will have the opportunity to ask questions, discuss use cases, and learn from other participants.

For group tickets and enterprise licensing, please contact

Code of Conduct

All participants must follow our Code of Conduct, the core of which is this: an O’Reilly events should be a safe and productive environment for everyone. Read more

O’Reilly Media, Inc. assumes no responsibility or liability for the facilities or services provided by the vendors and suppliers. Anyone attending this event releases O’Reilly from any and all claims that may arise out of attending at this event.

Thanks for signing up!
We protect your privacy.
Thanks for signing up!
We protect your privacy.