As with most relatively new paradigms, cloud computing is more of an evolution rather than a revolution. Cloud computing as a concept came of age as the Internet, service oriented architecture (SOA) and virtualization converged.
What distinguishes cloud computing from earlier paradigms is that capabilities are delivered "as a service," services are delivered in a highly scalable and elastic fashion, Internet technologies and techniques to develop and deliver the services, and services are designed for delivery to external customers.
With "service" being one of the key characteristics, SOA plays a key role in developing applications on cloud computing platforms. SOA provides a set of principles to ensure application architecture packages functionality as a set of interoperable services. Focusing on loose coupling, SOA allows services running on any platform/operating systems to communicate and interact with each other.
Cloud computing has been defined with three service layers –- Software as a Service, or SaaS, Platform as a Service, or PaaS, and Infrastructure as a Service, or IaaS.
Challenges
Apart from the business challenges (like cost benefit, existing investments, etc.), there are many other challenges in developing on or migrating to cloud. Challenges with cloud computing include the following:
- Security: Consumers of cloud computing platform need to consider issues around application security, data security, and compliance and regulatory needs (PCI, SOX, SAS 70 etc).
- Management and monitoring: Due to lack of control on the virtual infrastructure (especially in Platform as a Service PaaS scenarios), application architecture itself should have provisions to provide better control to administrators on various management aspects.
- Scale-out architecture: Existing business applications have focused on "scale-up" architecture instead of "scale-out" architecture. Scale-out architecture typically exists in most of the Web applications. However, computationally complex tasks and massive data processing may need re-architecting using distributed processing.
- Bandwidth/latency: The scalable nature of platform can clock up bandwidth usage considerably -– if allowed to scale unchecked. Similarly, due to remote location, latency needs to be factored into business use cases and application architecture & design.
- Integration: Applications running in the cloud will require integration with applications running on-premise and other applications in the Cloud. A robust integration platform needs to be designed to facilitate this. SOA plays a critical role in minimizing integration challenges.
- Data Migration: Cloud computing platforms offer highly scalable Distributed File Systems (Amazon S3, Azure Storage, Google AppEngine Datastore) as primary data store. Data Migration from RDBMS to a DFS needs to be factored into the design.
- Lock-in: At this stage, there are no open standards that exist which will facilitate the migration from one cloud provider to another. There are some initiatives around this like the "Open Cloud Manifesto."
-1-