Cloud Computing in the Enterprise

By Nitin Gandhi

Introduction


Cloud Computing has rightly been labeled as the 5th generation of computing after Mainframe, Personal Computer, Client – Server, and the Internet. While the rest of the software industry is growing at a rate of GDP, Cloud computing is expected to grow at much higher rates per year for several years. Merrill-Lynch expects total revenue of Cloud Computing companies to total $95 billion in 2012 from $16 Billion in 2008. This article provides a brief introduction to Cloud Computing for enterprises. It introduces the fundamentals and foundation elements of cloud architecture, benefits to an enterprise, applications that are best suited to leverage cloud computing and limitations to cloud computing.

Foundations of Cloud Computing

Cloud Computing is a platform for delivering software and hardware services. It provides significant cost, time-to-market and strategic planning benefits to an enterprise. With cloud computing the start-up cost for a project is significantly reduced with no long-term commitments. Most systems developed in the last few decades are deeply rooted in scale-up architecture. Cloud computing changes this. With Cloud computing applications are designed from the outset for parallel computing and horizontal scale.

Cloud computing is enabled by the maturity and convergence of several IT technologies including 1) Grid Computing, 2) Utility Computing, 3) Hardware and software Virtualization, 4) Service oriented architecture (SOA) and 5) High-speed internet. Each of these technologies started out independently and their convergence allows software to be delivered as a service over the internet. Let's take a closer look at these technologies:

  1. Grid computing is the ability to use software to harness large collection of computers to perform large tasks. A Grid can conceptually be viewed as one large virtual server. Grid computing allows cloud environments to give an illusion of infinite computing resources available on-demand. However unlike classic Grid environments, cloud environments can also be provisioned to support non-grid applications, such as three-tier and two-tier Web architecture running traditional Web or Web 2.0 applications.
  2. Cloud computing uses "Utility computing", which is the metered consumption of IT services. Typically software usage is metered for CPU usage, bandwidth usage, storage usage and HTTP Requests such as HTTP GET or POST. The overall compute usage is calculated by metering one or all of these metrics. Utility computing provides elasticity by charging a business for only that fraction of computing resources that it used.
  3. Cloud computing is enabled by massively scalable data-centers in which the hardware is provisioned dynamically using virtualization. Software virtualization allows hardware resources such as disks, CPUs, and memory to be "abstracted-out" into a pool and allocated and unallocated dynamically. Virtualization techniques use hypervisors and fabric-controllers to logically assign and abstract-out hardware resources. At cloud computing scale, virtualization is based on bare-metal hypervisors and no intermediate operating systems are involved. Bare-metal hypervisors run directly on the machines and provide virtual machines fine-grained timesharing of hardware resources.
  4. SOAP with the WS-* protocol stack and REST architecture are the core building blocks for cloud services and provide the integration points. Typically Light weight services that are exposed on the Internet our based on REST architecture. Services that have complex transaction logic, security, or business logic are more often based on WS-* and SOAP. On the flip side SOA based services benefit significantly from the cloud platform as it brings SOA projects down-stream by allowing them to be constructed most cost-effectively and faster.

The Datacenter-less Enterprise (The Virtual Datacenter)

It costs over $3B to develop a semiconductor fabrication line today and only a handful of companies such as Intel justify owning and operating their own fabrication plants. This motivated the creation of semiconductor foundries that build chips for others. The foundries enabled "fab-less" semiconductor chip companies who focus on chip product-development, chip design and QA. The "fab-less" concept has spurred the creation and growth of an entire industry with companies such as nVidia by eliminating a significant barrier to product development.

Similarly, cloud based services can provide significant cost savings to an enterprise based on certain economies of scale. The bare-metal virtualization logic described earlier is based on statistically multiplexing several customers onto a single hardware resource. A CPU can be simultaneously rented to many customers with no interference with each others' usage. The hardware multiplexing logic is completely transparent to a business utilizing a cloud service. Further, extremely large-scale, container-based datacenters located close to power generation facilities can realize another 70% reduction in the cost of electricity, network bandwidth usage, operational staff, software licenses, and hardware.

The cost savings realized by cloud service-providers result in low usage metering rates for services. This enables datacenter-less enterprises that can focus on design and product-development and rely on the cloud for infrastructure services (IaaS), platform services (PaaS) and software services (SaaS) wherever possible. For example, Web based product Animoto.com scaled from 50 Amazon EC2 servers to 3500 servers in 3 days when their Facebook application took off. More importantly it also scaled down back to 100 Amazon EC2 servers when the Facebook euphoria was over.

