O'Reilly logo
live online training icon Live Online training

Go Services

William Kennedy

This course gives you insight into building services using Go. Bill will write a production-level chat server from scratch during the course. You will get a foundation for the Go programming language and learn about best practices and common pitfalls when writing your own services.

What you'll learn-and how you can apply it

As Bill codes a chat server from scratch, he will talk about what he is doing and thinking as it relates to the project and Go. He will explore several topics including:

  • Writing Production Level Code
  • Value/Pointer Semantics
  • Package Oriented Design
  • Configuration/Logging
  • Error Handling
  • Code Structure
  • Idioms and Best Practices
  • Profiling

When Bill is done, you will have a good idea how to start and approach your next Go project. He will make mistakes and discoveries along the way.

This training course is for you because...

  • You are an intermediate developer looking to learn more about Go services.
  • You are a developer struggling to write services in Go.
  • You are a developer who wants to learn new strategies and idioms for building services in Go.


  • Basic knowledge of Go

Materials, downloads, or Supplemental Content needed in advance:

  • Download and install the latest version of Go.
  • Download and install an editor with Go plugins.

Recommended Preparation:

Ultimate Go Programming LiveLessons (video)

https://github.com/ardanlabs/gotraining#before-you-come-to-class (Course GitHub Repository)

Going GO Programming (Instructor website)

About your instructor

  • William Kennedy is a managing partner at Ardan Studio in Miami, Florida, a mobile, web, and systems development company. He is also a co-author of the book Go in Action, the author of the blog GoingGo.Net, and a founding member of GoBridge which is working to increase Go adoption through diversity.


The timeframes are only estimates and may vary according to how the class is progressing


Introductions (15min):

  • What do you hope to get out of this class?
  • Material to review
  • What we are going to build

Setting Up the Project (30min)

  • Project Structure and Repo
  • Project Oriented Design
  • Understanding the Structure

Break (15min)

TCP Package (30min)

  • Package Review
  • Proof of Concept Test Code

Break (15min)

Chat Server Design (30min)

  • Identify Architecture and Design
  • Identify Needed Packages

Break (15min)

Logging, Configuration and Error Handling (30min)

  • Place in Logging and Philosophy
  • Place in Configuration and Philosophy
  • Set Error-Handling Standards


Day 1 Review (15min)

Implement Protocol (30min)

  • Communication Protocol
  • Tests

Break (15min)

Implement Client (30min)

  • Cli Tool for Chat Client

Break (15min)

Multi Chat Server Support (30min)

  • Introduce NATS
  • Proof of Concept Test Code
  • Add Support to Handle Multi Servers
  • Test Redundancy

Break (15min)

Load Testing (30min)

  • Enhance Client for Load Testing