I was relaxing in the bath pondering the bubbles, clusters of bubbles are quite interesting, you pop one and the structure re-organises to compensate; you add another one in and everything shifts about to make room. I was thinking about Cloud and Cloud architectures. Now being an infrastructure-type person, I tend to focus on infrastructure and how you make an infrastructure as robust as possible.
We tend to design to an ‘N+’ model, more often ‘N+1’ but sometimes it can be ‘N+n’ where ‘n’ reflects how important we think an environment is. This sort of model suits the applications and infrastructure we find in the traditional data-centre; it certainly suits the applications which are not especially aware of their surroundings and their resources. These applications generally have no situational awareness and don’t really care. If all of your applications are like this, you will be probably looking at Infrastructure as a Service at best. You want reliable hardware to support your dumb, unreliable applications.
Now this brings me to ‘N’; I think one of the key characteristics of a Cloud application is that you design it to run on ‘N’ nodes where ‘N’ is subject to change and that change is often going to be negative. In fact, you probably ought to design and code for ‘N-1’ or even ‘N-n’; your infrastructure will change and fail more often than it does in a traditional data-centre and you cannot rely on anything. This means that your applications need to be a lot more sophisticated when dealing with concepts such as state but also need ways of discovering services, resources, scaling both up and down. Your applications need to be reliable and intelligent. They need to be like the bubbles in a bath.
By the way, this does not negate the need for infrastructure people; you may need less of them but they are going to be working at a different levels, they need to be thinking about environments and not individual machines; architecting availability zones, scalable networks and storage etc but they will not be providing an individual service to support a specific application.
I like the analogy with bubbles bursting, however bubbles follow standards – i.e. the laws of physics where any replacing bubbles know what to do. Currently every implementation either internally or in the cloud tends to be done differently. There’s no easy way to make the server layer work across multiple infrastructures.
I think if we want to work cross-vendor we will be working with changing applications to have them coded from PaaS upwards, so no-one worries about the underlying infrastructure. That way, whoever can deliver the most cost effective and reliable infra still keeps your business.
And I agree, infra is definitely important and must be considered.
Cheers
Chris