Ten Cloud Considerations: Risks and Benefits
Additionally, IT managers from CIO on down do not lightly move from approaches, even those which are far from perfect when there are impacts to budgets to be considered or when a new approach is hard to define quantitatively, or when a concept's impact on revenue or capital preservation is not easily seen. Further, Given the degree to which the term "cloud computing" has been overloaded and re-purposed by various vendors, trying to sort through arguments pro and con may prove difficult. In the following sections, we offer eight considerations that may help offer a well-rounded view.
- Market Facing Solutions. First off, there seems to be common agreement that the intent of cloud computing is to be market facing; aimed at exposing new services and capabilities via web interfaces most often through the browser. As broadband in America improves, applications have moved toward architectural models where computational cycles can be placed wherever they most naturally fill the user need. Modern web style applications are now most often designed using the Model-View-Controller paradigm, where the data store (the model) and the logic needed to transform data into something meaningful for a user (the controller) reside on a server farm inside the net or in the cloud, and only the user experience portion (the view) resides on a device close to the end user. As you consider how and where to introduce cloud computing into your enterprise, think first of new applications and new markets, which are less subject to push back from product line managers with current revenue bases to maintain.
- Quality of Service Additionally, cloud computing is all about offering a consistent quality of service to a variable and potentially large numbers of end users, while at the same time concentrating less time and resources on infrastructure than traditionally would be the case (by using "other people's money" or OPM.) Ideally, it means that on-demand resources and services are perfectly capable to meet dynamic demand, often by "sharding" or slicing the space of total users along an arbitrary dimension. From the IT viewpoint what you need to know is that, for sharding to work, applications must assure that one user exists completely independently of every other user such that data base architectures such as Google's BigTable, which is essentially a large flat space providing object-relational semantics without a real underlying relational data base. This ability to dynamic allocate and locate resources potentially provides a higher level of system availability and improved global performance.
- Server Configuration. Also, deployment requirements tend to be lightweight, both for the end user and for those offering the service-based capability -- within the enterprise, this means no more going from desktop to desktop setting up user configurations; for market facing applications, it means the end of shrink wrap and all the problems that physical distribution of applications have entailed for longer than most of us in the industry can remember. From the IT point of view, this reality requires some attitude adjustment but it doesn't mean that you can abdicate all responsibility for configuration management; rather it may mean a shift from installed packages to the network.
- Testing is Deployment. Further, testing becomes indistinguishable from deployment. The U.S. Army maintains that a key element of their success is that they "fight like we train and train like we fight." According to this dictum, no substantive differences exist between preparation for execution and execution itself. To achieve a similar level of of end result, IT needs to "test just like we deploy and deploy just how we've tested." Cloud computing offers the ability to do sophisticated emulation of a service in a variety of close to deployment conditions as possible -- on-demand testing of configurations difficult or impossible achieve otherwise, including the ability to test multiple machines, or different configurations, or different global locations, to fulfill the need of stress testing, compatibility testing, performance testing, and response testing which would otherwise impossible with a constrained local environment.
- Dynamic Allocation. To compete with the pace set by the Twitters, Facebooks, Googles, and Diggs in the 21st Century, modern application designers, implementers, and IT will need to be able to flip a switch to turn up an a new service, or to turn on new features, or to selectively test a capability on a segment of the end user population without affecting all users. Before the advent of cloud computing, achieving such a set of goals would have been unthinkable, but now, as many of us have experienced, companies such as Google test different application nuances or end user experiences simultaneously on different segments of the user base without affecting the user base as a whole. Cloud computing makes possible (and desirable) the "perpetual beta" for which Google is rather well known.
- Technical Immaturity. Cloud immaturity shows in many ways that could impact your adoption and deployment. Every cloud framework implementation has its own interface methods and a different perspective on the set of services. Thus, your cloud solution changes significantly with each offering. Costs are different too -- many don't charge at all. The unfolding nature of the current offerings puts everything at risk -- costs could change overnight, services could be dropped, and quality of service could worsen. Standard bodies are just beginning to look at possible standardization. Would you place a mission-critical application on such a new arrival? Most likely not, but there are many other possibilities discussed shortly.
- Internal Entrepreneurship. Consider the concept of the virtual company and how IT can enable internal entrepreneurship. Cloud computing can empower visionaries from the CIO on down to contemplate the Virtual Company -- putting pars or all of an enterprise on a cloud basis, and not owning more than a bare minimum of actual computing assets. Consider giving out a cloud budget -- allowing teams to experiment with the cloud resources.
- Privacy and Control. Clouds can be implemented internally or externally. The external offerings are rich and supported but you will need to send them your data and processing instructions. Many of the services offer extensive protection methods and it is in their interest to offer high levels of security but it is an important consideration. Platform-as-a-Service (PaaS) will often provide a realtively sophisticated suite of access controls
- Vendor lock-in. PaaS is currently delivered by a small number of vendors whose interests are heavily rooted in building a binding relationship by creating a comprehensive offering. In this way, they create switching costs that lock-in users. Vendors such as Microsoft have been doing this for decades, and to the extent that the vendor a) remains viable and relevant, and b. responds to the expressed needs of the user community, this is a generally a benefit for both parties in the arrangement. the strategy can go off the rails at couple points though. First off, you need to consider the partner in the relationship. Their instabilities now becomes your instabilities; their failure to continue operations could, by extension, become your failure.
- Understanding the "Flexibility versus Power" curve. Earlier, I referred to two perspectives on cloud computing as being either computist or cloudist, suggesting that the first point of view is more about servers and the second about the services. I now suggest that another dimension of these polar opposites revolves around the issue of how much flexibility you feel that you'll need as opposed to how much power you want already built in to a PaaS or SaaS offering. Generally, you want more flexibility over design, development, and deployment if you're building a custom solution such as a new profit centre (e.g., your own Electronic Patient Record System). You want more power and a more complete service in cases where the function is an expense centre (e.g., payroll services, CRM). This parallels current practice with respect to outsourcing, and the tradeoffs are very similar.
Understanding how to put networked, on-demand to use; how to stand up your service in the cloud is, we believe, becoming a critical success factor, a next step beyond the last great revolution in application development, the development of SaaS technologies via Agile frameworks (for example, Ruby on Rails, Python TurboGears, Google Java Web Toolkit). We suggest that, as important as using the right frameworks for software development have become in the past five years, understanding and leveraging cloud computing has even more important to market success.