This page may be out of date. Submit any pending changes before refreshing this page.
Hide this message.
Quora uses cookies to improve your experience. Read more
Aaron Schlesinger
Aaron Schlesinger, Creator of Go In 5 Minutes (https://www.goin5minutes.com/), long-time Gopher

Distributed systems involve a diverse set of skills, and they themselves involve a very diverse set of concepts. Almost all of them do, however, have several concepts in common.

I'll briefly talk about 3 here:

  • Concurrency
  • Network communication
  • Failure

Go has powerful concurrency featured built right into the language. Once you’ve learned the language (if you haven’t yet, I highly recommend the Tour of Go), I highly recommend you get familiar with the “big 3” concurrency features:

  • Goroutines
  • Channels
  • The select statement

After you do, get familiar with some of the concurrency patterns around them:

  • Timing out
  • Recovering from failed Goroutines
  • Fan-in/Fan-out
  • Workers
  • Request/Response

Once you’re familiar, you’ll have the conceptual tools to write efficient and correct concurrent programs that can deal with failures.

The last piece is network communication. You’ll probably have to communicate via HTTP, so I highly recommend looking at Go’s net/http library. Write a few simple programs that communicate with an HTTP API (the Github API is a great one to learn with), and a few others that implement an HTTP server (you could, for example, create your own HTTP API).

You’ll need both skill-sets to write distributed systems that communicate via HTTP. And, if you’re interested in going the “extra mile”, check out gRPC for more structured and efficient RPC-style network communication.

Finally, I am the creator of Go In 5 Minutes, and have quite a few screencasts that cover concurrency, HTTP and dealing with failure. I encourage you to check out the list of screencasts (all free) to sharpen your skills.

About the Author

Aaron Schlesinger

Aaron Schlesinger

Software Architect, Gopher
Works at Engine Yard
Studied at University of Michigan
Lives in San Francisco
102.8k answer views983 this month