Accidental Technologist

Entries categorized as ‘Architecture’

Thoughts on Amazon S3 Outage and Cloud Computing

February 15, 2008 · 5 Comments

I am pretty sure that by now everyone has heard about today’s outage of Amazon Web Services, their S3 service in particular.

amazonweb I noticed there was a problem this morning when the avatars on Twitter were not showing up.  I know Twitter uses Amazon S3 to host the avatars but thought the issue was with Twitter because they constantly have problems keeping the service running.  I gave little thought that the problem might have been Amazon S3 service instead.

The coverage on the Internet spread like wildfire and the details and speculation can be found many places, including TechMeme which has lots of links and the list is growing.

I am not posting to report the Amazon outage (a million before me have already done so) but more to reflect on it and give some of my thoughts about using services like S3 and EC2 versus other ways of accomplishing the same tasks.  I don’t have the answers, just some thoughts and opinion.  I would like to hear from readers who may have more experience than I with this. 

I have been thinking lately about the best way to host my applications, either in part or full.  Right now I use a hosting provider, RailsPlayground, to host a couple Ruby on Rails applications.  I have a single VPS setup with them and have never had a problem, but I could.  The applications hosted there are small and if the VPS was down for a period of time I doubt it would matter much.  The pricing is right but there is no redundancy.

I have a couple additional applications I have been working on and the thought of hosting them is where my concerns are.  Hosting them could be done one of several ways:

  • Slices/VPS – Slicehost or RailsPlayground
  • Clustered Slices – Engine Yard
  • Dedicated Server – co-located and managed
  • Compute Cloud – Amazon EC2

All options have their strengths and weaknesses with regards to costs, scalability and reliability.   My biggest concern at this point is balancing reliability with costs.  We can easily through money at the problem if money was no object.  Even with virtually unlimited funds such as those Amazon has, they are obviously not excluded from downtime issues.

I don’t know the cause of Amazon’s downtime but do they have S3 or any of the other services running in a single data center?  Even if the data center is huge it still has a single point of failure.  It could also be their disaster recovery procedures were not tested well enough.  I think we will hear more and more coming from Amazon about the exact cause of the problem, any disaster recovery issues and a statement to the effect of why this will not happen again.

Relying on the Cloud

Can we rely on what we put in the cloud to be available?  How will we be effected by having our applications unavailable while there is some downtime?

I think I can characterize my use of the cloud by application level, which is probably like other users as well:

Level 1 Application – used daily but can live without, won’t really miss if gone.  An example of this type of application is Twitter.  Lately, this service has been down more than it has been up, but life goes on.

Level 2 Application – used daily but depending on the day, will be a productivity loss if down.  An example of this is Google Docs or GMail.

Level 3 Application – used daily and cannot be down without financial loses.  An example of this may be my own web applications I make a living on.

So how can I position my applications to give me the most uptime without throwing money at the problem unnecessarily?    I would think a single location with a single database is asking for problems.  The solution that stands out in my mind for a solution to my particular problem would be to used managed services hosting the applications on VPS slices on a cluster across multiple data centers, in different states or even continents.  I know Engine Yard does this but I don’t know if Amazon does this with EC2.  If they don’t, they should.  If EC2 was fully down today then Amazon needs to rethink their strategy a bit.

Service Level Agreements

Problems happen to the best of companies and we know uptime is not 100% guaranteed. 

Looking at part of Amazon’s Service Level Agreement (SLA), they admit they can’t ensure 100% uptime and will pay customers back for anything less than 99.9% uptime.

Service Commitment

AWS will use commercially reasonable efforts to make Amazon S3 available with a Monthly Uptime Percentage (defined below) of at least 99.9% during any monthly billing cycle (the “Service Commitment”). In the event Amazon S3 does not meet the Service Commitment, you will be eligible to receive a Service Credit as described below.

SLAs are a fair statement as to the importance of uptime to the company but no real guarantee.  The company gives us their best and will refund anything less, which is more than fair.

Final Thoughts

Amazon’s S3 downtime today just really got me thinking how risky it could be for users to rely on the cloud for computing.  The concept is great but even large companies like Amazon with massive infrastructure are still prone to problems. 

