You are on page 1of 14

White Paper

What really is SOA. A comparison with Cloud Computing, Web 2.0, SaaS, WOA, Web Services, PaaS and others.

Author Ejaz Jamil Chief Architect, Soalib Incorporated

SOALIB

Service Oriented Architecture Libraries

Contents
What really is SOA. A comparison with Cloud Computing, Web 2.0, SaaS, WOA, Web Services, PaaS and others. 3 1.1 Abstract 3 1.2 Introduction 3 1.2.1 Cloud Computing..................................................................................5 1.2.2 SaaS......................................................................................................7 1.2.3 Web Services........................................................................................7 1.2.4 WOA.....................................................................................................9 1.2.5 POA and PaaS.......................................................................................9 1.2.6 Web 2.0................................................................................................9 1.3 Why So Many Variations 11 1.1 Conclusion 11 1.2 About 11 1.2.1 About Soalib, Inc.................................................................................11 1.2.2 About the Author...............................................................................12 1.3 Glossary 12

What really is SOA. A comparison with Cloud Computing, Web 2.0, SaaS, WOA, Web Services, PaaS and others.
By Ejaz Jamil, MSEE, MBA, Chief Architect, Soalib Incorporated

1.1

Abstract

Service Oriented Architecture, SOA, is a term extensively used without in depth knowledge of what it is and what it is not. People get frequently confused with other terms like cloud computing, Web Services, Web 2.0, SaaS, WOA, POA, PaaS and so on. This paper is a clear comparison among these various terms and acronyms and their relation to SOA.

1.2

Introduction

Service Oriented computing is nothing new. This was the model 30 years ago, when green screens were widely popular. IBM was the major player at that time and one of the biggest maker of mainframe computers. Overtime, the mainframe based computing has moved to client and server architecture, in which server is considered a less powerful than mainframe but significantly more powerful than client computers. The client and server model gradually faded into the cloud model, in which servers are considered any service provider on the network with no restriction on the size of the server. The question frequently arises that why is the come back of the computing model that was the driving force over 30 years ago? The answer lies in the redefinition of data. A computer processes data. In those early days, the size of data was considered large compared to the processing power of terminal devices. The reason we are seeing a repeat of the same thing that we saw before is because the size of data today is becoming too large compared to the amount of data that can be stored in an individual PC. In general, we are seeing all of the following today: 1. Data sizes are large 2. Data is distributed 3. Data changes frequently 4. Data sharing needs a common mode of exchange 5. Data backup requirement 6. Data processing requirement 7. Speed of Network

A typical data intensive application processes data fed to it by the user but in many instances, it needs to get data from external sources. As an example, weather information must be obtained at real time from a weather service provider's computer to get up to date weather data in order to predict meteorological forecast. Therefore, data must be obtained at real time from data providers rather than keeping the data static in a PC's hard drive. In addition, each data format is quite different. In order to share each other's data, an agreed upon format must be used. XML format is presently one standard way of exchanging data. Data sizes can be remarkably large. Consider the amount of data needed to store the map of the entire globe as we see in a Google map. Or consider the amount of data there are in all the video files in YouTube.com. In many cases, the size of data processing can be so large that a single server (however powerful it is) may not complete the job in reasonable time. This will call for grid computing, or parallel distributed processing in order to divide the job to remote servers to finish the job in parallel. Speed of network is measured in Megabits or Gigabits as opposed to baud rate (at term used in digital communication to represent symbols per second) used to describe speed in earlier phone modem. The Internet itself is a vast source of data. There is data for every possible thing you can imagine. It is not practical to store all these data in a single centralized place. If it were possible, then there had been no Internet. In its present state, Internet is not manageable. There are abundant source of duplicate and redundant information. Search engines relies on technologies that does not read human mind, and therefore will never be perfect. If a search engine could be built that can read all the pages of the all the docs and web sites on the Internet and interpreted them just like human, and eliminate redundant, duplicate, fake contents, there would not have been a need for any other kind of computing, because the search engine could answer anything. This is not yet possible, although not impossible many years from now. Service Oriented computing is more manageable due to the fact that services respond to specific requests by clients. Unlike search engines, which scans through practically all sites which is registered into the search engine, service oriented computing is scanned by clients from service registries. A service registry is a database of all the various kinds of services offered by service providers. A search engine can search these registries as well, but the utility of the service registry is to do search (discover) for specific services and then consume them usually by service consumers. This is why services should be discoverable and discoverability is an important concept in SOA, a concept similar to search engines, which discovers new sites from links. Service based computing leads to the term Service Oriented Architecture (SOA), a technology architecture which focuses on building systems based on services. The term service is very broad in SOA. It does not necessarily mean software. In the definition itself, SOA does not limit the architecture to software

