Please come see me at MongoDB World. It's in New York on June 28 and 29. I'll give you 25% off, I just need to talk to you.
You see, for four years, I've had this guilt hanging over me. It goes back to a winter afternoon in early 2012, when I met a MongoDB customer who was very angry. He'd come to our regular "MongoDB Office Hours" at our old spot in Soho, and he had one question: "When a MongoDB driver handles a network error, what should my code do?" He demanded to know why I didn't have a simple answer for him.
I'd been working for MongoDB just a few months. This guy, I'll call him Ian, was upset, and I couldn't help him. My guilt has pressed the memory of that day in my brain. I can still see Ian's face, haggard as if he'd been up all night worrying about network errors. We were sitting in a little windowless room, the only free room we could talk in at our little office. We sat side by side on the edge of the table, because the room had no chairs.
I told him there's no single solution that applies to the diverse applications and features people build on MongoDB, and no one approach to all kinds of errors. This did not go over well.
In the years since, I've worked to answer Ian. First, I wrote the Server Discovery and Monitoring Spec, which all our drivers have now implemented. The spec vastly improves drivers' robustness in the face of network errors and server failovers. Complaints like Ian's are rarer now, because drivers throw exceptions more rarely. But still: how would I answer him, if he came into our new office in Times Square today? What's a smart strategy for writing a resilient MongoDB application?
On June 28 in New York, I'm going to answer him. I'm going to talk about a solution four years in the making, which combines the latest driver technology with a wise approach to making MongoDB operations idempotent.
Ian, if you're out there: Come to MongoDB World. We need to talk. I'll give you 25% off the ticket price, my discount code is "jessedavis." Anyone can use it, even if you aren't Ian:
I hope to see you there. I owe you.