SoundCloud's engineering team writes about its architecture, Go, Backbone.js, and data storage choices.
HN links it for SoundCloud's use of Go, its Backbone.js site, and its account of failing with MongoDB for statistics before choosing Cassandra.
> Apart from Google (who uses it for Youtube), Go hasn't really been used in large projects.
I don't know how large each of these projects is, but a growing number of companies are using it for serious projects:
Iron.io: How We Went from 30 Servers to 2 with Go
http://blog.iron.io/2013/03/how-we-went-from-30-servers-to-2-go.html
Behind the Scenes: Big Data at Torbit
http://torbit.com/blog/2013/02/19/big-data-at-torbit/
pool.ntp.org DNS server in Go
http://news.ntppool.org/2012/10/new-dns-server.html
Juju at Canonical
http://www.reddit.com/r/programming/comments/18atce/juju_canonical_109k_lines_of_go_code/
Go at bitly
http://word.bitly.com/post/29550171827/go-go-gadget
CloudFlare blows hole in laws of Web physics with Go and Railgun
http://arstechnica.com/information-technology/2013/02/cloudflare-blows-hole-in-laws-of-web-physics-with-go-and-railgun/
dl.google.com now served by Go
https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/BNUNbKSypE0
Go At Conformal
https://www.cyphertite.com/blog.php?/archives/7-Go-at-Conformal..html
Go at Novartis
https://plus.google.com/114945221884326152379/posts/d1SVaqkRyTL
Go at the BBC
http://www.quora.com/Go-programming-language/Is-Google-Go-ready-for-production-use/answer/Kunal-Anand
Go at SoundCloud
http://backstage.soundcloud.com/2012/07/go-at-soundcloud/
Go at CloudFlare
http://blog.cloudflare.com/go-at-cloudflare
Go at Heroku
http://blog.golang.org/2011/04/go-at-heroku.html
Building StatHat with…
Here is the content:
Go at Heroku
http://blog.golang.org/2011/04/go-at-heroku.html
Why you PHP guys should learn Golang
http://www.mikespook.com/2012/08/why-you-php-guys-should-learn-golang/
Go at CloudFlare
http://blog.cloudflare.com/go-at-cloudflare
Go at Moovweb
https://groups.google.com/forum/#!topic/golang-nuts/MeiTNnGhLg8/discussion
Go at SoundCloud
http://backstage.soundcloud.com/2012/07/go-at-soundcloud/
Go at the BBC
http://www.quora.com/Go-programming-lGetConsoleTitleanguage/Is-Google-Go-ready-for-production-use/answer/Kunal-Anand
Go at Novartis
https://plus.google.com/114945221884326152379/posts/d1SVaqkRyTL
Google I/O 2012: Go in production
http://www.youtube.com/watch?v=kKQLhGZVN4A
@derekcollison: "Prediction: Go will become the dominant language for systems work in IaaS, Orchestration, and PaaS in 24 months."
https://twitter.com/derekcollison/status/245522124666716160
@tobi: "I have now completed two projects in Go. I predict that it's going to be the dominant language for server work."
https://twitter.com/tobi/status/245873677483274240
Why I went from Python to Go (and not node.js)
http://jordanorelli.tumblr.com/post/31533769172/why-i-went-from-python-to-go-and-not-node-js
Packages/Libs
http://godashboard.appspot.com/
http://go.pkgdoc.org/
I've implemented something similar in the same manner (over-riding `new`). The original idea came from here: http://backstage.soundcloud.com/2012/06/building-the-next-soundcloud/
One implementation detail I ran into is how to detect dupes. When you have Backbone Models, this is easy: every model has an `id`. But say you want to apply this same singleton behavior to a Backbone Collection, which don't have natively have `id`s. I saw two options:
1. Assign an `id` to the collection when instantiated (could just be a string, so that you can force a singleton only when you desire it).
2. De-dupe based on `instanceof` checks. The downside here is you always get a singleton even if you might want a one-off instance of a collection.
Are there any other options? Can your Identiy Map handle collections?
Soundcloud wrote a blog post http://backstage.soundcloud.com/2011/04/failing-with-mongodb/ about the specifics of how they failed in implementing an analytics platform in MongoDB, then went with Cassandra (and why). I have been at a company where it was on developers to deploy mongo clusters, setting up logging can suck, but still there are no numbers or even application integration specifics here. As someone pointed out - manual denormilization can suck. There are options like MongoHQ and Heroku though so this shouldn't resolve to "don't try a new data store its hard and possibly buggy".
There are plenty accounts of Go in production: (Google's dl.google.com) https://groups.google.com/d/msg/golang-nuts/BNUNbKSypE0/E4qSfpx9qI8J, (CloudFlare's Railgun) http://blog.cloudflare.com/go-at-cloudflare, (Bit.ly) http://word.bitly.com/post/29550171827/go-go-gadget, (SoundCloud) http://backstage.soundcloud.com/2012/07/go-at-soundcloud/, (Disqus's realtime-backend) http://blog.disqus.com/post/51155103801/trying-out-this-go-thing, etc
dl.google.com handles all the downloads for google chrome, factory images for android, eclipse.. not exactly tiny and especially not insignificant
complex web app:
Cloudfare https://www.cloudflare.com/railgun
BBC http://www.quora.com/Go-programming-language/Is-Google-Go-ready-for-production-use/answer/Kunal-Anand
Soundcloud http://backstage.soundcloud.com/2012/07/go-at-soundcloud/