A selection of backend libraries

    We write our backends on Go. We collect code metrics and balance requests for shards.
    We encrypt RPC. We communicate with Monga. Over the year of development, a stack of proven libraries has formed.
    For example, goagain saved a ton of time and debug after breaking off internal RPC clients.

    We share a selection of libraries tested and working in battle.

    github.com/rcrowley/goagain
    Reboot an 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 code. Counters, Percentiles, Histograms. Beautifully dumps into the console and can add to Graphite and InfluxDB

    github.com/golang/glog
    Logger Port Google Log. You can set the verbosity level. More detail is filtered by module.

    labix.org/mgo The
    best driver for MongoDB.

    github.com/camlistore/lock
    Lock file. Writes a PID to a file. If there is a lock, it will check if the process has died. Supports FreeBSD, MacOS, ARM, and Plan9.

    github.com/codegangsta/cli
    Separates logic by flags and actions. Generates help and auto-completion for the console.

    godoc.org/code.google.com/p/go-uuid/uuid
    Generate a standard UUID.

    godoc.org/code.google.com/p/go.crypto/ssh High-
    grade SSH transport. Able to parse private and public key.

    github.com/kr/pretty
    Displays deep structures in readable form. A decent replacement for fmt.Printf ("% + v", ...)

    github.com/google/btree
    Google's B-Tree implementation.

    github.com/bitly/dablooms
    Bloom Filters with counters and deletion.

    github.com/bitly/go-hostpool
    Balancer of any feedback resources. We use for slow pessimization of lagging shards. At the heart of the Multi-armed Bandit algorithm.

    github.com/influxdb/influxdb
    Base for metrics. Faster than Graphite. Supports sharding and fetching ala SQL.

    godoc.org/code.google.com/p/go.crypto/nacl
    Applied fast encryption on elliptic curves.

    Also popular now: