The raison d'etre for companies like Github is that small software companies can't afford to waste a lot of time building infrastructure. If they want to survive, they need to focus on their core competencies, their customers, and their products. If outsourcing infrastructure functions to Github doesn't allow you to do that, then there's not much reason to pay Github.
No service, not even electricity, has 100% uptime. If thinks are that mission critical, you need a backup plan. Should you disconnect from the grid and generate your own electricity? Probably not. But should you expect that it might go out at any time? Yes. If you are not running a UPS than no one is to blame except yourself. If things are so critical that a UPS won't last long enough, then you should have a generator backup.
In contrary, what would the poster have done if his power or internet had gone down when he needed to deploy? Would he be cancelling those services? For some reason I don't believe he would.
The real key to all of this is not a question of avoiding downtime, it's learning from it and avoiding a repeat of the same incident. I think GitHub has done a great job of this, and they're very clear about what happened and what they've done to avoid it in the future. The poster, however, fails at this point. Not only does he admit he doesn't have a backup plan for deploying when GitHub is down... he flat out states that he knows what he could have done, and REFUSES to do it. Instead he's just going to cut and run, thinking he'll find another service that somehow is somehow immune to unexpected downtime. I wish I could live in that world.
And, all things being equal, I'm not anxious to pay more money for a more reliable Github. Because it's git, people. Why pay for five nines of uptime when you can just mirror your repo? Every five minutes, if you like? With a one-line cron task? One of git's most basic functions is to make an efficient mirror of itself.
If uptime was a serious factor for you, you'd probably pay for an SLA to ensure uptime and compensation for downtime... and a SLA wouldn't be cheap.
We'd happily negotiate something with real teeth, as I'm sure most service providers would, and I'm sure Github would too if a big customer pushed for it.
But you're 100% right - if we did it'd be expensive, because we'd have to turn right around and insure ourselves against the risks incurred if the amounts were remotely serious, and we'd pass that insurance cost straight on.
The real question is, should every small company have _two_ generators. :-)
http://www.flickr.com/photos/ubernostrum/255794358/
That's not a typo in the caption or the comments; each individual backup battery in that stack really weighs about 1500lb.
On the other hand, our office servers are on a single circuit and we don't worry about it because a temporary electricity outage just means a few man hours lost productivity (rather than potentially large losses for our clients, leading to bad will and lost business for us)
If a Github outage is so critical to you that it's more than a few man hours lost productivity, then it means you're using it for something you either should have in house or should have adequate backup procedures for. And this holds regardless what you substitute for "Github" in this paragraph:
If it's critical, you ensure you have a backup, as it's virtually guaranteed that there will be some single point of failure outside of your (and theirs) control.
His gripe with a paid service being down and unreliable and his action of cancelling is perfectly reasonable if he runs a business and wants a set uptime.
him: I needed to deploy but Github was down! Screw
them! I'm going hosting company X instead.
me: Does hosting company X guarantee that they will
never be down when you want to deploy?
him: ...
At least that's how it comes off to me. If those other hosting companies really do provide him with what he needs better than Github does, then more power to him, but I seriously doubt that they do at the price point they have set.Words are cheap, especially in the world of typical SLAs.
I mean, I've been using GitHub 15 hours a day for a year, and last week was the first time downtime affected me, and even then I just couldn't push for awhile. That's kind of the whole point of decentralized version control right? So there isn't a single point of failure? I'd say the git ecosystem worked out just perfectly.
I'd say that if someone doesn't find GitHub's feature set to outweigh the level of downtime I've experienced, that person's use pattern probably doesn't fit the characteristics of a typical user. If I'm wrong, expect people to be leaving in droves now. My bet's on not.
1. You're hosting websites via GitHub pages.
I'm hosting both my business and personal websites on GitHub. (Despite the recent outage, GitHub's uptime beats my previous el-cheapo host by a wide margin.)
2. You host client code and issues in a GitHub private repository.
This becomes an issue when clients want to add a bug to the issue tracker, etc.
I have been working on a little pet project called GitHaven (http://githaven.com) which is a simple web app that can be installed via a deb package. I have a test install running on http://git.meyerhome.net/ for those who are curious. I use to quickly push up private repos when I need to. Originally created because there seems to be a need for something between Gitosis and GitHub:fi that you can install wherever you need git hosting. If your interested in trying out GitHaven for your own development send me an email at [email protected]
He should apply the same argument he makes against Github to his own business. Putting together a Gitosis or similar setup mirrored to Github would have given him and his paying customers the necessary redundancy to deploy when one of the hosts is down.
EDIT: Figure while I'm here and it's not OT I should give a well-deserved shout-out to Gitosis which has made my life a lot easier the past two years or so:
Gitosis setup is a one-off, very low maintenance install (you add repositories and users by committing config changes and public keys to a git repository -- hardly anything out of your regular workflow). Once set up, mirroring to github or another service is a one-liner in your post-receive hook.