Success: From Opening a Champagne Bottle To Hiding Under the Bed with Said Bottle
During the RavenDB courses* in the past few weeks, I was talking with one of the attendees and I came up with what I think is a great analogy.
* Yes, courses, in the past 4 weeks, I’ve given the RavenDB course 3 times. That probably explains why I don’t remember which course it was.
What are your success metrics? From Opening a Champagne Bottle To Hiding Under the Bed with Said Bottle?
The first success metric is when you have enough users (and, presumably, revenue) to cross the threshold to the Big Boys League. Let us call this the 25,000 users range. That is the moment when you throw a party, go to the store and grab a whole case of champagne bottles and make fancy speeches. Of course, the problem with success is that you can have too much of it. A system that does just fine (maybe creeks a little ) on a 25,000 users is going to behave pretty differently when you have 100,000 users. That is the moment when you find your engineers under the bed, with a half empty bottle of champagne and muttering things about Out Of Capacity errors and refusing to come out until we fire all the users.
In just about any system, you need to define the success points. Because Twitter was very luck that it managed to grow even though it had so many problems when its user base exploded. It is far more likely that users will figure out that your service is… well, your engineers are drunk and hiding under the bed, so the service looks accordingly.
And yes, you can try to talk to people about SLA, and metrics and capacities. But I have found that an image like that tend to give you a lot more focused answers. Even if a lot of the time the answer is “I don’t know”. That is a place to start, because this make it a lot more acute than just “how many req/sec do we need to support?”.
Comments
I'm not really sure what this post was about, you might want to consider rewriting some of it. Especially what appears to be the conclusion(?)
@Chris: Well, he did start talking about bottles and drinking ...
From what I've understood the post is about having some success, so that you're happy and the users are happy, to having too much success, to fast, so that the infrastructure or team can't handle so much success, to the point where you hide under the cover with the celebratory bottle of champagne, until you find the strength to handle the success, or it becomes more manageable. Is this correct?
I think the point is to introduce some helpful imagery when trying to define SLA requirements. When I ask "how many req/sec do we need to support?", I have never EVER gotten a straight answer. The customers always just say "I don't" know". If instead, I phrase it in terms of - "what would it look like if this application were wildly successful?", I think that would be a much easier question for the business to answer.
Daniel, Exactly.
I was either the first recipient of this analogy, or among the first few people Oren ever used it on. We're working on our first Raven project at my company, and while we're good at SQL server we weren't sure exactly what we needed for infrastructure with Raven. Oren asked me how many users we were expecting to evaluate whether we needed to move into sharding, and I didn't have good enough answers. Some queries of existing product databases gave me the numbers I needed, and alas, with proper hardware the load that would require sharding is around our hide under the bed number, so for the foreseeable future, we don't need it. I won't forget to come up with those metrics before I do basically anything else next time. That lesson is learned.
Comment preview