3. What is SOA?
Service-oriented architecture is a technology architectural
model for service-oriented solutions with distinct
characteristics in support of realizing service-orientation and
the strategic goals associated with service-oriented
computing.
4. SOA is a way of organizing applications and processes in
terms of services.
29. Mediator vs. Oracle Service Bus
Light weight Stand-alone & powerful
Mediate between SOA components Mediate between composites &
external apps
JDeveloper Eclipse or Web
32. SAVE THE DATE!
COLLABORATE 13
April 7-11, 2013
Colorado Convention Center
Denver, Colorado
http://collaborate13.ioug.org
Editor's Notes
Hi and welcome to this session about Service-Oriented Architecture. I hope you find this session very informative and gains your interest in SOA-based solutions. I would briefly like to thank IOUG for giving me the opportunity to speak today as part of their Sunday forum about Oracle Fusion Middleware. [Transition]As for me, I’m very excited about being here speaking to you all today about service oriented architecture....
Hi, My name is Brad Bukacek. I’m the Development Services Manager for Zirous based in Minneapolis, Minnesota. I have been with Zirous for over 5 years and have spent the majority of those 5 years focused on Oracle SOA technologies. I have led, architected, installed and developed 10g & 11g client implementations. A little bit about Zirous. Zirous is an Oracle Gold Partner, headquartered in West Des Moines, IA and have locations in Minneapolis, Minnesota and Portland, Oregon. We focus on client solutions based on Oracle Fusion Middleware products that include Oracle Identity Solutions, Oracle BI, Oracle SOA and as well create custom java solutions on Oracle WebLogic Server and just this year started reselling Oracle Hardware.
What is SOA? We know that SOA stands for Service-Oriented Architecture, but what does that mean. I’ve spent a lot time working on SOA over the years and decided to do a quick search on the internet for a definition of SOA....as expected...I found a lot...actually resulted in 391,000 results!! Here is one that I felt had a common theme throughout each defintion. Service-oriented architecture is a technology architectural model for service-oriented solutions with distinct characteristics in support of realizing service-orientation and the strategic goals associated with service-oriented computing. Now that’s a lengthy definition and in my opinion makes it more complex than is needed. [Transition] So I propose a different, more simpler definition and it’s this...
SOA is a way of organizing applications and processes in terms of services. Now isn’t that a much easier way to think about SOA. I believe so. [Transition] But even with this simplified definition why is SOA “SOA” confusing...
It doesn’t help that there are complex definitions. But I believe that the problem with the understanding of SOA is the way it has been marketed. Lots of people and businesses associate SOA to a product but SOA is an architecture or framework and there are toolsets like Oracle SOA Suite that help businesses achieve a Service-Oriented Architecture. From a business perspective, SOA becomes confusing because people are failing to realize the benefits of using SOA and comes from how SOA is implemented. As we will get into later, SOA is seen as tightly coupled connections between systems and applications instead of loosely coupled which SOA promotes more often than not. [Transition] As I continue to think about SOA from a day to day basis (it’s my job)...Here’s the interesting thing that you may not know about SOA but...
We use SOA everyday, it may not be obvious, but there are examples of SOA around us everyday...We should think about it in terms of reuse. [Transition] Here’s a simple example of SOA that is used everyday life that we might not realize...
In an office district or suite, typically there is not an individual leading company that manages a contract for each business that is in a suite. Usually there is one leasing company that manages the whole building and the contracts for each business leasing a suite. It just doesn’t make sense to that. We have this leasing service that is “reused” for each business. [Transition] Though this a simple way of understanding the concept of SOA, so what is the business problems?
What is the business problem for SOA? Organizations dependent on many application - legacy, external and packaged Typically new systems get bought that duplicate business needs or are acquired from mergers. With many applications - maintenance costs are typically higher. User standpoint - productivity is lower because users are going to multiple systems to accomplish specific business tasks. logging in, entering new or similar data and etc. So what comes from this? Usually the business realizes they need an IT approach to integrate these systems. [Transition]For example, let’s take this business problem....
I’m going to use this business problem as a theme of how SOA can solve a business problem. A typical problem businesses have is they have multiple systems that have some of the same or parts of the same data in each system. They have got this way because of legacy systems, new packaged applications have been purchased, or applications have been acquired through acquisitions. So for instance if a customer makes an address change they must now make the change in 3 or more systems. Now how is this productive is this for this person? It’s not...I also have maintain multiple applications which incurs maintenance costs.
So Why Move to SOA? A couple of things to think about. Embrace change - businesses need to work faster and more efficiently especially those in faster moving markets. Tactical - Business applications are all big loaded with functionality. Maintaining these systems are difficult and costly. Starting tactical with SOA is okay but having a long-term strategic vision going forward is key to see great results out of SOA. There two different ways to look at this. We can look at it from a business and technology perspective. There are many reasons in both cases to move to SOA. [Transition] From a business perspective...
Businesses want to be more agile Being competitive is important - want to focus on decreasing time to market, before competitors and want to create new innovating products/services and get those to market before anyone else. If businesses are not playing catch-up with products/services and quicker time to market is happening than greater customer service and loyalty can occur. And if you are a business leader, you know that if you have better customer service and confidence then more customers are using your product and service which ultimately lead to greater revenues and we all LOVE that. Rules & Regulations changing - Government makes changes or even our external business partners require changes - we need to be able to react to these changes quickly and efficiently not only to stay on par with the competition but also stay ahead of them. [Transition] There’s always business reasons but what about the technical drivers for moving to SOA.
As stated earlier, SOA creates the ability to create services with high reuse and services that are loosely coupled. By developing services in this way, maintenance costs can be decreased. If changes are needed for services, they can be made easily, in one place with minimal impact on other services or applications. If new applications are added then they can seamlessly be added and reduce the time to market with the application. Now cost...Maintenance costs. They are everywhere...business applications, shell scripts, java applications and many more. Reality is, modifications will be needed to services but we don’t want changes to affect other applications or services. Trust me...I have seen this before...It’s a nightmare...someone modifies a service then ends up breaking a whole bunch of other things...then those services need to be modified and you see those costs double and triple and etc. And the last thing...Reduce Risk - How is this accomplished? By investing in a product based on open standards and eliminating the dependency on specific technologies. [Transition] So, since we have now discussed what type of problems businesses face today and why businesses move to a Service Oriented Architecture, I go back to the example presented earlier...
Again this is a common business problem, multiple applications and similar data is in each system Unproductive again for the user needing to enter information more than once. [Transition] From an architecture perspective what are some key things to think about...
First there many different design principles to consider and each IT system is different but the goal is to try to find the best design principles that work for you and your company to maximize value Two main ideas - Decoupling (changes in one service don’t result in another) & Process Implementation (Create simplified processes and focus on orchestration) - Consistency - reduce development time, integration and maintenance effort - Ease - Development should be made easy not have to deal with complex middleware solutions. - Reuse - Asset be utilized as a reusable asset - over-engineered Many more design principles... [Transition] Though these are some design principles to think about there are still examples of bad design even using SOA...
An example of a bad design or how some legacy integrations have been built. This design would be called P2P, which in theory maybe I one point worked but now creates a complex mess for an application infrastructure. At one point something like this made sense, it was cheap and there were fewer applications. But as more and more enterprises acquired more companies, grew globally at a rapid pace caused for an IT infrastructure composed tightly coupled systems.
The better design Explain [Transition]And how do we accomplish this design?
developers to set up, manage services and orchestrate them to create business processes. BPEL, Mediator, Workflow and etc. FMW Product Family 2009 - Patch Set 5 - Fairly Mature [Transition] With the 11g release brought some new standards like SCA....
new standard for implementing composite applications. objective - standard-based component for services - pieces of functionality developed to focus on reuse different run-time engines for each component and loosely coupled - easily swapped out components more productive (10g example) All of these are considered service components that have their own interface. All of the components are loosely coupled and can be used together without knowledge of the other's implementation. This a very flexible architecture which easily always components to be swapped out. This not only makes developing SOA applications easier but it also makes possible to be more productive. [Transition] Now that we know that composite applications are built with multiple components
well know component orchestration & state BPEL is standard lang. XML - implement process flows It’s a web service - so WSDL & XSD Defs
Calls to Services - Orchestrate a series of services data manipulation and flow logic (switch, if-then) Event Handlers interact with other components (mediator, workflow) BPEL process can be a short lived process or a long running process. workflow + BPEL [Transition] As I mentioned it interacts with other components - an example would be mediator...
Can be exposed as a service (web service) validate and route message based on contents works with jca adapters Use cases it covers - service virtualization, aggregation of services and pub & sub It's a very reusable component as well. - AIA - exposes CRUD [Transition] Another component BPEL interacts with is workflow...
Process flows - need human interaction do & provide - interface between services and people performing activities Task Service receives messages. asynchonrous call - b/c human interaction powerful & basic workflow component - notifications & collaboration Java & WS APIs UMS Service - Emails and others BPM Worklist - tasks [Transition] Business Rules are always necessary and another component of a composite...
AKA decision service component. Business Logic - good performance and scales quite well. edited by non-developers and at runtime - key feature [Transition]We have these components but how are connections made to applications?
Oracle SOA Suite has a great set of adapters that can be utilized within in a SOA composite application. Adapters include Database, FTP, File, Queuing like JMS/AQ/MQ, your basic web service calls, EJB and many more. The adapters allow for seamless integration with these composite applications and provides a nice wizard to walk developers through the setup to integrate with different business applications.
A new feature introduced is called the Event Delivery Network - it's an infrastructure component that provides a declarative way of defining, publishing and registering for consumption of business events. With the use of EDN, implementation patterns for EDA can be used. Think of EDN as the middle man or central coordinator of a place for publishing and consuming events Business events are defined by EDL (Event Definition Language) file, which is just another XML language. \\ Events can be published or consumed via service components like BPEL and Mediator. Events can be published through ADF applications or PL/SQL With the introduction of EDN now the question is how is this different than queuing infrastructures like JMS/AQ. Well…the concepts are fundamentally the same between the two and most of these things done in EDN can be done in AQ/JMS but would require a lot more work. Some of the cons of JMS/AQ are that there is a lot more work to consider even through the adapter services that SOA has. Also the underlying queues would need to be setup with the necessary topics or queues and need to be configured on the WebLogic server. What EDN does is allow us to focus on content instead on of configuration of other technologies In closing, EDN is built on top of these standard messaging infrastructures. There is a EDN-DB and a EDN-JMS
JDeveloper is the IDE where creating composite applications takes place.
Oracle BAM allows business executives or managers to monitor there business processes. These are real-time dashboards so changes can be seen these business processes are running. With these real-time dashboards executives/managers can monitor these processes and can make corrective actions based on the data flowing through the SOA composite applications. The SOA composite applications integrate directly with these dashboards which makes it easy to get these dashboards up and running.
Oracle Service Bus is a enterprise class service bus that can be used to build agile integrations within the enterprise. [Transition] So maybe some of you have this question but now we have OSB and Mediator that’s component of SOA Suite - so what are those differences and when should each be used...