We write our backends on Go. We collect code metrics and balance requests for shards. Encrypt RPC. We communicate with Monga. Over the year, a stack of proven libraries has been formed. For example, goagain saved a lot of time and debugging after a client’s internal RPC crash.
We share a selection of libraries, tested and working in battle. github.com/rcrowley/goagain Restart HTTP or RPC server without disconnecting clients.
github.com/cheggaaa/pb Console progress bar. Supports Reader and Writer interfaces. ')
github.com/rcrowley/go-metrics Metrics in the code. Counters, Percentiles, Histograms. Beautifully dumped into the console and can add to Graphite and InfluxDB
github.com/golang/glog Logger Google Log Port. You can set the level of detail (verbosity). More detail is filtered by module.
github.com/bitly/go-hostpool Balancer any resources with feedback. We use for slower pessimization of lag shards. The basis of the algorithm is the Multi-armed Bandit.