For all those shocked into the stark revelation that “Cloud” service failures might mean you need to THINK about how you architect your solutions, post recent AWS failure, break out your cat5-o-nine-tails and give yourself a good self-flagellation.
As Cloud services increase in mainstream popularity and start ups build upon these services to launch their “NextBigThing (TM)”, both the awareness and the flow on affect of failures are noticed and reported on far more widely.
A quick recap for those that don’t know the definition of cloud computing:
Cloud Computing is an on-demand; elastic; heterogeneously accessed; resource-pooling; measured service.
Cloud Computing is delivered in a number of ways; generically grouped together as:
- Software as a Service (SaaS) – Applications provided with limited or no configurability;
- Platform as a Service (PaaS) – Programming Languages, Libraries or Tools; and
- Infrastructure as a Service (IaaS) – Compute, Storage, Networking.
- Public Cloud – Services made available to the general public. This is generally reachable over the Internet only.
- Private Cloud – Infrastructure operated for a single organisation. Can be delivered
- Hybrid Cloud – A combination of the above.
Cloud Computing services can be SaaS delivered with PaaS components riding on top of various IaaS components. Hence the recent AWS failure was felt far and wide through the likes of Reddit, Foursquare and Quora
(Quora, hasn’t that flash in the pan past and did people really notice?).
Doesn’t it now mean Cloud Computing is IKEA-like?
Not quite. Public Cloud services by definition need to be designed for failure. Resilience can be in Cloud Computing services, however, the users and developers need to understand how they design for this. As an aside I suspect that a fair few developers will be getting slapped across the head and the Infrastructure Architects will be brought in to assist in remedying the various deficiencies.
Cloud computing solutions today are not simple snap together pieces and still require careful architecting of components to ensure that they are designed for failure.