It’s always important to use the right tool. I grew up working on small outboard engines with my father and learned this lesson the hard way. I only had to strip a bolt once to realize that using the almost-right tool could result in a mistake that took hours to correct. At Mixpanel, we try to use the right tools to allow us to move quickly, and with confidence. One great example of this is how we used Diffy to check against live production traffic when migrating our ingestion API from Python to Golang.

A few years ago, we decided that Golang was the best tradeoff of readability and performance for our critical infrastructure services. In order to realize the gains and maintain a homogenous code base, this meant we had to migrate the existing performance-critical Python services. Since then, almost all of our existing critical infrastructure has been migrated to Golang, with the glaring exception of our data collection API. The main reason for this, honestly, is summed up by the cliché adage, “if it ain’t broke, don’t fix it”. The data collection API, where all incoming data is first processed, is one of the most critical services at Mixpanel. Downtime can result in lost data, increased latency can ruin user experiences, and incorrectness can cause permanent data corruption. The risk of migrating to brand-new code, in a completely different language, outweighed the potential benefits. …

Evan Noon