Java CAPS Architecture Design Considerations by klutzfu63

VIEWS: 0 PAGES: 44

									Java CAPS:
Architecture & Design Considerations
                    Paul Wickstrom
                    Engineering Manager
                    Sun Software, SOA BI FAST
Agenda

         Open Source
         OPEN ESB
●   Objectives
         MURAL
         NETBEANS
●   Java CAPS 5.1.x review
         GLASSFISH
         PROJECT METRO
●   Java CAPS 6 choices
         OPEN MQ
         OPEN SSO
●   Composing Components with BDRU
         OPEN DS

●   Decision criteria given requirements & constraints
●   Miscellaneous Architecture Topics
Objectives
  ●   To understand the architecture and design options
      available in Java CAPS 6
  ●   To make informed decisions about which option to
      choose given constraints and requirements
  ●   Please contribute to the presentation with knowledge /
      experiences / preferences
  ●   DISCLAIMER:
      We are all in a learning phase.
      Architectural decisions are made with experience. Java
      CAPS 6 is a new product.
Java CAPS 5.1.x – Minimal Choice
  ●   External Connectivity
      ●   eWays
  ●   Business Functionality
      ●   eInsight BPs
      ●   Java Collaborations
      ●   XSLT Collaborations
  ●   Message Structures
      ●   OTDs
Java CAPS 6 – MUCH More Choice




                  c
Greater Development Capabilities
                                          IDE Support in Java CAPS 6
               JBI          Composite App Editor       Enhanced Web Service Editor             Data Profiler

                                                       Multiple Language                                 Java EE, ME, SE, SOA, MDM...
        BPEL 2.0            BPEL2.0 Mapper
                                                       Java, C++, Jruby, etc
                                                                                       Distributed Debugging


                     Integrated Runtime            IDE Support in Java CAPS 5                 Data Integrator        Versioning
              Master Index Config                                                                               Data Cleanser
                                          WSDL Editor (Rep)     BPEL Debugger           Connectivity Map
Profiling       Deployment
                Profile                                                 Java Collaboration                       BPEL 1.0
                        Page Flow                  Impact Analyzer
                                                                                                        OTD Editor

            Update Center                                                      WS Interoperability              UML Modeling
                                             Enhanced WSDL Editor
 Web 2.0: Phobos, JRuby, REST                 Unified Project View                Component /App                          Visual Webpack
                                                                                  Life-cycle management
      Database Access Editor          Enhanced XML Schema Editor                                                 Integrated Test Env
Greater Runtime Capabilities

                                      Runtime Support in Java CAPS 6

               JBI Bridge              WS Interoperability          Java EE 5
                                                                                                Integrated Monitoring
                                          WS Reliability
JBI Runtime                                                         Enhanced WS Security
                           Java EE Service Engine                                                      Common management API

                                                Runtime Support in Java CAPS 5
                 Java EE                                                                                   Scheduler
                                WLM           Access Manager                              Sun JMQ
                                                                   Repository                                   JMS Grid
           JCD                           STCMS                                         WebServices
                    Data Cleansing                             Master Index                                 BPEL 1.0 Engine


                                                     High Availability            BPEL 2.0 Engine
                              JCA Adapters
 Java Persistence                                          Clustering, Failover                       EJB 3.0                      JSF
                             Data Profiling            Record Performance             JAXWS          Annotations
Grizzly Web Cotainer                                                                                                    Multiple Profiles
                                        Web2.0:AJAX, jMaki, Phobos...more                  Update Center
                                                                            Java CAPS 6 u1 GA
                                                                              in January 2009

Java CAPS 6 – MUCH More Choice
●   External Connectivity                                   Everything in Java CAPS
                                                                      5.1.3
    ●     Repository-based eWays
    ●     Java EE JCA Adapters                       JMS, File, Batch, Oracle, TCP/IP,
                                                     Oracle Applications, SAP, Siebel,
    ●     Binding Components
    ●     Native Java                                                 HTTP-BC, DB-BC, JMS-BC,
          (e.g. JDBC, JPA)                                            FTP-BC File-BC, LDAP-BC




        http://soabi.stc.com:8080/JSPWiki/Wiki.jsp?page=CAPS.ComponentRelease.HighLevelPlan
HTTP BC

●   For
    ●   Orchestrated through BPEL 2.0 Process
    ●   Leverages Grizzly HTTP Implementation
          ●   Performance
    ●   Used to expose Web Services
    ●   WSIT Functionality Available
●   Against
    ●   BPEL 2.0 is required
    ●   Does not support SOAP 1.2
    ●   Does not support REST Web Services
    ●   Only supports Get and POST