system design only. In fact, it is now being used in hardware and embedded appliances design too. What does SOA promise? You will find various definition of SOA when you search on the Internet. But all definition leads to the same common conclusion as defined here:

SOA is a design pattern which is composed of loosely coupled, discoverable, reusable, inter-operable platform agnostic services in which each of these services follow a well defined standard. Each of these services can be bound or unbound at any time and as needed.
You will note that this definition does not indicate what is the service about. There is no indication of software in this definition. Hardware can easily be designed based on SOA architecture, and there is no limit to what this architecture can do. SOA can bridge the gap between the very proprietary world of embedded systems and the world of enterprise software. As more companies look towards building integrated systems, SOA will begin to play one of the most important role in integration, inter-operation, interaction and intercommunication. SOA is an architecture, not an implementation of the architecture. Similar to a building architect, who visualize and designs and card boards the model of the building, a SOA Architect does the same for SOA. Just as a building architect studies the land, geography, climate, weather, soil, history, region, culture, materials in order to design a building such that it stands out nice and at the same time meet the objective of the investor; similarly, a SOA Architect is the professional, who must study all system applications, legacy or modern, communication protocols, interoperability, data format, operating environment, available resources, budgetary requirements and so on in order to design a software which can be exposed as services for consumption. SOA itself does not define any standards or protocol. Neither does it enforce or limit of its use. SOA should be seen as a broad term meaning a wide range of technologies. As shown in Figure 1, all the various other software as service terms are compared. As may be noted that SOA and Grid Computing is the bottom of the floor on which all other acronym is based upon. We will come back to this figure as we proceed with our discussion with other terms used to describe software used as service. 1.2.1 Cloud Computing

The familiar term Cloud Computing also approaches Software used as a service for consumption over the Internet (the cloud). But, cloud computing somewhat expands SOA by adding scalability and grid computing. Scalability is required when software is used as a service due to the fact that as more and more of the service is instantiated, hardware resources are utilized and scalability becomes a requirement. By adopting Grid computing, processing power for each service may be increased as well. A practical example of Cloud Computing

infrastructure is the Amazon's EC2 system, which is composed of many virtual machines, which may be instantiated at runtime to scale the system. In most cases, SOA based applications are deployed and hosted on a cloud network like the Amazon's EC2.

Internet

Web 2.0 Web Browser WOA

SaaS

Web Services Cloud Computing Service Oriented Architecture (SOA) Grid Computing

Figure 1: Software as Service Architecture Comparison

The word Cloud Computing is not associated with any particular technology, protocol or vendor. It allows cloud applications to service the consumers (usually via websites, client applications, and so on) assuring that the service will have a single point of access and all the scaling, parallel computation, virtualization and whatever technology is used on the back end will be transparent to the client. From this perspective, Cloud Computing is a model rather than an architecture. Not all SOA based applications (like web services) are cloud based. It is not necessary to host a web service on a cloud using the elasticity concept. The cloud architecture is probably the best way to efficiently host a web service due to the following fact: 1. There is no limit to the size of data 2. There is no limit to the processing power 3. There is no limit to the number of service instances

A well designed SOA application must not be limited in resources, processing power and processing time. Cloud architecture attached to grid computing ensure that the SOA applications take advantage of the elasticity of the cloud (and also grid computing) to process a service within a finite amount of time. The true success of SOA application depends widely on its deployment in the cloud and taking advantage of its elasticity. 1.2.2 SaaS

