We think Go is awesome! A year ago we started looking into Go as a potential language to standardize our backend around. Since then we've been looking for every excuse to rewrite some of our services in Go.
The first publicly visible service we've rewritten is our new web console. Using Go, we were able to dramatically decrease load and connection times from seconds to milliseconds. Aside from the immediate benefits, the console is also much more reliable and scalable.
What benefits did we get from using Go?
Goroutines made it easy to duplex the tcp and websocket connections, allowing us to dramatically improve the speed of the entire service.
Interfaces allowed us to build end to end testing, ensuring future updates are easier to ship and bugs can be fixed quickly.
Go's built in net/http package means we are able to do live deploys and keep on-going development invisible to users. In fact, the three or four times that we have deployed code to the console since we switched to the new version were done with no interruptions or customer tickets being opened.
Go's package system makes sharing code incredibly easy. That means we can share the code developed for the new console between projects seamlessly.
The more services that we rewrite in Go, the more we fall in love with the language and the more we feel it complements the development of distributed systems.
Oh, by the way. If you're a software engineer that's interested in writing Go -- we are hiring.