Strange Loop

Patterns for scalable web services in Go

When Go landed in November 2009 I was fairly quick to dismiss it. I have repented and over the last year have done a lot with this language that is so much more than a better C, a worse Python, or a faster Python. In this talk I'll introduce features, standard library packages, and third-party packages that I use together to build scalable web services in Go.

This talk will start by catching everyone up on the Go standard library's HTTP packages, their strengths, and their weaknesses. Then we'll add third-party packages to short up these weaknesses. We'll talk about JSON and its relationship with Go data structures, learn about Go's excellent support for reflection and how we can use it and the Go compiler to create safe APIs.

Finally we'll ready our web service for production by discussing testing, deploying and restarting, logging, metric collection, and TLS. The combination of these packages and patterns produces battle-ready web services you'll be happy to put into production.

Richard Crowley

Richard Crowley


Richard keeps the servers happy at Betable. He's something of a polyglot, working frequently in C, Go, Java, JavaScript, Puppet, Python, Ruby, and shell. He's the creator of the Blueprint configuration management tool, a contributor to Puppet, and previously worked at OpenDNS and Flickr. He's passionate about engineering tools and practice and thinks vi is a better religion than emacs.