Most people confuse Software as a Service (SaaS) with Service Oriented Architecture (SOA). Do they mean the same thing? Which becomes an obvious question due to the similarity of the meaning of each term. As explained before, SOA is an architecture, whereas SaaS is a term used by a group of companies or individuals to mean that they are hosting a set of software services over the Web. Just to clarify a point: SaaS focuses on Software Hosted As A Service, while SOA focuses on Software Designed As A Service. SaaS may be considered as a consumption model in which a user is involved and SOA as a design model in which there is no restriction on who the consumer is. After all, all SaaS implementations do follow the SOA concept. SaaS has a web association, whereas SOA does not restrict its use on the web only. So, SaaS generally means using software as a service over the web in which some kind of protocol is involved, which is used to intercommunicate between the client side application and the server side software service. Traditionally, SaaS services use REST (Representational State Transfer) services, a style of communication attributed to Roy Fielding's doctoral dissertation, but another popular protocol, SOAP (as discussed later) is also used. SaaS services are also hosted on the cloud just like web services, but a SaaS application usually calls the services using RESTful services, where as web services make calls using RPC (Remote Procedure Call). SaaS services are deployed into the cloud just as web services and may even be implemented using web services. SaaS may be a wrapper on a legacy software written in a different languages and in a completely different architecture. Traditionally, SaaS clients are exposed through a browser using Web 2.0 client like SalesForce.com, which exposes their CRM product through their website. SaaS services may also be consumed by non-web clients by binding to the service using various API. Each SaaS vendor offer these API. 1.2.3 Web Services

Web Services is one of the most active and widely adopted implementation of SOA. It is based on an interoperable protocol called SOAP (Simple Object Access Protocol) and all communication between the server to client, client to client or server to server and in general application to application, uses the same protocol. Web Services technologies are being continuously standardized to ensure

interoperability and security. Due to this reason, Web Services based SOA work from embedded systems to mainframes, from C to Java programming languages. Web Services make calls to web methods exposed as a service by sending and receiving SOAP messages. Web Services are regularly being considered as one of the most advanced form of SOA implementation and usually one of the most matured as well.
Protocol Standardization WSInteroperability WS- Security WS- Policy etc...

Web Service Layer

SOAP SOAP SOAP

Web Service Layer

Application

Application

Figure 2: Web Services Implementation

Like SOA, Web Services do not limit any kind of transport for message delivery. It is merely required for a web service to deliver the SOAP message to the target by any means (See Figure 3). Therefore, web services may be operated over HTTP/HTTPS (the traditional approach), or Java Messaging Service (a message based asynchronous approach), over FTP (a file based approach), and just about any other transport protocols. Web Services are discoverable by the clients by searching the UDDI (Universal Description, Discovery and Integration) directories, which publishes the web services as standard contracts like WSDL (Web Services Description Language). A WSDL is a contract document, which is merely an XML document based on WSDL schema, which describes the messaging format of the exposed services. It is this WSDL, which clients are interested in. The client fetches the WSDL and interprets the XML grammar then either builds stubs and proxies or makes dynamic invocation of services. In most cases, WSDL documents are static and do not change very often. Therefore, most programming languages generate stubs and proxies for the client from WSDL. If the WSDL document changes from one version to another, most vendors keep the old bindings and just add new bindings. Therefore, the older clients continue to work. Web Services technology is usually more complex than other SOA implementations like REST because of many other standardization attempts as the WS-* standards. The two most important WS-* standards are WS-Interoperability and WS-Security, which is now widely accepted across various WS implementations. Other standards like WS-Policy, WS-ReliableMessaging, etc seeing

more acceptance. A web service server or client does not have to support all these standards. Due to steep learning curve in understanding all the WS-* standards, it is usually much less effort to use off the shelf SOA Libraries like SOALIB to support these standards built into it. By using SOA libraries, the WS developer has a much shorter learning curve and become productive in a very short time. 1.2.4 WOA

Web Oriented Architecture (WOA) is an area of SOA that focuses on exposing services over the Internet and consumed by using a web browser. Generally speaking, this architecture is just limiting the view of SOA to the web technologies, by using HTTP/HTTPS as the protocol for transport and REST and web services for invocation and messaging. 1.2.5 POA and PaaS

