We Have Oracle SOA then why OSB? when to use them? SOA Vs OSB
In My Previous Blog I had explained How Oracle SOA Suite is helping us in current IT Business Challenges. How it is simplifying application integration problems.
Now Since OSB also has more or less same feature like SOA, common questions among us is when to use SOA-BPEL or Service Bus, or when to use them together?
Below are some situations where we can use OSB -
· In case of stateless and short-lived web-service orchestrations.
· For requirement of service virtualization and message brokering activities.
· In case of routing a message to one or another external service
· In case of dynamically routing a message to a service not known at development time
· Support of different message format of inbound/outbound messages
· For applying policy-centralization and reliable-messaging techniques on web-services.
· Load balancing so that we do not care about which of multiple service implementations will actually service a request.
· Throttling so that we do not care about how use of services is restricted.
· Enrichment so that we do not care about how additional data is provided to the request to match the expected request and response formats.
· Simple synchronous composition so that we do not care if our abstract service call is actually made up of two or more physical service calls.
· Protocol conversion so that we do not care what physical transports are being used.
· Sync/async abstraction so that we can treat services as fire and forget or query response according to the needs of the client.
· For synchronous entity-based services or pass-through operations use OSB
OSB Example 1:
Let’s consider simple case, where we want to expose legacy system as simple Webservice. Here we have WebLogic JMS queue and purpose is to send message to the queue using Rest end point. Standard JMS doesn’t provide way to send message using REST. Here we use OSB, which act as proxy between client and JMS queue. OSB proxy service exposed as REST and business service push the message to the queue.
OSB Example 2:
Load handling, here let’s think of a situation where backend service is slow in nature, and it can’t handle more than 100 request per minute. However there are 10,000 simultaneous client waiting to hit this service. In such cases, OSB can throttle the load to backend. Users will hit OSB proxy service at very high speed, but this speed will slowdown and backend service will receive request at lower speed. This will prevent backend to be hung.
OSB Example 3:
Split & Join. This feature allow OSB to handle large payload. It will split the payload into parts and process and join back the response. This way it will make easier to handle large payload situation.
Below are some situations where we can use SOA-BPEL:
· In Case of Long running and stateful orchestration compositions that may run for minutes, hours or days.
· For automation of business activities based on a process definition.
· For incorporating Human Workflow and/or Oracle Business Rules
· Complex composition of parallel flows that involve more than a couple of services.
· Asynchronous compositions that require correlation of requests and responses.
· Process abstraction that enables us to track processes and their interactions with multiple services.
SOA — BPEL Example 1:
Now, consider a case where requirement is to do parallel processing, for ex. send message to JMS queue, call SAP system (soap), and insert to DB (JCA) parallelly on a single transaction. In such cases we can use SOA mediator to handle parallel task.
SOA — BPEL Example 2:
Human task, for example if any process require human interaction such as approval then SOA human task will be preferred.
SOA — BPEL Example 3:
Business rule engine, this mechanism define business rule to the application flow.
An online order management system takes orders from customers. This business rules project checks if customer is eligible for any discounts or offers, based on various parameters and business rules.
Use case for a Financial Services Organization:
Customer was facing multiple issue with their existing legacy EOL software like
· Due to tight coupling of application with database any fluctuation in connections used to cause a performance impact.
· In Case of unavailability of backend services it was becoming unresponsive.
· Cluster downtime/Service restart was required for any deployment activities.
· Limited monitoring option.
· Difficulty in handling service requests with support team.
We proposed and deployed Oracle Service Bus (OSB) primarily because –
· There was no need of stateful session
· Primary requirement was to transform and routing of messages in different formats like XML, JSON OR ISO between backend services and external web services.
After the successful deployment of OSB, the customer organization has been able to
· Cater to ~5cr transactions per day and they are planning to scale up to cater ~15cr transactions.
· Process all Mobile banking and Non-mobile banking transactions through OSB
· All third party external web services have been configured in OSB.
· ~150 backend channels have been configured.
· ~500 Services configured.
“Disclaimer: I am currently an employee of Oracle Corporation. All views expressed in this article are in my personal capacity and do not necessarily reflect my employer’s views.”
If would have picked this up on others blogs…
Thank You for reading!!!