SOA Case Study - PowerPoint PPT Presentation

1 / 30
About This Presentation
Title:

SOA Case Study

Description:

Other contributors include Gregor Hohpe, Bill de h ra, Neal Ford, editor Richard Monson-Haefel. ... xmlns='http://java.sun.com/xml/ns/jaxws' wsdlLocation ... – PowerPoint PPT presentation

Number of Views:86
Avg rating:3.0/5.0
Slides: 31
Provided by: ebenh
Category:
Tags: soa | bam | bill | case | com | dollar | ford | store | study

less

Transcript and Presenter's Notes

Title: SOA Case Study


1
SOA Case Study
Eben HewittBangaloreNovember 3-4, 2009
2
goal
  • Help you implement SOA in your environment by
    learning from the challenges and choices we
    faced.

3
who i am
  • Architect at a multi-billion dollar, 50 year-old
    US retailer
  • Speaker on SOA at JavaOne, others
  • Interviewed on SOA by InfoQ
  • Author of 5 books including Java SOA Cookbook
    (OReilly, 2009)
  • Contributor to 97 Things Every Software Architect
    Should Know (OReilly, 2009)
  • Other contributors include Gregor Hohpe, Bill de
    hÓra, Neal Ford, editor Richard Monson-Haefel.
  • Many certifications in Java, Web Services, TOGAF
  • I kitties

4
What is SOA?
  • SOA is a kind of architecture...
  • that uses services as building blocks
  • to facilitate enterprise integration
  • and component reuse
  • through loose coupling.

5
Our Approach
  • Start with well-defined business initiatives and
    outcomes
  • Deliver architecture and pilot services
    concurrently
  • Work within Center of Excellence
  • Integrate, Communicate, Educate

6
Getting Started
  • Central Team (CoE)
  • Pilot Project
  • QuickScreen Credit Card approvals
  • SOA Team Does Full Round-Trip
  • Produce and Consume/Integrate
  • Service, Orchestration, ESB
  • Incubate Reference Architecture Services
    concurrently
  • Educate Evangelize Concurrently
  • Ref Arch Site Blog

7
3-Stage Plan
8
Selecting a Pilot
  • Does it create business value?
  • Does it have limited scope?
  • Would it make a good service?
  • Is it useful but not mission critical?

9
Our Choice SOAP
  • Wide industry support
  • JAX-WS makes it easy
  • Strong interface
  • EJB only is Java-specific
  • Almost-free add-on standards support
  • RM, AT, Addressing

10
SOAP APIs
11
Our Choice ESB Early
  • Performs Routing, Transformation, Orchestration,
    Mediation
  • Services exposed as WSDL
  • Multiple ESBs
  • Data Services (common)
  • Payment ESB (PCI)
  • All interaction is bus-to-bus
  • One Logical Bus per business unit
  • Can expand into Regional Buses
  • Can be a product or patterns

12
Layout
13
Our Choice Open Source
  • Easiest to Start
  • No lengthy RFP process
  • No business justification
  • Standards
  • Easy Exit Strategy

14
Determine a Start-From Model
  • Determine a Service Elicitation Model
  • Top Down or Bottom up or Both
  • Determine a Service Creation Model
  • Java, WSDL, Java and WSDL, Schema

15
Determine a Data Model
  • XML-Centric
  • Business Document entities
  • Start-from-Schema
  • Only Schema Types from JAXB exchanged in public
    interfaces
  • Limited customizations
  • Define Canonical Data Model
  • Incrementally
  • Transform on ESB as necessary

