Availability sets on Windows Azure for an MVP
cpardalis.wordpress.com
cpardalis.wordpress.com
Isn't that contradictive? (or was that the licensing costs before the current situation?)
Then before you know it, you're at that 200k.
I've seen it happen at so many companies:
"We'll build it on the MS stack because they gave us a great deal on MSDN or we used the PAP to get cheap licenses." ... after a few years ... "We got screwed by SQL 2012 and had to buy £50k of SQL licenses because the terminology between cores and CPUs changed on a whim and it's the ass-end of the SQL 2005 so we've got to make a big jump."
I'm not saying it's an invalid approach (hell I make my living out of keeping these sorts of cogs spinning) but it's not a great foundation to run a startup on. Unpredictable costs or sudden price-jacking after a partial buyout really sours the shit out of the deal. Especially when you ask for a budget you can't get from your new investors who now are worried that their short term return is going out of the window on your platform and software license costs.
This means that with a master/slave setup, a simple failover from a master to a slave is not sufficient, you need to be able to fail back automatically as well. Depending on the exact technologies you are using and how you are using them, this can have a lot of tricky corner cases that can end up much worse.
If you don't do this, then when your master comes back up and they decide to reboot your slave next, which is a common scenario, you lose availability. This differs significantly from a scenario where VM failures/reboots aren't correlated so closely in time; if a VM failure is more random, it is more reasonable to require manual intervention to fail back to the master.
The closest thing to an official explanation I've found (note date and chorus of comments): http://blogs.msdn.com/b/wats/archive/2013/09/24/windows-azur...
I mean, you still may end up with the split-brain problem in the long run, but if that happens within a data-center would be the least of your worries. (Something like netflix's chaos army comes to mind for dealing with that).
Azure isn't cheap by any means when you need to scale up our out.
Either way you also hang yourself with a vendor tied product and the ball and chain of licensing. The latter of which escalates pretty quick when your business grows.
Our 8 man startup in 2005 now spends £200k a year on licensing because we're that tied to the damn platform.
This was all financial data aggregation and archival stuff.
In test it was 23% more expensive than our own kit over 3 years.
We got utterly raped by the SQL 2012 upgrade with the core licensing changes as we have a few 48 core machines. (enough to make us consider PostgreSQL as a serious option now)
We're not public facing either.
We're basically the people who say 'it was him' when someone fucks up.
Also Microsoft doesn't give a shit if you're down past a status page and profuse apologising and perhaps a pro-rata refund if you complain like a bitch and wave a big "fuck you, AWS next time" at your licensing contact. That's not how to do business.
Our guys actually get up at 2AM and drive to the DC and fix shit if it goes wrong, which it inevitably does (less often than Azure I will say).
Downtime costs you more in reputation than you can gain from the cost savings of not having your whole world under your control.
I don't know who sold you Azure as a solution to your hosting, but whoever did it didn't take enough time to investigate your case. This comment and your others show that your requirements and architecture aren't a good match for a cloud host.
http://blogs.gartner.com/kyle-hilgendorf/2012/03/09/azure-ou...
The SLA would have been fine if it was accurate, which it wasn't.
It's important to note though that an SLA for any host isn't a strict guarantee. Almost all are set up on the best-effort-with-refunds-if-we-fail principle. They're promises, not hard lines. MS does not have a habit of failing to deliver on their promised number, but like any other host it can happen. These are important things to remember when considering a hosting model.
I've been on azure for almost a year now and it is essential that you use their availability sets as their emails about "planned maintenance" often come sporadically after they do the maintenance. In one upgrade they somehow managed to shutdown and not restart my instances, so i also recommend having an externally hosted monitoring server if you have mission-critical stuff on azure.
The smartest thing to do is to never rely on a particular service of a cloud provider. For example we once made the choice of using Amazon's DynamoDB, which is great in the beginning, but at some points along with scale issues the costs went through the roof (DynamoDB also charges for "throughput capacity") and we just switched to Cassandra - but we planned for this migration ever since the beginning.
And this is the problem with cloud providers - the pricing schemes on these services are designed to hook you with affordable prices in the beginning, but later on as your business grows they get much more expensive than hosting your own stuff. So use whatever makes you most productive, but careful about lock-in.