Recently I’ve been somewhat surprised by the lack of understanding of the impact of Cloud Computing. Cloud Computing enables Next Generation IT and provides the long promised alternative to mainframes and surrounding tiers. The recent rushed announcement of the Open Cloud Manifesto confirms that even those late to the party see it as a major sea change in the industry.
There are already hundreds of major corporations leveraging Amazon EC2 and around one million small and medium business using Google Apps for business. Microsoft, Oracle and IBM all offer hosting of their products on Amazon EC2.
The Cloud’s computing utilities enable a nimble start up to compete with the capacity of established competitors’ captive data centers. Cloud programming models promise to democratize the web, enabling end user application development that supports enterprise and even Internet scale applications.
Let’s quickly take a look at the major benefits and challenges of this sea change in computing.
Reduced Total Cost of Ownership
The most widely touted advantages provided by Amazon EC2 are very similar to those offered by traditional outsourced data centers that offer reduced costs for hardware processing, storage, bandwidth and software. The major difference with EC2-like infrastructure clouds is that they are available to any size firm, from an individual backing up their music collection to a major retailer. Unlike complex data center service agreements, EC2 services are pay by use. Finally, they can be accessed easily through a small number of web services.
It is important to note that Amazon also provides additional valuable application services for scalable websites, comparison shopping, billing and shipping. These latter services allow a new boutique store to look and function like an established merchant.
Increased Scalability and Reliability
It follows naturally that hosting the server side of your application in the cloud enables one to leverage the massive international infrastructure of the cloud provider. This brings benefits of backup, reduced latency, fault tolerance and the ability to support peak demands. While many large corporations have such capabilities, far too many small businesses face constant challenges in this area so it isn’t surprising to see SMB move to the cloud first.
3 INCREASED TEST AUTOMATION
Continuous Build and Test is considered best practice today. One of the limitations to more wide spread adoption has been the lack of available build servers. In some cases there are insufficient servers to test for performance. In other cases there was a lack of specific vendor hardware software configurations to test specific platform dependencies. Virtualization combined with cloud infrastructure provides a solution for both of these problems. A young Australian web developer asked his manager if they should stress test their new web application. He received an immediate yes until he explained that they would need at least 100 machines. At which point the manager asked if they could come in on the weekend and pool the development systems. Frustrated, the young developer used 1000 machines on Amazon to perform a stress test costing $700 for the 1 hour exercise. There should be no more excuses for not doing frequent and comprehensive continuous integration!
Enabling Collaborative Applications
The ability to quickly build virtual business partnerships is a key competitive advantage. In a coopetition market place companies form multiple short lived partnerships to exploit rapidly emerging business opportunities and specific niche markets. A crucial success factor in such ventures is the ability to pool information about shared customers, resellers, service and support etc. While such capabilities have been promised by SOA the reality is that they are often inhibited by enterprise VPNs etc. Clouds such as Force.com enable partners to easily leverage each other’s CRM as well as access an emerging market of associated Force.com applications. Amazon provides similar benefits for retailers.
Reduced Middleware Tax!
Despite the improvements in OO middleware by all vendors, it remains an unnecessary hardware and software tax that greatly complicates application development and deployment. The plethora of frameworks and tools is well beyond the reach of many experts let alone normal application developers. In many large companies the middleware legacy is becoming more of challenge than the mainframe legacy!
Cloud programming models provide the potential to substantially reduce this complexity to a small set of cloud services handling the basic needs of federated data access and service to service based communications. Cloud application level services consist of 20 - 30 APIs in contrast to the large surface area of middleware frameworks. Unlike many frameworks, service APIs don’t assume or require that developers understand the way in which the framework is implemented. Instead of low level instance by instance operations, these services support a more application friendly, collection oriented programming style. This use of functional/query operations hides many unnecessary implementation details.
Increased Application Development Agility
Agile Development teams complain that they are blocked by downstream technology and policies with middleware, mainframe or application host operations, services and database units. Cloud Services and Databases provide increased flexibility for application focused teams to execute end to end. Cloud Services provide a simple but narrow API in which application developers have to live.
The use of functional programming patterns such as Map Reduce allows a narrow API to support a large number of functions. The strong specific user functions are passed as parameters and execute in the cloud close to the data. This happens without the need for the application developer to understand the details of concurrency, distribution, persistence representations etc.
Cloud Databases provide schema-less access, often in the form of simple dictionaries, making it easy to create application specific changes. Loose Coupling, which is required for Cloud applications, also greatly facilitates increased Agility.
In return for this agility, the application team must assume the responsibility for deployment, backup and support, all of which use simple cloud services. This means that someone in the team carries the beeper!
Increased End User Computing
Mashup Editors, for example, enable communities to see tailored views and tools appropriate for their needs. These are greatly facilitated through the consistent use of REST protocols. The use of simple ATOM publishing protocols (APP) for legacy data sources makes them available to end users and eliminates the need for special purpose applications for each such source. Once these services are exposed they can be readily assembled by end users using tools such as Yahoo Pipes, QED Wiki etc.
While many cloud services such as map reduce are somewhat complex, recent work on PIG and Cascade promises tools that support a simple pipe and filter metaphor.
4 THE CHALLENGES
Service Level Agreements
The larger the business risk the more important it will be for suppliers and customers to understand what level of services can be relied upon. There is nothing about the cloud that makes this in principle different from any other outsourcing of services. However this will delay many large IT shops from embracing cloud suppliers as well as be a major source of FUD by cloud opponents. Current EITM vendors such as Computer Associates will provide offerings for both suppliers and cloud buyers to monitor their SLAs.
National Data Protectionism
There are significant advantages to having large data centers located near large sources of power and Internet bandwidth. However, for both social and economic reasons national governments around the world are increasingly concerned about the hosting of national data outside of their boundaries. This has led recently to legislation that restricts the retention and in some cases the flow of such information outside national boundaries.
At present, application security beyond authorization is the responsibility of the application and this has always been an area where application developers need help and support. Client side security is improving but remains a challenge largely due to the state of browsers therefore applications need to ensure that critical security is performed outside the browser. To the extent possible all data should be encrypted using strong encryption both over the wire and while stored in databases. While it is ideal to have stateless applications, there are cases where the application needs to enforce transitions. IBM research published some interesting work using a reverse proxy to address this concern. Force.com has demonstrated that using SSL and other best practices they can meet the needs of major enterprises.
Loosely Coupled Service Design
While simple in principle, it is still a challenge to design services so that applications can be loosely coupled. There is a need for more education, training and examples of good and consistent service design. Fortunately, ATOM publishing offers a model that is straightforward for many applications. The current reality is that developers using different suppliers’ services need to understand different protocols and to take responsibility for orchestrated application behavior.
Query Oriented versus API Oriented Programming
Map Reduce, Linq, Streaming and Complex Event Processing require developers to adopt a more functional query-oriented style of processing to derive information such as federated data sets. Rather than a large surface area of OO APIs these systems use an extension of SQL or XQuery like operations where clients pass in application specific functions which are executed against federated data sources. While most developers are familiar with basic SQL, many lack experience doing complex join queries or function composition such as map reduces. Hence education and practice in formulating and expressing query programs is critical for future cloud developers.
Occasionally Disconnected Operation
While the Internet is increasingly available everywhere, mobile applications have driven home the need to support clients that are occasionally disconnected. Client side applications must be prepared to synchronize with the cloud when they reconnect. Google Gears allows a simple web programming model to execute completely on the client with synchronization back to the server. MS Azure incorporates a sophisticated and flexible synchronization framework that enables applications to accommodate several different forms of file and data synchronization.
Cloud Computing promises substantial benefits for small, medium and large organizations. Realizing those benefits will require a focus on new application development challenges as well as the use of new programming models and practices.
About the author
Dave Thomas, "Cloud Computing - Benefits and Challenges!", in Journal of Object Technology, vol. 8 no. 3, May - June 2009, pp. 37-41 http://www.jot.fm/issues/issue_2009_05/column4/