Java CAPS 6 – External Connectivity
eWays                      JCA Adapters *              BCs / SEs                  Native Java
●   For                    ●   For                     ●   For                    ●   For
     ●    Coverage              ●    Same codebase          ●    Easy to use           ●    Just Java
                                     as eWays                                               code so many
     ●    History –                                         ●    Community                  developers
          proven track-         ●    Fine-grained                involvement
          record                     properties                                        ●    Proven
                                                            ●    Inherently JBI
     ●    Fine-grained          ●    Connection                                   ●   Against
          properties                 properties in
                                                            ●    Open
                                     App Server                                        ●    Java coding
●   Against                                            ●   Against
                                ●    PS & SP builder                                   ●    Often
     ●    Requires use
                                                            ●    Limited                    multiple
          of repository
                                ●    Tooling /                   coverage at                choices (JDO,
                                     features                    GA                         JPA, JDBC)
     ●    Connection
          properties       ●   Against                      ●    Requires
          stored in EAR                                          WSDL
                                ●    Only in Java                knowledge
     ●    Proprietary /
          Closed
                                ●   Coding required             Note: Performance factors not considered
                                    hence..
                          * Includes OTD Importer
                              functionality
                                                                            Java CAPS 6 u1 GA
                                                                              in January 2009

Java CAPS 6.0 – MUCH More Choice
●   Business Functionality                                      Everything in Java CAPS 5.1.3
                                                                but eBAM & XSLT Collaboration
    ●     Repository Components
            ●   eInsight BPs via JBIBridge
            ●   JCDs via JBIBridge
    ●     JBI Service Engines                                 BPEL-SE, XSLT-SE
                                                               DataMashup-SE
    ●     Java EE
            ●   EJB
            ●   Spring



        http://soabi.stc.com:8080/JSPWiki/Wiki.jsp?page=CAPS.ComponentRelease.HighLevelPlan
BPEL-SE Editor
BPEL-SE
 ●   Supports BPEL 2.0
 ●   High performance
 ●   Transactionality
 ●   Scalability & HA
     ●   Passivation improves vertical scalability
     ●   Enhanced clustering supports failover with correlated
         receives
 ●   Alerting and logging
 ●   Debugger and Tester
 ●   Extensible management API
Java CAPS 6 – Business Functionality
 Repository Components via BDRU                 JBI Service Engines
 ●   For                                        ●   For
       ●   Visual mapping (JCDs)                     ●    Easy to use, Community involvement,
       ●   Possible zero-coding                           Inherently JBI, Open
       ●   Re-use of existing components             ●    XSLT SE
       ●   JCD to JCD calls
                                                            ●   visual mapping
 ●   Against                                                ●   XALAN for native Java calls
       ●   Only certain components can be re-        ●    BPEL SE
           used
             ●  JCD must be “new webservice”
                                                            ●   Performance
             ●  JCD can only use XSD OTD
                                                            ●   Persistence
                (FC XSD)
                                                            ●   Passivation
       ●   Reliant on repository
                                                            ●   Intelligent session affinity
       ●   Management of dependencies           ●   Against
                                                     ●    Limited coverage at GA
     Note: Performance factors not considered        ●    Requires WSDL knowledge
Java CAPS 6 – Business Functionality
●   Updating a Java CAPS core design pattern
    ●   Java CAPS 5.1.x:
         ●   Use JCDs to implement technical services that encapsulate
             integration to back-end systems using eWays and OTDs
         ●   Use eInsight BPs to implement business services, presenting
             endpoint (typically JMS or WS) and orchestrating technical
             services
    ●   Java CAPS 6:
         ●   Use Stateless Session EJBs to implement technical services
             that encapsulate integration to back-end systems using JCA
             Adapters and OTD Importer
         ●   Use BPEL 2.0 BPs to implement business services, presenting
             endpoint (typically JMS or WS with QoS provided by WSIT) and
             orchestrating technical services
                                                                            Java CAPS 6 u1 GA
                                                                              in January 2009

Java CAPS 6.0 – MUCH More Choice
●   Message Structures
                                                   Everything in Java CAPS 5.1.3
    ●     Repository
            ●   OTDs (via OTD Importer)
    ●     Encoders (both encode and decode)
            ●   Future: SWIFT, HL7                                                  Custom
    ●     Native Java
            ●   JAXB




        http://soabi.stc.com:8080/JSPWiki/Wiki.jsp?page=CAPS.ComponentRelease.HighLevelPlan
