Two very often used terms today are Service Oriented Architecture and Cloud Computing. Do the technologies defined by these terms compete or coexist? We, at Vertical Horizons in today’s article aim to look a little into the philosophy that these terms bring into our technological lives.
What is Service Oriented Architecture?
Very intuitively, Service Oriented Architecture or SOA leads us to the understand it as an architecture which orients around services. Services are discrete pieces of software, implemented using well-defined standards and interface specifications. A service, once developed and tested is submitted to a directory or registry so that it is available to other developers. The registry also contains a repository, which contains details of the published service, such as how to construct the interface, what are the expected service levels, maintaining authority, etc.
Very simply put, a typical SOA would look like this:
What is Cloud Computing?
It is quite difficult to accurately define Cloud Computing and there doesn’t seem to be a consensus either on a single meaning. It takes a different meaning based on the utility.
Cloud Computing has two distinct meanings -
- It is the use of the a commercially available service over the internet in real time from storage to web applications.
- It describes the technology and architecture to deliver cloud services, a combination that differs depending on the service being delivered.
Cloud Computing Services are classified as -
- Cloud Infrastructure – provides storage and cloud resources on demand through virtualization or grid computing
- Cloud Storage – Storage as a Service – this builds on cloud infrastructure and focuses on renting of storage on the Internet. Amazon provides a solution for these two services through Simple Storage Service (S3) and Elastic Cloud Compute (EC2)
- Cloud Platform – Platform as a service – offers spaces to develop and operate web-based applications e.g. deployment, hosting, etc. Examples are: Public APIs from Google Maps, Flickr, etc.
- Cloud Applications – Software as a service – where applications hosted on the internet function as a traditional application installed on the physical machine. Some examples are services provided by Google as Gmail, Docs, Calendar, etc.
A quick pictorial representation of cloud computing would be as illustrated below.
What are the benefits of SOA and Cloud Computing?
Advantages of SOA
- SOA services enables business agility. Developers can create applications quickly by integrating available services.
- The services are independent entities and can be invoked at run-time without any knowledge of the platform or the programming language.
- The services follow a set of standards – Web Services Description Language (WSDL), Representational State Transfer (REST), or Simple Object Access Protocol (SOAP) making it easier to integrate them with existing as well as new applications.
- Security via Quality of Service (QoS). Some of the QoS elements are authentication and authorization, reliable messaging, permissions policies, etc.
- No inter-dependability of the service components on each other.
Advantages of Cloud Computing Services
- Reduction in infrastructure cost by saving on procurement of expensive hardware and software.
- Reduction in deployment and setup time of the resources.
- Increase in utilization through virtualization, which allows sharing of servers and storage devices.
- Centralization of infrastructure, reliability, scalability.
- Reduction in maintenance costs of cloud applications as they are continuously updated by the application provider.
What are the challenges of using SOA and Cloud Computing?
One of the biggest challenge is the dependence on the network by both these technologies.
Apart from that the challenges specific to cloud computing are – dependence on the a particular cloud provider, contracts and service-level agreements.
With respect to SOA, one of the challenges that the SOA service providers face today is an enhancement or change requests on the service provided.
Does SOA compete with Cloud Computing?
Some look at cloud computing as an offspring of SOA. It wouldn’t be entirely untrue, as both cloud computing and SOA operate on the principles of service orientation. The illustration below shows how SOA overlaps with Cloud Computing Services -
It is very important to understand that even though there are overlaps between cloud computing and SOA, they focus on different implementations. SOA implementations are primarily for exchange of information between systems and a network of systems. On the other hand, cloud computing focuses on leveraging the network for the entire gamut of IT functions.
SOA cannot be skipped for cloud computing, in fact they are complementary activities. To be able to deliver cloud services effectively, providers must have a very good Service-Oriented Architecture in place.
SOA and Cloud computing have a lot in common, but they are not synonymous and can coexist. SOA seems to have matured in its standards to implement software services. Cloud Computing and its services are still new and also growing with various offerings from different vendors such as Public, Community, Hybrid or Private clouds.
The technological future definitely bodes an era with these two concepts being implemented widely. We would like to hear your thoughts on these concepts as well. Do leave us your feedback and suggestions in the comments section below.