- Determine if the business problem requires cost-effective scalability. If not, the cloud is not the correct solution. You can’t tighten a slotted screw (i.e., a business process that needs to be automated with a fixed number of users) with a Phillips-head screwdriver (the cloud)—it’s simply the wrong tool for the task at hand.
- Institute a cultural change that looks to new ways to solve problems. This is the hard part—but by ensuring that your team utilizes the latest methods associated with the cloud, you can avoid the vicious cycle described by Einstein.
- Embrace the cloud for what it is, rather than what various interest groups say it is. Your application implementation team will have to consider many things they may have been able to leave to others in the past. Applications cannot perform well simply by adding bigger infrastructure—the cloud scales differently. You cannot make an application reliable by assuming the infrastructure will never fail. Therefore, "design for reliability" is now in the domain of the application itself.
How does cloud technology differ from other technologies? In one sense, it doesn’t. Cloud computing is a cost-effective implementation of several existing technologies that enable business agility, leveraging concepts such as client/server computing, TCP/IP, Web services, service-oriented computing, virtualization, and the like. That business agility stems from cloud computing’s rapid elasticity, which in turn derives from service-oriented computing and virtualization. The cloud’s use of commodity infrastructure, coupled with virtualization, enhances its cost-effectiveness by maximizing infrastructure utilization. Cloud computing’s tradition of measured service—i.e., the customer paying only for what they use—further boosts that economy (even as it places the burden of cost-optimization on the application architect rather than the infrastructure architect). But to fully realize its benefits, cloud computing also requires a new approach to implementing applications. With the cloud, scalability is achieved in a different manner—by scaling out—than with legacy methods that focus on scaling both up and out; on top of that, legacy scale-out involves infrastructure, whereas the cloud version centers on applications. Cloud infrastructure, such as commoditized hardware, is also optimized for cost at the expense of reliability, the latter of which ultimately becomes the responsibility of the application designer. Albert Einstein once famously defined insanity as “doing the same thing over and over again and expecting different results.” In order to yield better results, successful implementation of a cloud-based business solution requires evolving one’s methodology beyond what might have worked so effectively with legacy platforms in the past. This evolution is a three-step process: