Web Services Done Right Done Quickly

Document Sample
Web Services Done Right Done Quickly Powered By Docstoc
					     Web Services
      Done Right
     Done Quickly

      Matthew Fowler
New Technology/enterprise Ltd
• NT/e's Experience
• Architecture for Web Services
• JeeWiz - A J2EE System Generator
    NT/e’s Experience with BEA
•   40 Projects on behalf of BEA
•   All sizes - very large to small
•   All roles - architect to deployer
•   All stages - Proof Of Concept to go-live
•   WLS Training - Development, Admin
•   WLS 4.0 -> WLS 6.1
             Some Projects
•   Banks: Deutsche, Dresdner, UBS Warburg
•   Finance: Capital One, EBRD, Crest
•   Comms: British Telecom, Nokia, Equant
•   FT100: BA, BP Amoco, Sainsburys
•   Others: FT, TAG Maclaren, Jumpy, Vizzavi
•   BEA Partners: Accenture, CSC, Scient
                Part 2.
    Architecture for Web Services
•   The Background - BT Project
•   The Battles
•   The Principles
•   The Architecture - A Synthesis
            The Background
• British Telecom
• Internal System Team
• "Common Entry Point"
  – Multi-channel, multi-client ... large!
• WLS replaced
  – WLE
Client Systems                                   Mainframes

  Call Centre                                      Customer

                 WebLogic Server                    Business
                    Mid-Tier                       Customers
                                   Login MUX


                The Battles
•   RMI or EJB access route
•   Straight-through, no value-add
•   Stateful or Stateless
•   Ru-Use on Business Objects
•   Access to "Entities"
•   Where is the business logic
•   Access to mainframes/back-end services
       RMI or EJB access route
•   Issue: RMI access simpler, it's an option
•   Need: Transaction & network management
•   Resolution: EJB - RMI excluded
•   Realisation: EJB Facade layer
  Straight-through, no value-add
• Issue: enough business logic on mainframe
• Need: access to login server
• Resolution: Support straight-through
  – Value added
     • Transaction & network management
     • Access Routes at front and back ends
• Realisation: Special Session EJBs
         Stateful or Stateless
• Issue: amount of mid-tier information
• Need: response-time/throughput goals
• Resolution: allow either
  Re-Use on Business Objects ?
• Issue: Scepticism concerning reuse on
  "Business Objects"
• Need: ROI demands maximal reuse
• Resolution:
  – Reusable "Business Objects"
  – Non-reusable "Business Process Objects"
• Realisation: BPOs and BOs
         Access To "Entities"
• Issue: "give me entity info, no biz process"
• Need: simple multi-client access to entity
• Resolution: allow access to Biz Objects
• Realisation: generic "BO Access" Session
• Caveat: use for retrieval only
      Where is the business logic
•   Issue: Why have business logic in mid-tier?
•   Need: Performance, ease of programming
•   Resolution: allow none, or lots
•   Realisation: three styles:
    – no business object
    – access to business object via generic EJB
    – use full BPO stack
 Access to Mainframes/back-end
• Issues:
  – Little objects, big transactions
  – Multiple-choices for mainframe transactions
  – Migration to WebServices at M/F
• Resolution:
  – Information Layer driven by Business Process
  – Smart mapping, caching, XML intermediate
   Access Routes (Servlets)       Pluggable Access Routes, e.g. SOAP, Http/XML

                                                                                      Accessible Services
   Services (Session EJBs)        Client Identity, BP Selection, Exception Handling

                                                                                      Accessible Business Processes
Business Process Objects (Java)   Client-Specific Business Procedures

                                                                                      Business Concepts
   Business Objects (Java)        e.g. AccountBO, CustomerBO, OrderBO

               Dependent Data             e.g. OrderLine

                                                                                      Business Information
  Information Objects (Java)      e.g. Account, Customer, Order

              Dependent Data

   Persistence / Transactions     EJB, Connectors, Web Services, CORBA
                   Business Process

        Http/XML        SOAP               Java
          Client        Client            Client

        Http/XML        SOAP                         L
         Servlet        Servlet
           Services - Session EJBs

          Business Processes     Generic BO Access

                     Business Objects

                    Information Objects

