Cloud Failure, FUD, and The Whole AWS Oatage…

Ok.  First a few facts.

  • AWS has had a data center problem that has been ongoing for a couple of days.
  • AWS has NOT been forthcoming with much useful information.
  • AWS still has many data centers and cloud regions/etc up and live, able to keep their customers up and live.
  • Many people have NOT built their architecture to be resilient in the face of an issue such as this.  It all points to the mantra to “keep a backup”, but many companies have NOT done that.
  • Cloud Services are absolutely more reliable than comparable hosted services, dedicated hardware, dedicated virtual machines, or other traditional modes of compute + storage.
  • Cloud Services are currently the technologically superior option for compute + storage.

Now a few personal observations and attitudes toward this whole thing.

If you’re site is down because of a single point of failure that is your bad architectural design, plain and simple. You never build a site like that if you actually expect to stay up with 99.99% or even 90% of the time. Anyone in the cloud business, SaaS, PaaS, hosting or otherwise should know better than that. Everytime I hear someone from one of these companies whining about how it was AWSs responsiblity, I ask, is the auto manufacturer responsible for the 32,000 innocent dead Americans in 2010? How about the 50,000 dead in the year of peak automobile deaths? Nope, those deaths are the responsiblity of the drivers. When you get behind the wheel you need to, you MUST know what power you yield. You might laugh, you might jest that I use this corralary, but I wanted to use an example ala Frédéric Bastiat (if you don’t know who he is, check him out: Frédéric Bastiat). Cloud computing, and its use, is a responsibility of the user to build their system well.

One of the common things I keep hearing over and over about this is, “…we could have made our site resilient, but it’s expensive…”  Ok, let me think for a second.  Ummm, I call bullshit.  Here’s why.  If you’re a startup of the most modest means, you probably need to have at least 100-300 dollars of services (EC2, S3, etc) running to make sure you’re site can handle even basic traffic and a reasonable business level (i.e. 24/7, some traffic peaks, etc).  With just $100 bucks one can setup multiple EC/2 instances, in DIFFERENT regions, load balance between those, and assure that they’re utilizing a logical storage medium (i.e. RDS, S3, SimpleDB, Database.com, SQL Azure, and the list goes on and on).  There is zero reason that a business should have their data stored ON the flippin’ EC2 instance.  If it is, please go RTFM on how to build an application for the Internets.  K Thx. Awesomeness!!  🙂

Now there are some situations, like when Windows Azure went down (yeah, the WHOLE thing) for about an hour or two a few months after it was released.  It was, however, still in “beta” at the time.  If ALL of AWS went down then these people who have not built a resilient system could legitimately complain right along with anyone else that did build a legitimate system. But those companies, such as Netflix, AppHarbor, and thousands of others, have not had downtime because of this data center problem AWS is having.  Unless you’re on one instance, and you want to keep your bill around $15 bucks a month, then I see ZERO reason that you should still be whining.  Roll your site up somewhere else, get your act together and ACT. Get it done.

I’m honestly not trying to defend AWS either.  On that note, the response time and responses have been absolutely horrible. There has been zero legitimate social media, forum, or responses that resemble an solid technical answer or status of this problem. In addition to this Amazon has allowed the media to run wild with absolutely inane and sensational headlines and often poorly written articles.  From a technology company, especially of Amazon’s capabilities and technical prowess (generally, they’re YEARS ahead others) this is absolutely unacceptable and disrespectful on a personal level to their customers and something that Amazon should mature their support and public interaction along with their technology.

Now, enough of me berating those that have fumbled because of this. Really, I do feel for those companies and would be more than happy to help straighten out architectures for these companies (not for free). Matter of fact, because of this I’ll be working up some blog entries about how to put together a geographically resilient site in the cloud.  So far I’ve been working on that instead of this rant, but I just felt compelled after hearing even more nonsense about this incident that I wanted to add a little reason to the whole fray.  So stay tuned and I’ll be providing ways to make sure that a single data-center issues doesn’t tear down your entire site!

UPDATE:  If you know of a well written, intelligent response to this incident, let me know and I’ll add the link here.  I’m not linking to any of the FUD media nonsense though, so don’t send me that junk.  🙂  Thanks, cheers!

Infrastructure Updates

A few updates on the infrastructure project I’ve been putting together on at github/infrastructure.

Javascript Enabling TDD

First steps toward enabling TDD Javascript by adding QUnit.  Now that the framework is available, I’ll have it added to the next template update.

Globalization

I will at some point have a blog entry put together and published on how I put this together.  It is a simple implementation of globalization, and will also be in the next template version.

Fizzware NBuilder, CSS Templates, NHibernate, FluentMigrator, and other bits

These parts have been added via Nuget, however, I haven’t determined the ideal way to include the includes (see what I did there!).  For the next template though, I’m going to make a command decision and have that implemented for the template.  Either a scripted Nuget install, inclusion of the assemblies, or otherwise.

Completed Multiple Project Support in Infrastructure Solution Project

Still not sure what to call the infrastructure project. One suggestion that came up was, “Visual Fluent NInfrastructure .NET Sharp“.  It’s all trendy and wordy and can be turned into an unpronouncable acronym, VFN.NET#.  Anyway, got ideas?  Throw a comment on the post!  🙂

I got the multiple project completed and uploaded as template v1.1.

For information on how I put together the multiple project template, check out the links on the wiki here:

Also am working to add a basic vertical implementation of NHibernate up to the views with basic CRUD operations just for an example.  I’m pondering if that should be done as a separate template, maybe titled something like “template w/ samples”?  Then keeping the core template with only the skeleton code.

For more information on the project, check out the github infrastructure project page.

ASP.NET MVC 3 + Razor Infrastructure Update

A few quick notes about the updates on the Infrastructure Project.  For one thing, I need to give it a good name.  Any ideas?

There are sample Zen Garden CSS and jQuery UI Theme files in the overall github repo, BUT, they still need integration into the actual template project.  Again, if anyone is interested or has ideas on how to get those integrated into the Visual Studio Template, I’m all ears!  🙂

On the topic of a full vertical implementation of NHibernate or Entity Framework with a good repository pattern and related code, I’ve made zero progress over the last week or so.  I hope to remedy that between now and mid-next week.

Until later, off to code again.