Is Cloud Computing Ready for the Enterprise?
As one analyst covering the tech industry commented to me, cloud computing, or the cloud, seems to have risen on the hype curve at an amazing speed. A few months back the term hardly but now every technical analyst, journal, vendor and conference seems to be abuzz about it. Given all this hype, it is surprising we dont have an agreed upon definition of just what the cloud is. At times it is compared with utility and grid computing and other times confused with SaaS and virtualization.
The simplest way to understand cloud computing is to think of it in a usage scenario. In this paradigm, a provider hosts a service and provides access to consumers over the Internet via standard protocols like HTTP, REST or SOAP. The service may be end-user software, a compute facility, a storage facility, a development platform, a business process or a hosting platform. The service is typically off-premise from the consumer and the consumer should not have to worry about installation of software or administration or management headaches.
Applications that utilize the cloud also come in multiple flavors. They may range from an end to end application hosted in the cloud (like Salesforce.com) to an on-premise application using some services from the cloud (e.g., an application that utilizes Amazons S3 service for data storage), to a custom application totally written for and hosted on one of the cloud platforms (e.g., an application written and hosted on Bungee Connect or Microsofts Azure offering).
Just like most new paradigms, cloud computing is more of an evolution rather than a revolution. It has really come about due to the evolving trends surrounding the Internet, service oriented architecture (SOA) and virtualization. The Internet is evolving from a medium that is purely used to access documents into a network of applications that provide access to a rich set of functionalities for the end users.
Similarly, with the advent of SOA in the enterprise and beyond, many of the tightly bound applications have become decoupled into smaller modules that can be served via services over private networks and the Internet. Finally, virtualization is not only allowing enterprises to consolidate their infrastructure but also allows service providers to offer a shared-infrastructure environment that acts as a foundation for cloud computing.
So, is cloud computing really ready for the enterprise? Before we answer the question, lets examine the typical advantages that cloud computing will provide:
- Usage based payment model: In the cloud computing paradigm, an end user should only pay for a service based on the amount of usage. This lowers the barrier of entry for an application to be deployed on a cloud infrastructure and allows a small business as well as a large enterprise to avail of the same service.
- Scalability and Elasticity: Many applications in a given enterprise are sized and built for the maximum usage scenarios like the Christmas season. Many times the infrastructure they are deployed on has very low usage during normal hours. A cloud computing environment should be massively and seamlessly scalable to handle the up-tick in usage of a given application. Most service providers like Amazon, Google, Salesforce.com, Yahoo, Microsoft have architected their environments to handle these surges. However, the smaller and newer players need to be evaluated to see how well they fare against this criterion.
- Support from vendors: Some vendors have just renamed their SaaS or infrastructure offering and call it a Cloud offering but many players (large and small) are making a genuine effort to offer solutions that embody the key tenants of a cloud computing paradigm. Amazon with its EC2, S3, SimpleDB and other services has been providing a cloud computing infrastructure for some time.
Similarly, Google has its AppEngine and file store (GFS) and data store (Big Table) services and Salesforce.com provides Force.com as a general purpose platform for building cloud applications. Microsoft has recently announced its Azure offering that will allow the creation and deployment of applications in a Microsoft (or partner) infrastructure. Azure will also contain data, security, workflow, messaging and Microsoft Live services that will allow enterprises to create richly featured custom applications in the cloud. Such support from the leading vendors bodes well for this paradigm.
- Reliability: Despite some of the much touted outages around Google and Amazon, a cloud infrastructure may actually prove to be more reliable in the long run than a typical enterprise infrastructure. The leading cloud providers are already building massive redundancy in their systems and are learning from their past mistakes to provide a greater level of visibility around outages. After it becomes a core business, they will be in a better position to learn from mistakes and quickly adapt to providing much better reliability than a given enterprise app.
- Data security and privacy: Given the multi-tenant nature of a cloud infrastructure, vendors typically dont guarantee that the data of Company X will be physically isolated from that of Company Y. In addition, given the massive scalability requirements, there may be no guarantee on the physical location of data. This can be uncomfortable for enterprises that need to comply with national or international regulations around business transactions and related data. One can argue that over time regulations may catch up to this massively distributed and multi-tenant environment or service providers may come up with certain premium services which provide all the necessary guarantees.
- Data access and storage models: Whether its Amazons S3 and SimpleDB service or Microsoft Azures Data Service the storage models offered today need to account for many diverse usage scenarios. Hence they have deviated towards a simple blob based storage model or a simple hierarchical model. This offers a lot of flexibility but it also puts a lot of burden on application logic to decipher the relationships between different data elements. Many transactional applications that rely on relational database structures will not be suited for such a data storage model.
- Standards and lock-in: Most vendors have defined a standard based mechanism (HTTP, REST, SOAP, etc.) for access to their services. However, standards around how to develop services within a cloud are just evolving and the ability to write once and run anywhere is not there today. The way you would develop an application using Googles AppEngine will be very different from how you develop something on Microsoft Azure or on Force.com.
It is not easy for an application developed using one vendors programming model to be migrated to a different vendor and hence a certain lock-in is built into the model. Consortiums like Open Cloud are just emerging that will encourage open source based software
development in the cloud and also think of interoperating standards.
- Handling failures: Given the massively distributed nature of cloud applications, it may not be easy to understand what kinds of failures are happening and where. Applications have to be built that handle failures as a normal execution path rather than as an exception.
- Economic model: Pay by use model has certain advantages but if the usage is going to be consistently very high, the economics of the model may start breaking down. Vendors need to start thinking about allowing ceilings on the payments if high transaction applications are to start using a cloud paradigm.
As you can see, the whole paradigm is relatively new and the definitions, working model, and services provided by different vendors are still evolving. Before aligning with any given vendor a thorough examination of their service offerings, quality of service, security model and payment models needs to be examined.
Overall, the model may be ready for certain kinds of applications in the enterprise but certainly not for mission critical and highly transactional applications. Applications that may expect certain surges of usage or that need a variable storage capacity would be well suited for cloud computing. It wont be easy to migrate existing applications to the cloud (without some major rewrites) but new applications can certainly take advantage of cloud-based services to fulfill certain needs. Even for new applications, design patterns, security models, storage models, residence of business/compute logic, handling of failures need to be structured with a cloud infrastructure in mind. As the CIO you should examine the roadmap for new applications and see how they can leverage this evolving paradigm.
Kamran Ozair is executive vice president and CTO of MindTree Ltd.
Ozair oversees technical competence creation, technology direction, building key alliances and the financial planning for MindTrees Technology Practices for IT Services. Prior to co-founding MindTree, Ozair was a director at