The Story of How an Oracle Classic Stronghold Successfully Embraced SOA<br />ODTUG Kaleidoscope 2009<br />Lucas Jellema<br...
Overview<br />What is an Oracle stronghold?<br />Triggers to start moving towards Services<br />Levels of embracing Servic...
What is an Oracle stronghold?<br />The typical Oracle stronghold<br />Using Oracle RDBMS & Oracle Development tools<br />L...
My central case…<br />Oracle Forms application tightly integrated with an Oracle RDBMS<br />The database is known by the n...
Similar cases …<br />Oracle Forms application for assigning homes offered SaaS-style<br />SaaS Customers want the details ...
Then wat happened… (2)<br />Car Lease company has various custom applications and databases per department<br />Business r...
Then wat happened… (3)<br />Agricultural company supports ‘cow insemination’ process with Forms application<br />Farmers a...
Common Characteristics<br />Cross Boundaries<br />Cross Technology - .Net, Uniface, Java, Tibco<br />Cross Channel – Back ...
Objectives<br />Business Agility<br />(Faster) responses to changing demands<br />Or at least an urgent, currently pending...
Objectives<br />(longer term) Higher Quality and Faster Process execution<br />Automated data exchange cross boundaries<br...
SOA = BAD<br />
Business<br />Agility through<br />Decoupling<br />SOA =<br />
Decoupling≈Managing Dependencies<br />minimize impact of change while maximizing reusability<br />
Types of decoupling<br />Functional <br />Interface - Encapsulation of implementation<br />Design by Contract, Implement b...
Decoupling Applications & Data<br />Application(User Interface)<br />Application(User Interface)<br />Data<br />Data<br />
Decoupling Applications & Data<br />Application(User Interface)<br />Application(User Interface)<br />Data<br />
Decoupling Applications & Data<br />Application<br />(User Interface)<br />Data<br />
Decoupling Applications & Data<br />Application<br />(User Interface)<br />WorkflowEngine<br />CMS<br />Email<br />IM<br /...
Data Ownership<br />Data no longer exclusively owned by a single application<br />Data (query and manipulation) available ...
Decoupling from Table to ESB+<br />http<br />WEBDAV<br />FTP<br />WSRP<br />http<br />WS/SOAP<br />WS*<br />WS*<br />WS*<b...
Tables in Database<br />SQL for retrieval and manipulation<br />Data Model in plain “view”<br />Decoupling between DML and...
View in Database<br />Hide (encapsulate) Data Model<br />Manage access privileges<br />SQL for retrieval and manipulation<...
Package in Database<br />Hide (encapsulate) SQL<br />Procedure calls for retrieval and manipulation<br />Potentially compl...
Database Object Types<br />
Package in Database (2)<br />Hide (encapsulate) SQL and Oracleand user defined Types <br />Procedure calls for retrieval a...
Handling XML<br />Structured, multi-level data in a string: XML<br />Oracle Database has XMLType<br />Can be created from ...
XML based PL/SQL interface<br />
AQ for Asynchronous<br />Decouple consumer and providerin time – asynchronuous processing<br />Consumer is registered on t...
Hiding the database<br />http<br />WEBDAV<br />FTP<br />http<br />WS/SOAP<br />WS*<br />WS*<br />WS*<br />
Publish package as http-based API using dbms_epg<br />http<br />Hide database protocol<br />Not its physical location nor ...
HTTP API – directly on top of the RDBMS<br />
Publish static resources on various protocols with XMLDB<br />Hide database protocol<br />support FTP, WEBDAV, HTTP(S)<br ...
Publishing RDBMS resources in a decoupled fashion<br />
SOAP based WebServices<br />http<br />WEBDAV<br />FTP<br />WSRP<br />http<br />WS/SOAP<br />WS*<br />WS*<br />WS*<br />
SOAP WebServices<br />All messages (input and output) are XML<br />The message consists of two parts inside an envelope (a...
Oracle RDBMS 11g - Native Database WebServices<br />WS/SOAP<br />Schema can be published throughnative database web servic...
Limited control over WSDL & XSD
Use case: internal, cross technology, WS enabled client, no ESB or Application Server available</li></li></ul><li>WebServi...
Enterprise Service Bus<br />App 2<br />External Partner<br />Service<br />Service<br />Service<br />Service<br />Service<b...
The Enterprise Service Bus<br />Should first of all be considered ‘a pattern’<br />Virtualizes services – hides the real s...
Canonical Data Model<br />Common Business Language <br />Esperanto for service invokers<br />Service<br />Service<br />Dat...
The Enterprise Service Bus (2)<br />Handles various QoS & SLA aspects<br />sometimes in concert with tools like OWSM<br />...
Publish PL/SQL Package through ESB<br />WS*<br />Use Database Adapter to createService, combine with ESB Routing Service<b...
Enterprise Service Busin action<br />One team responsible for exposing services to external consumers<br />Working with th...
Evaluation – end of phase 1<br />Done well<br />Working “application” in production!<br />Worked together (across teams an...
Evaluation – end of phase 1<br />Done well<br />Achieved good way of working with database team developing packages undern...
Evaluation – end of phase 1<br />Done well<br />Ambitions, drive - However: technology driven<br />To be improved<br />Def...
Evaluation – end of phase 1<br />To be improved<br />Share success with business and other IT teams<br />Establish a mecha...
End of Phase 1<br />Working service implementation and infrastructure – across departments<br />End-to-end from backoffice...
Improve & Broaden the scope of the Canonical Data Model<br />Involve business representatives for all of business<br />Add...
Pending “Research”<br />How to make use of cache infrastructure to prevent services being called unnecessarily<br />Yet gu...
Phase 2<br />A new user interface (internet website) on top of the back office database<br />Partially covered by existing...
Introducing BPEL for Service<br />WS*<br />BPEL adds to service<br />Long running (stateful) ‘service instances’<br />Comp...
Publish Business Events<br />Extremely Decoupled Architecture <br />Any system – including database – reports events that ...
Event Driven Architecture (EDA)<br />External Partner<br />App 2<br />Service<br />Service<br />Service<br />Service<br />...
Database publishing events<br />WS*<br />Table Trigger intercepts DML<br />Checks for Business Events such as new employee...
Publishing Service with UI<br />Instead of only publishing a programmatic service interface<br />A service can be publishe...
Decoupling from Table to ESB+<br />http<br />WEBDAV<br />FTP<br />WSRP<br />http<br />WS/SOAP<br />WS*<br />WS*<br />WS*<b...
Increasingly decoupled<br />More hiding of the implementation<br />More Formal Interface Contract<br />Less (proprietary) ...
Comes at a cost…<br />More run time overhead<br />Additional tiers<br />XML serialization and deserialization<br />More in...
Pitfalls<br />Do SOA from the IT/technology side only<br />Inconsistent, illegible, unstructured namespaces and (XML) cano...
Pitfalls<br />The greedy clutches of enterprise architects<br />Think globally, talk, (high level) design, draw & write, p...
Pitfalls<br />No DTAP process & environment <br />And/or completely manual<br />Involving DBAs/Administrators way too late...
Useful <br />Use Mock Service implementations during development and test<br />Developers that depend on services not yet ...
Summary<br />Objective: agility through decoupling<br />Managing dependencies<br />Crossing boundaries – functional, techn...
Upcoming SlideShare
Loading in …5
×

The Story of How an Oracle Classic Stronghold successfully embraced SOA (ODTUG 2009, actual presentation)

1,396 views
1,342 views

Published on

The organization had been using Oracle RDBMS, Oracle Designer & Forms and even an Oracle EBS module for many years. On the side it had been running several open source J2EE web applications. Facing several new challenges, it took the plunge into SOA - the technology and the architectural principle.

This presentation tells their story.

It started with the business need of opening up the core application to several external business partners. A programmatic interface was required for submitting expense reports - in the thousands - for one business partner, who also wanted to be able to ask for the status for each one those reports.

Another external entity needed the ability to learn about relevant changes in product and pricing data through an API.

We will discuss how SOA principles were used to design the application architecture. And how the Oracle 10g SOA Suite - specifically ESB and BPEL PM - were used to implement the requirements. We go into the choices the organization had to make, the challenges they had to overcome, the skills they had to acquire and the results they achieved.

After this first stage came the next set of business requirements needed tackling. And now the first benefits could be reaped. Following the guidelines established in their first close encounter with SOA, this organization achieved the first reuse of services, could rapidly decide on the application architecture for the ADF 11g Internet Application that needed to be created and further expanded their still little SOA universe. The initial experience now enabled them to decide on whether and how to service enable specific functionality required for the web application - how to use ESB and BPEL, for example and when to use application specific database APIs rather than SOA Web Services.

This stage also taught them the necessity of Governance - what are naming conventions for elements in Schema Definitions and Services, who owns a service, what’s the required availability and how is that achieved, what are the SLAs (Service Level Agreements) around the service, how can the service be evolved with respect to new or changing needs.

The presentation will tell the story of the two stages and how the organization went about them. It will show some small demos to illustrate what was done. It will share some conclusions as to what works and what does not. Finally it briefly discusses the future plans for this organization with regard to SOA.

The presentation is for an audience that probably (though not necessarily) has a classic Oracle background and either is in the process of taking its first steps in the SOA arena or considers moving their. It should help make that process more tangible and hopefully realistic and desirable.



Summary:

The organization had been using Oracle RDBMS, Oracle Designer & Forms and even an Oracle EBS module for many years. Facing several new challenges, it took the plunge into SOA - the technology and the architectural principle. This presentation tells their story. Of getting started with BPEL and ESB, with Governance and Security (OWSM) and of applying SOA principles. And of the second phase where reuse and agility started to occur.

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,396
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
94
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • CDMBus lofic in one placeIntegration maintenancceImproves srevice reuseLoose couplingCreate common understanding
  • The Story of How an Oracle Classic Stronghold successfully embraced SOA (ODTUG 2009, actual presentation)

    1. 1. The Story of How an Oracle Classic Stronghold Successfully Embraced SOA<br />ODTUG Kaleidoscope 2009<br />Lucas Jellema<br />SOA<br />
    2. 2. Overview<br />What is an Oracle stronghold?<br />Triggers to start moving towards Services<br />Levels of embracing Services and SOA<br />Objectives, benefits, costs & challenges<br />Demonstration<br />Pitfalls, Lessons Learned & Best Practices<br />Summary<br />
    3. 3. What is an Oracle stronghold?<br />The typical Oracle stronghold<br />Using Oracle RDBMS & Oracle Development tools<br />Lot of SQL and PL/SQL<br />Probably Oracle Forms and maybe APEX as well<br />Possibly Oracle Designer, tools for BI & Reporting<br />Several databases with many years of essential corporate data<br />IT staff has Oracle veterans – 5-15 years or more<br />Internet development may have taken place largely separate from the Oracle technology stack<br />
    4. 4. My central case…<br />Oracle Forms application tightly integrated with an Oracle RDBMS<br />The database is known by the name of the app<br />Containing jobs, workers, timesheets, payments,..<br />Used in hundreds of branches as well as the central (back)office<br />Main business driver that required attention<br />Business partners requested a programmatic interface to load multiple timesheets – to save on time and hassle (time again)<br />
    5. 5. Similar cases …<br />Oracle Forms application for assigning homes offered SaaS-style<br />SaaS Customers want the details on houses and their availability published on a website<br />.NET applications need access to data in the Oracle Database<br />Customers want their local applications to interface (programmatically) with the SaaS application<br />
    6. 6. Then wat happened… (2)<br />Car Lease company has various custom applications and databases per department<br />Business requires IT to support processes that go across those applications and databases<br />through a single, unified User Interface<br />involving a legacy database and a 3rd party ERP system<br />with eventually some self service web modules<br />Insurance company sells policies through agents using a Forms application<br />New direct channel: On-line policy selling<br />
    7. 7. Then wat happened… (3)<br />Agricultural company supports ‘cow insemination’ process with Forms application<br />Farmers and inspectors need to be able to record data anytime and anywhere through PDAs (that run a .Net application)<br />Mid-sized chemical pharmaceutical company uses BoB stand-alone systems and databases<br />To allow for faster (near real-time) responses to customer demands and logistical challenges, tighter integration between the systems is needed<br />
    8. 8. Common Characteristics<br />Cross Boundaries<br />Cross Technology - .Net, Uniface, Java, Tibco<br />Cross Channel – Back Office, Web, PDA, API<br />Cross User Group – Internal, Agents, Self Service<br />Cross Domain – Multiple departments & systems<br />Cross Enterprise – Interact with external partners<br />Data synchronization or consolidation<br />Management whim Vision<br />From Database angle: providing services<br />
    9. 9. Objectives<br />Business Agility<br />(Faster) responses to changing demands<br />Or at least an urgent, currently pending demand<br />Creating new business from existing resources<br />IT Flexibility<br />Optimize locally without impact ‘globally’<br />Prepare for future developments<br />Lower costs<br />Through reuse, better integration, decoupling<br />
    10. 10. Objectives<br />(longer term) Higher Quality and Faster Process execution<br />Automated data exchange cross boundaries<br />Workflow and task orientation<br />integrated, cross department, in a controlled way based on sound understanding of the business processes<br />Business Event driven interaction<br />Manage risks and fear<br />
    11. 11. SOA = BAD<br />
    12. 12. Business<br />Agility through<br />Decoupling<br />SOA =<br />
    13. 13. Decoupling≈Managing Dependencies<br />minimize impact of change while maximizing reusability<br />
    14. 14. Types of decoupling<br />Functional <br />Interface - Encapsulation of implementation<br />Design by Contract, Implement by Design<br />Technical<br />No proprietary technology, protocol, message format<br />Standards based (XML, HTTP, RSS, WSDL…)<br />Temporal<br />Asynchronous communication (separate response)<br />Development<br />Separate teams working in parallel based on mutually agreed interface definitions<br />
    15. 15. Decoupling Applications & Data<br />Application(User Interface)<br />Application(User Interface)<br />Data<br />Data<br />
    16. 16. Decoupling Applications & Data<br />Application(User Interface)<br />Application(User Interface)<br />Data<br />
    17. 17. Decoupling Applications & Data<br />Application<br />(User Interface)<br />Data<br />
    18. 18. Decoupling Applications & Data<br />Application<br />(User Interface)<br />WorkflowEngine<br />CMS<br />Email<br />IM<br />Fax<br />
    19. 19. Data Ownership<br />Data no longer exclusively owned by a single application<br />Data (query and manipulation) available via APIs, (web)services and open standards<br />For example based on XML, XSD, WSDL, SOAP, HTTP<br />Data Hubs are formalized, structured approach where data is completely separated from applications<br />All access is through services<br />No data duplication at all in the enterprise<br />Data ownership is separate process<br />
    20. 20. Decoupling from Table to ESB+<br />http<br />WEBDAV<br />FTP<br />WSRP<br />http<br />WS/SOAP<br />WS*<br />WS*<br />WS*<br />
    21. 21. Tables in Database<br />SQL for retrieval and manipulation<br />Data Model in plain “view”<br />Decoupling between DML and Retrieval<br />Retrieve data:<br />select e.empno, e.ename, d.dnamefrom emp join dept using (deptno)<br />Manipulate data:<br />insert into dept;insert into emp;<br />
    22. 22. View in Database<br />Hide (encapsulate) Data Model<br />Manage access privileges<br />SQL for retrieval and manipulation<br />Instead Of trigger decouples DML operations<br />select id, name, department from emp_vw<br />Insert into emp_vw<br />Use case: new UI on top of ‘legacy’ data model<br />
    23. 23. Package in Database<br />Hide (encapsulate) SQL<br />Procedure calls for retrieval and manipulation<br />Potentially complex data structures using Object Types and (nested) Cursors<br />HRM_MGR.get_emp( id) return emp_t<br />HRM_MGR.create_emp( emp_t);<br />Use case: tailor made business services to support clients that understand types<br />Or core service implementation around which a non-type wrapper is applied<br />
    24. 24. Database Object Types<br />
    25. 25. Package in Database (2)<br />Hide (encapsulate) SQL and Oracleand user defined Types <br />Procedure calls for retrieval and manipulation<br />Input and output parameters standard types only (string and number)<br />Complex datastructures: XML passed as string<br />HRM_MGR.get_emp( id) return string<br />HRM_MGR.create_emp( string);<br />Use case: packaged business services to support any client (that can access the DB)<br />
    26. 26. Handling XML<br />Structured, multi-level data in a string: XML<br />Oracle Database has XMLType<br />Can be created from a String, will parse XML<br />Can validate against a schema definition (the XML data design)<br />Support XPath operations to retrieve specific bits and pieces from the XML document<br />Can do XSLT transformations of the incoming or outgoing XML<br />
    27. 27. XML based PL/SQL interface<br />
    28. 28. AQ for Asynchronous<br />Decouple consumer and providerin time – asynchronuous processing<br />Consumer is registered on the AQ<br />Usually a package that processes User Defined Type that is sent as payload in the AQ message<br />Use case: asynchronously processed one-way (fire-n-forget) requests<br />Potentially lenghty requests<br />High volume of requests<br />
    29. 29. Hiding the database<br />http<br />WEBDAV<br />FTP<br />http<br />WS/SOAP<br />WS*<br />WS*<br />WS*<br />
    30. 30. Publish package as http-based API using dbms_epg<br />http<br />Hide database protocol<br />Not its physical location nor the schema, and user authentication<br />HTTP communication is truly cross technology<br />Browser, Java, .Net, JavaScript & RIA clients, …<br />Approximation of RESTful services (very du jour)<br />Can publish in various formats<br />Text, HTML, CSV, JSON, XML, RSS<br />Use case:cross-technology, internal no WS*/ESB<br />
    31. 31. HTTP API – directly on top of the RDBMS<br />
    32. 32. Publish static resources on various protocols with XMLDB<br />Hide database protocol<br />support FTP, WEBDAV, HTTP(S)<br />Run scheduled batch jobs (PL/SQL) to periodically create & expose resources<br />Can also consume and process resources<br />Use case: cross technology need for retrieving slowly changing resources (CSV, XML)<br />Possibly uploading resources for batch processing<br />Use case:<br />http<br />WEBDAV<br />FTP<br />
    33. 33. Publishing RDBMS resources in a decoupled fashion<br />
    34. 34. SOAP based WebServices<br />http<br />WEBDAV<br />FTP<br />WSRP<br />http<br />WS/SOAP<br />WS*<br />WS*<br />WS*<br />
    35. 35. SOAP WebServices<br />All messages (input and output) are XML<br />The message consists of two parts inside an envelope (a SOAP XML wrapper)<br />The header with meta-data<br />The body with the contents to be handled by or returned by the service<br />The WebService Definition Language (WSDL) document describes the service<br />An XML Schema Document (XSD) describes the structure of the XML messages<br />XSD is like an ERD or Table Design<br />
    36. 36. Oracle RDBMS 11g - Native Database WebServices<br />WS/SOAP<br />Schema can be published throughnative database web services<br />Each package corresponds with a WSDL<br />Every program unit with an operation<br />WSDL and XSD are dynamically generated<br /><ul><li>http and https is supported
    37. 37. Limited control over WSDL & XSD
    38. 38. Use case: internal, cross technology, WS enabled client, no ESB or Application Server available</li></li></ul><li>WebService in App Server based on PL/SQL package <br />Hide database<br />Protocol, location, authentication:everything handled by the application server<br />Use JPublisher (embedded in JDeveloper) to publish a PL/SQL package as WebService<br />JPublisher creates JAX-WS-annotated class, utility classes and possibly helper types in the database<br />Alternatively: create ADF BC Application Module & publish it as a WebService (Bulldog)<br />With support for SDO (Service Data Objects)<br />Use case: WS (SDO!) enabled client, no ESB <br />WS*<br />
    39. 39. Enterprise Service Bus<br />App 2<br />External Partner<br />Service<br />Service<br />Service<br />Service<br />Service<br />App 1<br />Data<br />Data<br />
    40. 40. The Enterprise Service Bus<br />Should first of all be considered ‘a pattern’<br />Virtualizes services – hides the real service from consumers<br />Deals with the physical location of the services<br />Adapts synchronous to a-synchronous and vv.<br />Can use multiple real services to offer one virtual (composite) service<br />Allows callers to use a generic, canonical message structure that it will transform to the service contract<br />It may even allow callers to use their own “lingo”<br />
    41. 41. Canonical Data Model<br />Common Business Language <br />Esperanto for service invokers<br />Service<br />Service<br />Data<br />Data<br />Clients<br />Customers<br />
    42. 42. The Enterprise Service Bus (2)<br />Handles various QoS & SLA aspects<br />sometimes in concert with tools like OWSM<br />Encryption, signing, authentication<br />Retry and fallback<br />“Throttle” (prevent peak loads)<br />Does monitoring, tracking & auditing, reporting, notification and escalation<br />Works with Adapters to access technologies<br />like RDBMS (SQL, PL/SQL), AQ and JMS, File System, FTP, Java, E-Business Suite<br />
    43. 43. Publish PL/SQL Package through ESB<br />WS*<br />Use Database Adapter to createService, combine with ESB Routing Service<br />Use case: <br />external access to services<br />virtualize location of service – <br />route to service based on content of the request<br />virtualize part of contract of service<br />Package-derived XSD not suitable for consumers<br />handle peak loads<br />monitor service levels and trace service access<br />
    44. 44. Enterprise Service Busin action<br />One team responsible for exposing services to external consumers<br />Working with those customers for establishing the contract and testing across the firewall<br />This team built from internally provided services<br />Team two worked inside database – providing package based API for granular services<br />Team three created ESB level database adapter and routing/mapping services<br />WS*<br />
    45. 45. Evaluation – end of phase 1<br />Done well<br />Working “application” in production!<br />Worked together (across teams and departments) on the Service definition and the ‘XSD’<br />To determine the scope and granularity of services and operations for optimal reuse<br />To define<br />Management sponsorship (though IT mainly)<br />To be improved<br />More involvement from the business for defining both services and especially the canonical model<br />
    46. 46. Evaluation – end of phase 1<br />Done well<br />Achieved good way of working with database team developing packages underneath services<br />Developed a feel for using services rather than immediate database access<br />Built up XML and ESB skills<br />To be improved<br />Involvement of administrators<br />Setting up Dev-Test-Acceptance-Production<br />Managing Service End Points<br />
    47. 47. Evaluation – end of phase 1<br />Done well<br />Ambitions, drive - However: technology driven<br />To be improved<br />Define the Enterprise Architecture/BluePrint and work within its context<br />“Think globally, act locally”<br />Set up CEA – mandated by business and IT<br />Reduce number of service calls <br />Externally exposed services do not need to be 1:1 with database packages!<br />Granularity and Composite Services<br />
    48. 48. Evaluation – end of phase 1<br />To be improved<br />Share success with business and other IT teams<br />Establish a mechanism for sharing, exposing, finding, adopting SOA artefacts<br />Services, Canonical Data Model, Policies/SLAs, …<br />And also for ‘governing’ the life cycle: how to change services already being used?<br />(automated) Testing<br />Monitoring service traffic (some focus on SLA)<br />Peak load, response time/overhead, availability<br />
    49. 49. End of Phase 1<br />Working service implementation and infrastructure – across departments<br />End-to-end from backoffice database to customer<br />“Foundation for innovation”<br />Lost the fears, ready for the next step<br />Basis for reuse and widening the scope<br />Shimmering light at the end of the tunnel for the Forms application<br />
    50. 50. Improve & Broaden the scope of the Canonical Data Model<br />Involve business representatives for all of business<br />Add business terminology and (some) business rules that help describe the model<br />Build up translations of domain values and business object identies across ‘systems’<br />More accessible and consistent structure<br />using namespaces (domains), naming conventions and guidelines (element vs. attribute, data types)<br />Annotate the model and provide examples<br />Eridicate database model legacy or technology specific elements<br />
    51. 51. Pending “Research”<br />How to make use of cache infrastructure to prevent services being called unnecessarily<br />Yet guaranteeing non-stale data<br />How do we process binary attachments through the layers of our architecture<br />Do we have some low-hanging-fruit to pick in order to gain some additional benefits<br />Design patterns, best practices, short-cuts, …<br />Security and Policies – what levels, mechanism<br />
    52. 52. Phase 2<br />A new user interface (internet website) on top of the back office database<br />Partially covered by existing services and an existing Web Application and CMS<br />Business is also looking for Web 2.0, Social/Community-style interaction in Portal<br />Running process flows that potentially go from external workforce through branch to (multiple entities within the) back office<br />How to move from peak load batch processing<br />
    53. 53. Introducing BPEL for Service<br />WS*<br />BPEL adds to service<br />Long running (stateful) ‘service instances’<br />Composite services that include<br />Multiple service calls (including asynchronous)<br />Exception handling including retry and compensation<br />Human Task for manual steps & integration Rule Engine<br />Process flow logic<br />Use case: <br />data request must be fulfilled by various services;<br />DML impacts several systems and/or requires human approval<br />
    54. 54. Publish Business Events<br />Extremely Decoupled Architecture <br />Any system – including database – reports events that may be interesting to other parties<br />The Event backbone (could be the ESB)<br />Defines Event Types (name, structure of payload)<br />Registers Event Listeners (“please call me when the event occurs and send the details”)<br />Receives events – instances of the predefined event type with payload and timestamp<br />Propagate events to all registered listeners<br />Without blocking the event producer<br />
    55. 55. Event Driven Architecture (EDA)<br />External Partner<br />App 2<br />Service<br />Service<br />Service<br />Service<br />Service<br />App 1<br />Data<br />Data<br />
    56. 56. Database publishing events<br />WS*<br />Table Trigger intercepts DML<br />Checks for Business Events such as new employee<br />Sends them to package EVENT_PRODUCER<br />Package EVENT_PRODUCER sends events<br />Via UTL_HTTP to a WebService<br />Via AQ to a listener (ESB AQ Adapter) <br />EventProducer<br />EMP<br />
    57. 57. Publishing Service with UI<br />Instead of only publishing a programmatic service interface<br />A service can be published with a User Interface; the service-with-UI is called: Portlet<br />The standard approach:<br />Portlet Container in Application Server exposes WSRP services for the portlets<br />The Portlet produces (X)HTML and handles HTTP requests<br />A Portal consumes the WSRP Portlets in a web page<br />WSRP<br />
    58. 58. Decoupling from Table to ESB+<br />http<br />WEBDAV<br />FTP<br />WSRP<br />http<br />WS/SOAP<br />WS*<br />WS*<br />WS*<br />
    59. 59. Increasingly decoupled<br />More hiding of the implementation<br />More Formal Interface Contract<br />Less (proprietary) technology & more standards for interacting<br />Less exposure of (legacy) data model<br />More support for asynchronous interaction<br />More reuse potential<br />Pervasive throughout enterprise<br />More suitable for external consumption<br />
    60. 60. Comes at a cost…<br />More run time overhead<br />Additional tiers<br />XML serialization and deserialization<br />More infrastructure<br />Burden of Administration<br />License Costs<br />Hardware<br />Broader skills palette – more stuff to master<br />Harder to get started<br />
    61. 61. Pitfalls<br />Do SOA from the IT/technology side only<br />Inconsistent, illegible, unstructured namespaces and (XML) canonical model<br />Having the database (table and column names) shine through in the canonical data model <br />And forgetting the database design wisdom<br />Reusable SOA artefacts are not found, understood nor trusted<br />Lack of Balance between reusability and usefulness (Fine grained vs. coarse grained)<br />
    62. 62. Pitfalls<br />The greedy clutches of enterprise architects<br />Think globally, talk, (high level) design, draw & write, present, think, talk, …. (no real action)<br />… versus the technology driven, ’think and act locally’ approach from the ‘developer squad<br />Introducing new unmanaged dependencies<br />Hard coded endpoints (service URLs)<br />Calling external services without proper SLA or fallback option<br />Using complex technology without proper skills<br />
    63. 63. Pitfalls<br />No DTAP process & environment <br />And/or completely manual<br />Involving DBAs/Administrators way too late<br />Inappropriate use of the SOA infrastructure<br />Web applications retrieving each individual record (or even field) through a separate service call<br />Running Forms on top of the ESB!<br />Sending debug and trace messages via the ESB<br />“Package calls other package via ESB”<br />
    64. 64. Useful <br />Use Mock Service implementations during development and test<br />Developers that depend on services not yet available easily get stuck<br />Automated Functional and Performance Test of individual Services<br />Automatic Service ‘ping’ utility <br />Early detection of service unavailability<br />
    65. 65. Summary<br />Objective: agility through decoupling<br />Managing dependencies<br />Crossing boundaries – functional, technology, time<br />Just do it! (well, “think big, do (small)”)<br />Get started – at the right level for your situation<br />Do not go off and buy BPEL just like that<br />Even though it won’t be perfect the first time round – you will learn (only) through experience<br />Do it explicitly, visibly and with all involved<br />SOA<br />
    66. 66. Q &A<br />SOA<br />

    ×