It makes me think how I run my business and how I can minimize downtime.  I certainly can guarantee 100% that the services I host will never be down.  I can only do my best and have a recovery plan.

The same is true for those services like Twitter who takes its share of slams for not being up all the time.  Heck, it’s a free service and they have a huge number of users, they are growing and we will experience pain.  Amazon S3 has experienced its real issues today and they will get better.  We can only learn from mistakes and weaknesses, this will be a learning experience.  It has opened my eyes.

Technorati Tags: ,,,

Categories: Architecture · General

What is ALT.NET?

December 11, 2007 · 2 Comments

I am searching for answers….what is ALT.NET anyway?  I thought I knew what this movement was all about but the more I read the posts to their mailing list I confirm I don’t.  I don’t think they do either.

Here is a quote directly from the Altdotnet.org site:

We are a self-organizing, ad-hoc community of developers bound by a desire to improve ourselves, challenge assumptions, and help each other pursue excellence in the practice of software development.

Our movement is new. The conversation just started. All are welcome to shape and form the dialog in blogs and lists and face-to-face gatherings both local and global.

My confusing comes from being a member of the ALT.NET Yahoo group, which has a clear statement as to who they are:

Spawned from the AltNetConf in Austin, TX in October, 2007. We are .Net developers looking striving to create quality software on the .Net platform.

ALT.NET – You’re the type of developer who uses what works while keeping an eye out for a better way. – You reach outside the mainstream to adopt the best of any community: Open Source, Agile, Java, Ruby, etc. – You’re not content with the status quo. Things can always be better expressed, more elegant and simple, more mutable, higher quality, etc. – You know tools are great, but they only take you so far. It’s the principles and knowledge that really matter. The best tools are those that embed the knowledge and encourage the principles

I have been quietly following the group for a few weeks trying to digest what is being said, trying to understand the direction.  It seems tempers and in-fighting visit the list too often.  These are the representatives of the ALT.NET, movement, if you will and they represent it poorly.

I really like the idea of the group as they state on their web site, but do they mean it.  The ALT.NET Conference held in October seemed to be a giant success with the community coming together.  What has happened since then?  I am aware of a summit, even asked if one of the web sites I write for (InfoQ.com) would like to be involved but it was never followed up upon by those at ALT.NET.  I was also asked about interviewing David Laribee, but he never followed up.  This tells tall tales to me how the organization is evolving, but not for the good.

I like what they say to be about, I really do.   I don’t attempt to provide an answer to my own question or pass judgement.  I want people who are involved to either reply with a comment or send me a private email.

Technorati Tags:

Categories: .NET · Architecture · General · Programming

Dilbert goes Agile

November 27, 2007 · Leave a Comment

I found this yesterday and thought others might find it amusing.

dilbert2666700071126

I think Scott has summed up the too often the approach to Agile.

http://www.dilbert.com/comics/dilbert/archive/dilbert-20071126.html

Technorati Tags: ,

Categories: Architecture · General

Great Discussion on Hanselminutes about Realworld LAMP to .NET 3.5 Migration

October 20, 2007 · Leave a Comment

I am a  regular listener of Hanselminutes and usually make it part of a daily walk I do around the lakes we live on or on my commute to a client site.  Those of you not familiar with Scott Hanselman’s podcast about all different aspects of technology, it is worth a listen.

The most recent podcast is with Matt Davis, architect at EarthClassMail.com about their migration from using a LAMP (Linux-Apache-MySQL-PHP) stack to Visual Studio 2008 Beta 2 and the .NET Framework 3.5. 

Scott’s podcasts normally run about 1/2 hour which is enough time to get an idea out and discussed but not so long it takes a bunch out of someone’s busy schedule.

This podcast is a great listen from anyone contemplating going to .NET 3.5 and those features like LINQ, WCF, WPF and Atlas which we may end up using.  Scott asks some great questions and Matt has some great answers.  I am not familiar with Matt but he seems like a really bright guy with more than book-smart experience.  EarthClassMail.com is large and complex application with many facets of its business.