Platform Oriented Architect (POA) and Platform as a Service takes the concept of using web as the platform. PaaS providers offer application API and services so that the user consuming these API may write their own applications and run their application using these API in the provider's server. The application is run independently of other applications and the user has full control of the entire application. POA is the architecture on which PaaS is designed. There is practically no difference between SaaS and PaaS when it comes to service consumption. The only advantage to PaaS is that it offers development and service hosting opportunity, where as SaaS is already hosted. 1.2.6 Web 2.0

Web 2.0 was the most discussed topic on the Internet for the past few years and most people have heard of it. Whatever promise does it bring, it merely is a vague description of web application technology that runs on a web server and make the site to provide more interactive browser experience. There is no Web 2.0 application server not there is any Web 2.0 API or specification. It is merely a confusing marketing term to mean a set of new addition to the traditional refresh and reload kind of web site, in which every request reloads the page from the server, making it more interactive and smooth. Web 2.0 may be thought of as the dividing line of the previous kind (refresh/reload) to the more interactive, drag and drop, dynamic web sites. So, does any web site that is highly interactive become Web 2.0? We will answer this in the next paragraph. Javascript is a scripting language used in web browser to make the web site highly interactive. There are web sites (highly interactive), which is entirely written on javascript. These sites work like applications. Similarly, there are websites written entirely based on Adobe Flash technologies, a clear example are http://disney.com. Java Applets are Internet based Java applications that run

inside the browser within the memory space of the browser. Applets can be written highly interactive as may be experienced by some online games offered as applets. There is no clear definition of the line where the Web 2.0 divides the line with Web 1.0 (conceptually). Anything is considered Web 1.0, if it is not Web 2.0. So, if a website is highly interactive which uses plenty of javascript, interacts with Adobe Flash and Java Applets, is it Web 2.0? To me, yes. But Tim O'Reilly's makes it much more complex: http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-isweb-20.html but, the definition of Web 2.0 is not needed to be some complex. The best definition of Web 2.0 which I quote after studying about it is as follows:

A web browser based web application, which is designed to enrich user experience with interactivity by use of integrated web components, where each web component enhance application integration and inter-communication.
If the above is accepted as the definition of Web 2.0, then javascript, Adobe Flash, Applets, SOA, SaaS, REST all falls inside the Web 2.0 definition as web components as shown in Figure 3. A typical Web 2.0 application should interact with all emerging technologies, which appear as a web component from the perspective of the web application. The web application itself can be a web component. The above definition somewhat clarifies the vague definition of Web 2.0 but at the same time keeps the definition to various interpretation with the term web component. In my definition, a web component is any technology that may integrate, interact, inter-communicate or inter-operate with a web application as if it is an integral part of the application.

Web Services

Applets

Internet

Flash HTML

Web Components Javascript

Web Browser

Figure 3: Web 2.0 conceptually.

1.3

Why So Many Variations

So why there is so many different terms for the same concept. Historically, SOA concepts were too misused and many people have confused the entire concept by stating things about SOA, which SOA is not. Many technologists have tided SOAP protocol with SOA, which was incorrect. SOAP is simply an XML messaging protocol, which is used in Web Services, it has nothing to do with SOA. While, Web Services do implement the architecture of SOA, and therefore, SOAP is related to Web Services only. In addition, there is a growing number of articles, which associate WS-* standards as SOA specification. But all WS-* related standards are related to Web Services. It is also not uncommon to find articles which says SOA and RESTful services as the same thing. RESTful services are a way of implementing SOA where SOA is the architecture. Many articles may be found that speaks of SOA using the Internet as a service consumption media. But, this is only a limited view of SOA. SOA does not limit any transport or media to consume services. It could be Internet, JMS, FTP, SMTP, or just name any protocol or your own protocol. The two most important terms to be learned from this whitepaper is SOA and Cloud Computing. All other terms are derived from these two key terms.

1.1

Conclusion

Conceptually, SOA dates back to over 20 years, when green screen terminals were popular. SOA evolved over time and Web Services specification were proposed. Then gradually new terms started to muddle up the basic concept. Each company add slight variation of SOA and call it by a different name in order to market and position their products. As SOA starts to mature, you will hear more new and confusing terms, new acronyms, buzzwords, but do not forget that the seed of all those jargons were derived from Service Oriented Architecture, the most general concept upon which all service based software design is approached.

