While I have probably beat the definition of cloud computing to death, I want to spend some more time on where the magic really lies in Cloud Computing. Without going into a Ballmerellian rant, the key to unlocking the full potential of the cloud is developers, developers, developers. More specifically, software is what will define not only what cloud is, but also what cloud is capable of. The faster that CIOs and CTOs come to this realization, the better it will be for their organizations.
Figuring out ways to distribute applications across infrastructure is a difficult task that many CIOs are facing today. This is especially true in the financial industry where legacy applications and legacy systems (read mainframes) severely hamper flexibility and restrict high-availability. IBM long ago roped the largest financial institutions and locked them into the long term maintenance (and associated costs) of the mainframe. To this day it remains a huge cash cow for IBM. This is slowly changing, however, as these institutions make the crucial decision to re-factor applications for a dynamic data center infrastructure or private internal cloud.
When it comes to 'fixing' applications within an enterprise, often the right answer is to re-write the application. This usually comes at a significant cost and proverbial pain, so most CIOs shy away from doing the right thing. The financial justification, however, does not work in their favor when you take into account the long term savings that come from re-writing the application to layer over a dynamic infrastructure. Once off of legacy systems, applications can be written so that they are flexible, easily scalable, highly available and easily distributed across multiple geographic locations. This re-factoring process involves multiple steps in which application requirements are gathered, application patterns are developed, architectural reference guides are written and developers are given the tools to write applications that excel within this framework.
With all that said, how is cloud all about the software? As we have seen from Google's data centers, there is a fundamental shift in how we think about redundancy and high availability when we work from a cloud perspective. In a traditional application server model, there is redundancy at the hardware level with power supplies, memory banks, processor sockets, local RAID disks, expensive SANs, network adapters, etc. The architecture may provide for some basic clustering, but the idea is to keep the hardware from failing as much as possible. In the cloud computing data center architecture, the basic assumption is that the hardware is going to fail. The hardware is commodity now and we do not rely on it for redundancy. All redundancy and high availability is handled at the software layer. Through various methods of data and workload distribution, the hardware can fail and not have a negative impact on the cloud as a whole. The software can also handle multi-tenancy if so desired, although that is currently handled at the virtualization layer for the most part. I can guarantee that will shift over time, but the core concept is that the cloud is 'intelligent' and 'aware' and it is responsible for all functionality above the most basic commodity hardware layer.
I don't want to give the impression that the technologies that power the cloud today are set in stone. There are great opportunities for developers to create frameworks that underpin and power the cloud. Much like Ruby on Rails empowers developers and delivers impact in a 3-tier web architecture, a framework with similar focus can easily take the cloud computing world by storm. There are several frameworks out there today that offer great value as well. The core method of virtualization is also shifting as large enterprises are standardizing their technology stacks. When an enterprise standardizes on a technology stack with a single operating system, application server and coding language, products like VMware lose their attractiveness as container based virtualization is often cheaper and delivers better performance overall. It will also become easier over time to manage virtualization technology as part of the operating system rather than a separate entity altogether. Again, this shift will come over time as more enterprises give due diligence to the standardization process and seek to ease management of the infrastructure. I'm excited about all of the possibilities that cloud computing brings, and it is the software that will deliver what enterprises want.