16
Schema Validation with JAXB Types
  • Class clazz CreditCard.class
  • JAXBContext ctx JAXBContext.newInstance(clazz)
  • Marshaller m ctx.createMarshaller()
  • QName qName new QName("http//ns.soacookbook.com
    /credit", "creditCard", "")
  • JAXBElementltCreditCardgt payload new
    JAXBElementltCreditCardgt(
  • qName, CreditCard.class, card)
  • SchemaFactory sf SchemaFactory.newInstance(XMLCo
    nstants.W3C_XML_SCHEMA_NS_URI)
  • Schema schema sf.newSchema(new StreamSource(new
    File(schemaFile)))
  • m.setSchema(schema)
  • DocumentBuilder db DocumentBuilderFactory.newIn
    stance().newDocumentBuilder()
  • Document doc db.newDocument()
  • m.marshal(payload , doc) //return doc, add to
    SOAPMessage Body

17
Determine a Schema Design Pattern
  • Russian Doll
  • Schema mirrors an instance
  • Single valid global root element, all other
    elements local
  • Easiest to read and write
  • Limits reuse
  • Salami Slice
  • Totally decomposed (no nesting of element
    declarations)
  • Must define all elements to be global--many
    potential roots
  • Confusing
  • Venetian Blind
  • Single valid global root element, all other
    elements local
  • But all of its types are reusable
  • Use named complex types, limiting encapsulation
  • Garden of Eden

18
Garden of Eden Schema Design
  • Combines Venetian Blind and Salami Slice
  • All elements and types are global many potential
    root elements
  • Allows reuse of both elements and types
  • Allows multiple files
  • Most flexible
  • Exposing types limits encapsulation
  • Somewhat harder to read

19
Garden of Eden Schema Example
  • ltxsdschema xmlnsxsd"http//www.w3.org/2001/XMLS
    chema" targetNamespace"http//schemas.sun.com/poi
    nt/gardenofeden" xmlns"http//schemas.sun.com/poi
    nt/gardenofeden" elementFormDefault"qualified"gt
  • ltxsdcomplexType name"PointType"gt
  • ltxsdattribute name"x" type"xsdinteger"/gt
  • ltxsdattribute name"y" type"xsdinteger"/gt
  • lt/xsdcomplexTypegt
  • ltxsdcomplexType name"LineType"gt
  • ltxsdsequencegt
  • ltxsdelement ref"PointA"/gt
  • ltxsdelement ref"PointB"/gt
  • lt/xsdsequencegt
  • lt/xsdcomplexTypegt
  • ltxsdelement name"PointA" type"PointType"/gt
  • ltxsdelement name"PointB" type"PointType"/gt
  • ltxsdelement name"Line" type"LineType"/gt
  • lt/xsdschemagt

20
Determine WSDL Approach
  • Started from Java
  • Then graduated to start from WSDL
  • Style/Use/BindingDocument/Literal Bare
  • Document/Literal Wrapped is Better Choice
  • Use Abstract WSDL
  • Imports schemas and defines operations
  • Protocol Bindings policies defined externally
  • Minimize Custom Bindings for Interop
  • Asynchronous Ops

21
Custom Binding for Async Mapping
  • ltbindingsxmlnsxsd"http//www.w3.org/2001/XMLSch
    ema"xmlnswsdl"http//schemas.xmlsoap.org/wsdl/"
    xmlns"http//java.sun.com/xml/ns/jaxwswsdlLoca
    tion"SigCapAsync.wsdl"gt
  • ltbindings node"wsdldefinitions"gtltenableAsyncMap
    pinggttruelt/enableAsyncMappinggt
  • lt/bindingsgt

22
Orchestrations
  • Introduce Orchestration early to maximize
    decoupling
  • No service directly invokes another to maximize
    reuse
  • No service is directly invoked by client (use the
    ESB)
  • We used BPEL initially, now Software AG Flow
  • Use rules as a service
  • Content Based Routing

23
Our Choice Wait on UDDI
  • UBR never happened
  • Is anyone really doing this?
  • We can and want to dictate
  • Lots about the Business Entity in UDDI
  • Many vendor tools make this available

24
SOA Governance
  • Enforces organizational policies and standards on
    two levels
  • Strategic
  • Align vision with business. What services? What
    processes? How to optimize business processes?
  • Education, guidance
  • Technical
  • How to build, bundle, store, deploy, operate,
    version, monitor (runtime KPIs)
  • BAM, runtime policies

25
Phase II
26
Vendor Products
  • Less code
  • Migrate our work
  • Enterprise Repository
  • Strong Governance
  • Performance
  • Business Process Management
  • Design tools
  • BAM
  • Support

27
Advantages of Vendor Tools
  • Robust BAM
  • Robust tool support
  • Dont have to expert in Java or XML to use
  • Manages whole life cycle
  • Development
  • Business Processes
  • Governance

28
On the Way SOAP REST
  • REST
  • Talk to the interface you get
  • Atom Publishing Protocol
  • Ease of use

29
On the Way EDA/SOA
  • SPEARS talk at Business Technology Summit

30
thank you
Write a Comment
User Comments (0)
About PowerShow.com