CORBA      EJB          WebServices            JCA
               Done Right
• Major long-term savings
• Can handle highly complex processes
• But not done quickly
  – Long Proof
  – Application Programmer training

    How to do it quickly ???
                  Part 2.
                 The Java Enterprise System
•   J2EE Development 1999-2001
•   The JeeWiz! Vision
•   How JeeWiz! Works
•   Benefits
•   Next Steps
  J2EE Development 1999-2001
• Start-up long and expensive
  – Architecture, PoC, Performance, Document
  – And finally … the application
• Constant Change - EJB1.1/2.0, JSPs, Portals
• Mixing of Infrastructure and App
• Complex, difficult to change
     J2EE Development Example
•   8 months duration, average 4 people
•   Develop sample, productise, throw away
•   Develop sample, productise, document
•   Try to teach Application programmers
    – But it was really hard
• Total cost: > DM 1,000,000
       The JeeWiz! Vision

First Vertical Slice, Localised, in 2 Weeks

   Good for small or large enterprises
      The JeeWiz! Vision - Goals
•   Simplify for application developers
•   Easier adaptation to change
•   Package architectural patterns
•   Reduce start-up time
•   Reduce cost
•   Reduce risk
How JeeWiz! Works

Application Development and Deployment

             J2EE System
Components and Patterns for Web Services

  Ant + Patterns + XML Specifications
    JeeWiz! Foundation - Tools
• Ant - Java-based builder
  – more intelligence into the build process
• Velocity - pattern generator
  – separate patterns from application definition
  – the new specification and interchange language
JeeWiz! Foundation - Process

                                                 Patterns +
                               J2EE Expert                                                      Unit Test
                                                                                               App Servers

                Patterns +
                Standards                                                       Application
               Specification                                                  Implementation
                                                                Application                    SystemTest
                                                                Programmer                     App Servers

                               Application   Specification
       patterns and                                                                            Production
        standards                                                               Deployment     App Servers
                                                                Assembler /
         JeeWiz! Foundation - Patterns

    Application Specification                                      Generated Code and Descriptors

                                        Directory Naming     /src/AccountEJB/
         name     = Account
entity                                    File Naming                AccountPK.java

                 name    = AccountID   Java Object Naming   public class AccountPK {
                 type    = int                                  public AccountPK() {}
                 key     = true          Code generation        abstract public int getAccountID();
                                                                abstract public void setAccountID( int i );

                                           Deployment       <entity>
                                            descriptor         <ejb-name>AccountBean</ejb-name>
                                           generation       </entity>
        JeeWiz! Foundation -
• Runnable WLS configuration
• Application programmer generates unit test
• Assembler / deployer add overrides
• XSL-T (XML Transformations) today
• 'XMLMerge' utility tomorrow
           JeeWiz! Foundation
• Patterns help application programmers
  –   reduces effort
  –   reduces complexity
  –   reduces risk
  –   eases maintenance
  –   promotes standards
• Foundation can be adapted to new areas
       JeeWiz! J2EE Patterns
• Builds on the Foundation
• Design language for J2EE applications
• A complete set of patterns for
  – Web Services ...
  – to EJBs
• Includes deployment
• Doesn't (yet) include testing, Rational Rose
          Customer Benefits
• Cheaper, quicker start-up
• Improved productivity for bulk of
• Cheaper, quicker maintenance
• Clearer reponsibilities for personnel
• Easier to use new technologies
              JeeWiz USPs
• Combination of
  – build engine is end-to-end and adaptable
  – NT/e's EJB pattern
  – enterprise-level features for deployment
• EJB2.0 and Web Services
• No run-time overhead/cost
             JeeWiz! Futures
•   Automatic testing
•   Integration with Rational Rose / RUP
•   Documentation production
•   Business Rules using EJB2.0
•   JCA, integration with WLI