Blog rating widget - Principal #3: Graceful Degradation
As Yaron mentioned before, we view ourselves as guests in your blog. And as the old saying goes - "In Rome behave as Roman" - we do our best to not interfere with the experience you decided to give your readers.
So…: Principal #3 - Graceful Degradation
Imagine that you have a blocked plumbing problem at home, and you need a plumber. Usually there are 2 types of plumbers:
- Type #1 - schedules with you at 8am, arrives at 11am, investigates your plumbing deeply, messes the whole house, smokes in your toilet and leaves the leftovers there. After 3 hours he says… "it’s a hell of a block - I don't have the tools for releasing it, I'll be back tomorrow at 8am (yeah, right!) with the tools. Ohh, and BTW: I spent here 3 hours which is… $400"
- Type #2 - schedules at 8am, arrives at 8am, looks at your plumbing for 10 minutes and says: "it’s a hell of a block – I don't have the tools for releasing it, I'll be back tomorrow at 8am." He cleans up after himself and says, "I really did nothing, no need to pay me" and leaves. 9am you are back at the office.
In both cases you are left with the blocked plumbing, but who will you call on the next problem you have?
Now what does all that have to do with our rating widget?
We are guests on your blog. We are there to give your readers a service and we do our best to have the right tools 24/7. But as with any internet service, there are bound to be cases where the service is unavailable.
We built a redundant scalable back-end system and use all the procedures we can to avoid any expected unexpected case to fail us.
But, as Joel said here:
"...there's a sweet spot, where all the expected unexpecteds have been taken care of. A single hard drive failure, which is expected, doesn't take you down. A single DNS server failure, which is expected, doesn't take you down. But the unexpected unexpecteds might. That's really the best we can hope for."
So, we acknowledge the fact that in every technical system there might be some unexpected unexpecteds where we cannot supply the service. We know shit happens sometimes (we are plumbers, remember?... ;-). But that should not affect the blog content from showing up or being slow, or be otherwise messed up.
Here's what we did to make sure our service degrades as gracefully as possible without affecting your blog:
- Our rating widget code and all other mission-critical files, are served from Amazon S3 which is highly available framework
- We designed the code and all of its resources to be highly cache optimized.
- If we don't have the tools – we are not messing things up. If our data center is not accessible, we don't do anything on your blog.
- If we break – we clean up. If there is some kind of back-end error or exception, your blog will stay as we were not even installed.
We do have work to do – but we try to delay you to the minimum. We are adding functionality to your blog and that demand some time and effort, but we are trying to do that in parallel to your blog page loading and as soon as the relevant content (your posts) is right there on the page.
These rules and guidelines are highly important for us. If we did not catch some behavior that is not along these guidelines and you did. Please let us know ASAP and it will get the highest priority.