Java CAPS 6 – Message Structures
Repository OTDs                  Encoders                             Native Java (JAXB)
●   For                          ●   For                              ●   For
     ●    Re-use of existing          ●    Support for custom              ●    Just Java code –
          OTDs (specifically               formats                              knowledge is out there
          DB)                         ●    XSD based                       ●    Proven
     ●    Coverage                    ●    No design-time pollution   ●   Against
     ●    History                     ●    Open                            ●    Java coding required
●   Against                      ●   Against                               ●    Regeneration required
     ●    Proprietary / Closed                                                  on XSD change
                                      ●    Limited coverage (at GA)
                                      ●    Currently supports BCs,
                                           not SEs
                                      ●    Parsing – performance
                                           (?)
General Thoughts on JBI components
 ●   Fors
     ●   Easy to make simple projects
     ●   Edit/deploy/debug cycle is fast
     ●   Easy to use test cases
 ●   Against
     ●   More technical developer is required (perception)
     ●   More technical runtime environment
          ●   JNDI, Connection Pools, etc
     ●   Coordination between developers and Change Control
     ●   Netbeans 6 – World-class IDE, but it may be too powerful or
         overwhelming to the typical Java CAPS user/non-developer
     ●   Many small projects
Agenda

         Open Source
         OPEN ESB
●   Objectives
         MURAL
         NETBEANS
●   Java CAPS 5.1.x review
         GLASSFISH
         PROJECT METRO
●   Java CAPS 6 choices
         OPEN MQ
         OPEN SSO
●   Composing Components with BDRU
         OPEN DS

●   Decision criteria given requirements & constraints
●   Miscellaneous Architecture Topics
       Gee ...
  Thanks for all the
      choices.

 Q: What should my
customer use to build
    their project?

  A: It depends ...
Composing Components


                    JBI
                 Components

    JBI Bridge                   Java EE SE

                     BDRU

    Classic                       Java EE
  Components        JBI Bridge   Components
Project Profile
  ●   Technical Factors              ●   Environment Factors
      ●   Existing Java CAPS or          ●   Team & Lead Architect
          new development                    skill level
      ●   Integration technologies            ●   Java CAPS
      ●   Web Services
                                              ●   Java EE
                                              ●   Java SE
      ●   Non-Functional
                                         ●   Team geography
           ●   Performance
           ●   Scalability
           ●   Manageability
Map Profiles to Components
  ●   Determine Preferences             ●   Determine Components
      ●   IF ExistingJavaCapsProject        ●   IF IntegrationTechnology
          THEN prefer Classic                   available in JBI
                                                AND JBI is preferred
      ●   IF GreenField                         THEN use JBI
          THEN prefer JBI and Java EE
                                            ●   IF IntegrationTechnology
      ●   IF Geographically Dispersed           available in JcaAdapter
          THEN prefer JBI and Java EE           AND Java EE is preferred
      ●   IF WebServices                        AND Experienced in Java EE
          THEN prefer JBI and Java EE           THEN use Java EE
                                            ●   IF IntegrationTechnology in
                                                RepositoryComponents
                                                AND RepositoryComponent is
                                                preferred
                                                THEN use Java EE
                                            ●   IF team only has experience
                                                in Java CAPS
                                                THEN use Classic
Agenda

         Open Source
         OPEN ESB
●   Objectives
         MURAL
         NETBEANS
●   Java CAPS 5.1.x review
         GLASSFISH
         PROJECT METRO
●   Java CAPS 6 choices
         OPEN MQ
         OPEN SSO
●   Composing Components with BDRU
         OPEN DS

●   Decision criteria given requirements & constraints
●   Miscellaneous Architecture Topics
Security
  ●   Gateway (e.g. Layer 7)
  ●   At HTTP endpoint (WSIT, HTTP-BC)
  ●   At other endpoints (SME Toolkit API)*
  ●   Between JBI endpoints (Interceptors)*
  ●   Subject propagation*


  * work in progress, not available today
Performance – Runtime
 9000

 8000

 7000

 6000
                                     BPEL1.0 EAR
 5000                                BPEL1.0 JBIBridge*
 4000                                BPEL 2.0 JBI*
                                     EJB-WS JAR
 3000
                                     Servlet-WS WAR
 2000

 1000

   0                                 * numbers may be out-dated
        Purchase Order Web Service   by recent performance fixes
Performance – Design Time


      50
      45
      40
      35
      30
      25                                     Deploy
      20                                     Build
      15
      10
       5
       0
           513   Classic   JBIBridge   JBI
Performance – New Tools
  ●   Java CAPS profiler
  ●   Monitoring API measurement
  ●   Jconsole plugin in NB
  ●   SoapUI load testing plugin in NB
  ●   Jstack, Jstat