In summary, Cloud computing converts capital expenditure (Cap-Ex) to operational expenditure (Op-Ex) and the new Op-Ex expenses are significantly lower. It provides an environment that automatically scales -up and automatically scales-down with no long term commitments. The risk of miscalculating and incorrectly projecting load requirements for a project is eliminated and the barrier to getting started and deploying high-availability hardware with cloud computing is zero.

Enterprise Projects Best Suited for Cloud Computing

Several types of enterprise applications are suited for cloud computing. These include applications with pipeline or workflow logic, heavy processing logic, Websites, parallel batch processing, and analytics to name a few. For example,

  • Cloud computing is well suited for hosting all tiers of Websites. Websites typically use fewer resources at night and more during the day. With Cloud computing the infrastructure is automatically provisioned and scaled-out based on usage.
  • Cloud computing can be leveraged to create a document processing pipeline that converts hundreds of thousands of documents from Microsoft Word to PDF. It costs the same to get 1000 servers for 1 hour as it costs for 1 server for 1000 hours.
  • Applications that OCR millions of pages/images into raw searchable text
  • Video transcoding applications that transcode video formats from AVI to MPEG
  • Applications that require data-mining over millions of records
  • Search based applications that require a lot of data to be indexed frequently
  • Image processing applications that require the creation of thumbnails or resolution changes for millions of images.

Batch-oriented parallel processing applications are also well suited for cloud computing. Some of these applications include:

  • Back-office applications for the financial, insurance and retail sectors
  • Daily, weekly and monthly analysis of large volumes of log data
  • Source code builds, including nightly builds
  • Automated testing, specifically load-testing scenarios

Limitations of Cloud Computing

  1. Vendor Lock-in: For the most part, cloud environments are proprietary and vendor specific. All major cloud platforms namely Amazon, Google, Microsoft, and others have proprietary data-formats; they use proprietary coding languages, and have proprietary API specifications. For example Microsoft's Azure platform is based on .NET and Google's App Engine is based on a proprietary version of Python. As a result interoperability between cloud computing systems is currently not possible and vendor lock-in is a fact of life. Putting it into perspective there are 150 standards supporting Service Oriented Architecture (SOA) and none for the cloud. This may also not be an issue as we already live with vendor lock-in in every other area of the technology stack including databases (SQL Server, DB2, Oracle), languages (C#, PHP) and third party applications.
  2. Compliance: with regulatory issues such Sarbanes Oxley (SOX), and HIPAA may preclude applications from moving to the Cloud. Data-location may also be a barrier to moving to the Cloud. For example, financial companies in Canada are weary about moving sensitive data to the Cloud as the US government can access it anytime under the Patriot Act.
  3. Availability and Service Level Agreement (SLA) of service must also be considered. Cloud services may go down either for maintenance or in error. Recently Google's Gmail was down for 2 hours and it took twitter down with it because everyone started twittering about Gmail being down. It's important to understand the SLA levels provided by your cloud provider and its impact on your business. But while SLA for cloud services must be a consideration, cloud service providers are far better equipped to deal with outages than internal data-centres. With more and more redundancy being added to cloud data-centres the SLA for cloud based services will eventually far exceed that provided by private data-centres.
  4. Performance and data-transfer bottlenecks are the next factor to consider. At $100 to $150 per terabyte transferred, these costs can quickly add up, making data transfer costs an important issue.
  5. Security is often brought up as an issue. Arguably Microsoft, Google and Amazon spend billions of dollars on their data-centres and have put in more thought and capital investment in making their data-centres more secure than internal data-centres created by small and medium sized companies.

Conclusion

Getting the architecture right is critical to successfully using a cloud platform. Cloud computing must relate back to architecture and architecture should relate back to business strategy. Cloud computing is also an architectural approach. It is something you may use in your overall architecture mix.

Cloud computing is manifestation of several important technologies coming of age and converging including utility computing, Grid computing, Service oriented architecture (SOA) and Virtualization technologies. Based on the economies of scale achieved, cloud providers can provide significant cost savings, time-to-market and strategic planning benefits to an enterprise. Cloud computing in the enterprise has a very bright future; the caveat here is the enterprise needs to get the architecture right.

About the Author


Nitin Gandhi is an IT consultant in software architecture, software design and development. In the past, Nitin has held senior consulting roles on several large projects for insurance, telecom, financial services, government, and healthcare sectors. Besides development he is passionate about "The Cloud", "SOA" and "SOA Governance". Nitin has an extensive background in Microsoft products and technologies, including .NET, BizTalk Server, SQL Server, WCF, WF, and SharePoint.