What is ESB?

Few days back, one of my friends asked me, what is ESB? How does ESB fit in SOA? It was an interesting question. Let me explain how does ESB work for SOA.

     Initially when organization was going to webservice they were getting issue with integration, orchestration, communication, transaction with services etc. Whenever they were making any change in vendor or services, this change was propagating to code and application. It was big change management for any small change in business or vendor services. It was also taking long time and resources to make any change in business or vendor services. There was no clear SLA (Service Level Agreement) between consumer and service provider.

   ESB (Enterprise Service Bus) gave major contribution to overcome all these issues. ESB is back bone of SOA. It provides pluggable architecture which enables easy decoupling of producer from consumer. It is an extension of EAI (Enterprise Application Integration), an earlier version of middleware, but it adds several other features. ESB is XML based technology. You can define end point, routing rule of message, transaction, or security in xml without doing any line of coding. ESB has clear SLA (Service Level Agreement) between consumer and service provider. Here are the main features of ESB.
1. Service Virtualization – ESB provides loosely couple architecture. You can couple or decouple your services without touching any part of code or services. In ESB you can define end point for each services and their routing rule. You can easily add or remove these services from ESB. Service virtualization gives an ability to define abstract service end point instead of using actual physical address.

2. Service Enablement – Organization were struggling to enable legacy system as services. ESB adapter such as JDBC adapter, Mainframe adapter etc., gives more flexibility to create SOAP based Webservice of any organization. This functionality reduces your IT investments and you can reuse your existing system.

3. Asynchronous Communication – ESB is the key infrastructure for message process and rerouting. ESB provides the platform for asynchronous message with intelligent transformation and rerouting to ensure messages are passed reliably. Services participate in the ESB using either Web services messaging standard or the JMS (Java Messaging System).

4. Protocol Bridging – ESB provides bridging between inbound message and out bound message. Like ESB gets inbound message as HTTP protocol and send to outbound as JMS protocol in one message flow. Both inbound message and outbound message communicate each other without knowing each other protocols.

                       

Why SOA?


In my last blog, I explained about SOA. Now, I am going to explain why we need SOA in addition to all existing technologies. Why is business embracing this technology?
Our IT industry is around 40 years old. When IT industry had started, most of the applications were running on Mainframe. Most of the applications were available through centralized server (Mainframe server). Now IT industry is maturing and it is growing from a centralized infrastructure to a distributed infrastructure. Organizations are transitioning from bus computing to cloud computing. There are many software applications, software platforms and operating systems in there market. Business models are also changing very fast. IT industry is also changing along with business models. IT industry has to support both legacy systems and new systems.
 
SOA is a good solution to make a code work with new system and the legacy system at same time. I am summarizing some of the points, why I feel that an organization should implement SOA.

  1. Modular and loosely coupled  — SOA cuts big monolithic systems and services into small modular services. SOA not only disengages the process from system but it also makes loose couple among systems. If, for instance, a SOA implemented organization wants to implement a new service (Internal service, External service or Cloud based services), it can just plug that service or remove that service from the organization system without touching any existing system.
  2. Business Driven  — Now a days, business changes very fast. Mergers and Acquisitions are very common phenomena. Business needs are also changes frequently. There are different permutations and combination coming in market. IT also has to synchronize with all these business permutations and combination. SOA gives flexibility to work with all these changes with minimal effort. SOA is very close to business as well as the business people. One can define or change business process to address business needs in very small time with minimal effort. In short, organization business can change quickly along with the fast changing market.
  3. Platform IndependentSOA is completely platform independent. SOA service client or consumer can use SOA service without knowing SOA service provider platform, language or operating system. So, one can write SOA service without worrying about who is going to consume the service.
  4. Easy Service enablement  — There was big challenge for any organization to make any change in existing legacy system. SOA provides an easy tool to enable existing monolithic application or legacy mainframe system into a SOA service without knowing anything about those systems. Through SOA tool, one can expose interface(s) from existing system as service and use this service in other applications without touching any existing functionality. 
  5. Low Cost development and maintenanceAs I stated earlier, SOA is modular and loosely coupled. So one can implement new service or modify existing service(s) without touching any other service or application. As a result, it takes very small effort and time to make any change in application that uses SOA. SOA also provides the flexibility, such that service can be reused in any other application. For example, if an organization is using third party service (SAAS) for an application, it can reuse this service in other applications without investing on license, server space or maintenance. In other words, if organization builds a service for one application, it can reuse this service in multiple applications.
  6. Easy learning curveSOA is modular and loosely coupled, as such, it has a very easy learning curve. One can start to work on any service without knowing the whole application. SOA technology is completely based on XML and it is one of the easiest technologies and it is accepted by all applications and software.
  7. Increased operational efficiencyTo reuse existing SOA service, one can create new service by using current system or service. In summary, SOA helps us in creating and delivering a new product quickly.     

What is SOA?


Before hitting my blog, probably you heard a lot of time about the SOA buzzword.
SOA is acronym of Service Oriented Architecture.
So now the first thing which hits your mind is, what is service? How it is related with Architect?
Let me explain all these buzzwords and how they are related with each other?
Since I am related with telecommunication world, I am giving simple example how SOA comes in picture when you are activating any phone device.
Like when you buy new phone, you need to activate its number and phone features.
For activating phone user simply calls the customer care or walks to the shop. But behind the scene it communicates with many systems to activate your phone feature based on your requirement and phone device.  
Like some of the features are setting up user information, phone number, email id with phone SMS etc.
All These features are basically Services for that user which he selects or by default he gets with activation.
Now, this service can communicate with each other by n number of way. These services are not necessary to live in same platform of same system. They could be in different environment, different location or different platform.
Now these entire scenarios make your system more complicated.
   To simplify these entire scenarios SOA (Service Oriented Architect) comes in picture.
Web service and Messaging are backbone of SOA. Web service is platform independent, environment independent and location independent.
 SOA (Service Oriented Architect) describes how to communicate (Synchronous or Asynchronous) different service or feature to activate user phone. SOA also gives flexibility when this service need to be invoked and what would be sequence order of these services.