Being an Architect myself I could relate to what Matt was faced with and how he solved the problems.  The bold move to .NET 3.5 while in beta is something you don’t normally year about.  I think I may listen to this one again and I would like to hear future interviews with Matt or ones like this.

Categories: .NET · Architecture · Visual Studio

Castle Project 1.0 RC3 is out

September 20, 2007 · Leave a Comment

The Castle Project has finally released its version 1.0 RC3 today.  It has been a long time coming but not for lack of work.  I am on the development discussion list and there is a lot of activity, much work has gone into this release.

Details on the release from the blog of the Castle Project founder:

ActiveRecord

  • Multiple db support without the need to extend ARBase
  • Refactored validation support to use the new Castle Validation
  • InPlaceConfigurationSource.Build() which is handy!
  • Added HqlNamedQuery
  • Lots of bug fixes

DynamicProxy

The RC3 is the first to include DynamicProxy 2 which has support for generics and is much much faster than version 1

MicroKernel/Windsor

  • Support for generic collections
  • Changed to use DynamicProxy 2
  • Added some sugar to IKernel and IWindsorContainer add/resolve methods
  • Child container support was improved, but still need some review – you’ve been warned
  • Added a simplistic eval support, you can do <?eval $BaseDirectory ?> on your config
  • Both DefaultKernel and WindsorContainer now implement IServiceProvider

MonoRail

  • Added Cache support (see the new Cache attribute)
  • Added IsPost/IsGet/IsPut/IsHead to Controller
  • Added Auto Form Validation
  • FormHelper is nearly perfection, still missing support for selects with multiple enabled
  • Support to register several view engines at once (bye composite view engine) – this is not as good as I’d like it to be. There’s no co-op among them..
  • Added handful of view components
  • Added support to test controllers, viewcomponents, wizard steps without the need to bring the ASP.Net to the table
  • Added JS generation support, and UpdatePage/UpdatePageTag view components
  • Format support on set operations, for example $Form.Select(”price”, [1..100], “%{textformat=’C’}”) is going to render the select elements with currency format
  • Added PaginationHelper.CreateCustomPage which is the most optimized way to deal with pagination
  • Added DiggStylePagination ViewComponent, based on Alex Henderson work
  • Added the following members to SmartDispatcherController (validation related) ValidationSummaryPerInstance : IDictionary, GetErrorSummary(object instance) : ErrorSummary, HasValidationError(object instance) : bool
  • Added ViewComponentDetails attribute (just like ControllerDetails)
  • Added ViewComponentParam attribute which tells MonoRail to bind the arguments as properties on your view component – reducing repetitive code rules
  • Added UrlHelper/UrlBuilder concept

Aspect#

Is out…

Components

  • Added Castle.Validator
  • Added Castle.DictionaryAdapter – still puzzled by this one
  • Improved Binder (another re-write of its implementation)

Other

  • Created the using.castleproject.org
  • Created the api.castleproject.org
  • Initial integration between the Castle.Services.Transaction with MS’ System.Transactions
  • Created Castle.Core

Well, basically that was it. We’ve been busy.

For those who don’t know what the Castle Project is, it is a set of libraries for implementing a Model-View-Controller (MVC) framework in .NET.  The key piece for this is MonoRail with ActiveRecord handling the models.  Most of the time we hear about Ruby on Rails and its MVC implementation but Castle does this on .NET. 

I did an interview with Hamilton Verissimo, founder of the Castle Project, for InfoQ last week.  Hamilton is a sharp guy and has lead the core team to produce a great open-source project.  I am working on a project using MonoRail and it is very nice to produce a web application this way.

Technorati Tags: , ,

Categories: .NET · Architecture

Skyscrapr – Your Introduction to Architecture

July 31, 2007 · Leave a Comment

This may be old news to most people out in the Microsoft Architecture world but it is news to me.  Microsoft has a web site called Skyscrapr and it is dedicated to the topic of Architecture.  

It appears to be a portal to all things Architecture related on Microsoft web sites.  I spent some time today going through the resources on the site and there is a wealth of information and links to many, many other resources.

Technorati Tags: ,

Categories: .NET · Architecture