1.2
1.2.1

About
About Soalib, Inc.

Soalib Inc. has developed a suite of SOA libraries that allow companies to develop SOA applications more efficiently, more effectively and over a much shorter time-frame than any other SOA technology. These pre-built libraries are designed to work across a wide range of operating systems, application servers, client environments, programming languages, mobile devices, security environments and databases, collectively known as Operating Environments. Soalib

products have been developed with a totally platform agnostic approach for the true integration of multiple languages, diverse technologies, disparate databases and heterogeneous legacy platforms. Due to various complexities involved in service design, SOA development can not be taken lightly. Soalib's SOALIB pre-built services products, completely eliminates the development and test period needed to duplicate these functionality from scratch. Please contact Soalib for more information on how to best design, test and develop your SOA services in the most cost effective fashion. 1.2.2 About the Author

Soalib is the brainchild of Ejaz Jamil, the Chief Architect of Soalib Incorporated. Since 2004, Ejaz and his team have developed SOA services with a focus on building tested libraries which work from embedded systems to mainframes. Ejaz brings years of embedded systems experience with Texas Instruments, where he worked as an Embedded Systems Engineer and Mathworks, Inc, the Natick based simulation software company, where he developed complex products for the embedded systems industry. Back in 2003 Ejaz understood that the True power of SOA comes from the integration of real-time embedded systems devices with all other technology platforms. Soalib's core product, SOALIB solves this heterogeneous integration problem for companies embarking on global projects using standards based SOA. Ejaz Jamil has a Masters degree in Electrical Engineering from University of Colorado at Boulder and MBA from University of Texas at Dallas. Ejaz can be reached at soalib@soalib.com or via telephone +1-508-460-1116.

1.3

Glossary
Referred to as machines where data is collected. Typical machines are PCs and applications, mobile phones or devices, embedded systems devices, enterprise applications and others that collect data. A kind of computing which assures elasticity in terms of storage space, processing power and bandwidth for applications serving from a network. A generic term to indicate where all data is collected from the clients. Usually a very large database management system.

Client Machines

Cloud Computing

Data Hub

GSOALIB J2ME JDBC

Green SOALIB, a SOA Appliance product by Soalib Inc. Java Version 2.0 Mobile Edition Java Database Connectivity, the database driver technology

for Java programming language.

JVM ODBC

Java Virtual Machine Open Database Connectivity, the database driver technology used to access from traditional programming languages like C/C++/VB, etc.
Operating environment as all combinations of the following: operating systems, application servers, client execution environment, programming languages, mobile devices, embedded systems, mainframes, security environment, databases and standards compliance.

Operating Environment

PaaS POA REST RTOS SaaS SOA

Platform as a Service, using the POA model to develop a software. Platform Oriented Architecture, a model of SOA, using Web as the platform. Representational State Transfer Real Time Operating System Software as a Service, a model of SOA in which application is used by a user from the web usually using a browser.
SOA is a design pattern which is composed of loosely coupled, discoverable, reusable, inter-operable platform agnostic services in which each of these services follow a well defined standard. Each of these services can be bound or unbound at any time and as needed.

SOALIB

Service Oriented Architecture LIBraries, a core product of the company. A set of SOA compliant libraries that integrates embedded systems to mainframes. Simple Object Access Protocol, the most common XML based inter-operable protocol used for communication to and from web services. Universal Description, Discovery and Integration
A mixed hardware and software process that consume the same hardware resources in a single server such that none of the hardware resources (processor, memory, hard drive) used by one process affect other processes. Each process remains completely independent to all others. A phrase with no absolute definition to mean web

SOAP

UDDI Virtual Machine Virtualization

Web 2.0

applications that enrich user experience. Soalib's definition is: A web browser based web application, which is designed to enrich user experience with interactivity by use of integrated web components, where each web component enhance application integration and inter-communication.

Web Services WOA WSDL

The most advanced implementation of SOA which uses SOAP, WSDL, UDDI.

Web Oriented Architecture, a phrase associated with SOA on the web.


Web Services Description Language, an XML document which describes the messaging format for each of the exposed services in a web service. Extensible Markup Language

XML

You might also like