Ruby madness

Highly recommended blog post: How We Moved Our API From Ruby to Go and Saved Our Sanity

Some excerpts (emphasis added):

A year and a half in, at the end of 2012, we had 200 API servers running on m1.xlarge instance types with 24 unicorn workers per instance. This was to serve 3000 requests per second for 60,000 mobile apps. It took 20 minutes to do a full deploy or rollback, and we had to do a bunch of complicated load balancer shuffling and pre-warming to prevent the API from being impacted during a deploy.

After rewriting the EventMachine push backend to Go we went from 250k connections per node to 1.5 million connections per node without even touching things like kernel tuning.

Was the rewrite worth it? Hell yes it was. Our reliability improved by an order of magnitude.

We could downsize our provisioned API server pool by about 90%

As if that weren’t enough, the time it takes to run our full integration test suite dropped from 25 minutes to 2 minutes, and the time to do a full API server deploy with rolling restarts dropped from 30 minutes to 3 minutes.

If you are wondering what where technology can take you where just have a look at the techempower benchmarks


Now read this

Premature optimization

Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are... Continue →