Performance – New Options
  ●   Fast infoset in HTTP-BC
  ●   BC to BC communication (e.g. Service
      virtualization)
  ●   BPEL uses pass-by-reference
      optimization
  ●   Persistence optimizations
      ●   Only dirty variables persisted
      ●   Only non-repeatable activities trigger
          persistence
      ●   Atomic BP's not persisted
  ●   Large file processing as streams (Batch
Transactionality
  ●   Transactionality
       ●   Message loss
       ●   Duplicate message (atleast-once delivery)
       ●   Once-and-only-once delivery
  ●   JBI propagates transaction as part of message
      exchange
  ●   Transactionality configuration is pretty straight forward
      for most components (except BPEL SE)
  ●   WS-AtomicTransaction in HTTP-BC
Transactionality – Java EE SE
  ●   Once-and-only-once behavior if all message exchanges
      are transactional.
  ●   Else ‘atleast-once’.
  ●   Annotation @TransactionAttribute used in MDB and
      Session Beans
  ●
      @TransactionAttribute(value=TransactionAttributeType.REQUIRED)


       ●   Default
       ●   Uses existing transaction context
  ●   @TransactionAttribute(value=TransactionAttributeType.REQUIRES
      _NEW)
       ●   creates new transaction context
       ●   specified at class or method level
Transactionality – BPEL SE
  ●   Default behavior
      ●   Message loss
      ●   atomic=’no’, persistence=’no’
      ●   reason for defaults – typical long running processes far
          exceed transaction timeout
Transactionality – BPEL SE
  ●   BPEL transactionality options different based on 'long
      running' or 'short running'
  ●   Short running BPEL
      ●   Turn ‘atomic=yes’ on the BPEL.
      ●   This makes sure the ACK is not sent till entire BPEL
          finishes execution.
Transactionality – BPEL SE
  ●   If all partners are transactional (as in this example)
       ●   ‘once-and-only-once’ behavior
  ●   If atleast one partner is non-transactional (e.g. File BC)
       ●   that partner could get same message delivered more than
           once
       ●   hence ‘atleast-once’ behavior
  ●   Note: If persistence is ON but BPEL is ‘atomic’, not
      persisted (performance optimization)
Transactionality – BPEL SE
  ●   Long running BPEL
       ●   Cannot be part of one long transaction (timeout)
       ●   BPEL persistence is used instead of atomic
       ●   BPEL engine starts a new transaction for each outbound
           partner that is transactional
  ●   Note: BPEL 2.0 does not persist repeatable activities like
      'assign' (performance optimization over BPEL 1.0)
Transactionality – BPEL SE
  ●   JBI 'ack' is sent to JMS-BC immediately after the
      receive and the In-Only message exchange is
      marked as completed.
  ●   If process dies at ‘Assign’, recovery uses
      persisted version of the JMS message to repeat
      from 'Receive'
  ●   Persistence to a transactional DB is also part of
      each transaction scope
Monitoring/Management
  ●   Scripting and command line
  ●   Graphical out-of-the-box:
      ●   NetBeans (developer view)
           ● JBI Manager
           ● project 'deploy/undeploy'


      ●   GlassFish (operations view)
           ●Admin console GUI (endpoint stats)
      ●   Enterprise Manager (operations view)
           ●'Classic' style web app ported to GF
          ● Alert agent, SNMP agent for all of Java CAPS 6


  ●   Future
      ●   SVG style monitoring
Monitoring – Alerts
Intelligent Routing
  ●   Gateway – Layer 7
  ●   BPEL 2.0 – Xpath, SOAP header access
  ●   Dynamic Partner Links for routing
      programmatically (uses WS-addressing tags)
  ●   In this example, part1 is of type
      wsa:EndpointReference
Intelligent Routing - BPEL
  ●   wsa:EndpointReference literal can be
      created in BPEL source mode
      <bpws:literal>
         <sref:service-ref>
               <ns1:EndpointReference>
                   <wsa:Address>
                     http://localhost:8080/stockQuoteService/stockQuotePort
                   </wsa:Address>
                   <wsa:ServiceName PortName="stockQuotePort">
                     ns3:stockQuoteService
                   </wsa:ServiceName>
               </ns1:EndpointReference>
         </sref:service-ref>
      </bpws:literal>
Orchestration
  ●   BPEL 2.0 orchestration 'blue prints'
Orchestration
  ●   Other orchestration blueprints?
      ●   BPEL 2.0 event handlers
      ●   Dynamic service invocation
      ●   JMS request-reply with BPEL correlation
Other Architecture Considerations?\
  ●   Data integration options
      ●   eTL SE vs DB BC vs Data Mashup SE
  ●   Java coding options
      ●   Java EE SE vs POJO SE vs JCD

								
To top