Book Image

Application Development for IBM WebSphere Process Server 7 and Enterprise Service Bus 7

Book Image

Application Development for IBM WebSphere Process Server 7 and Enterprise Service Bus 7

Overview of this book

By adopting an SOA approach in Business Process Management (BPM), you can make your application flexible, reusable, and adaptable to new developments. The SOA approach also gives you the potential to lower costs (from reuse), and increase revenue (from adaptability and flexibility). However, integrating basic SOA constructs (such as Process, Business Services, and Components) and core building blocks of BPM (such as Process Modeling and Enterprise Service Bus) in a real-world application can be challenging.This book introduces basic concepts of Business Integration, SOA Fundamentals, and SOA Programming Model and implements them in numerous examples. It guides you to building an Order Management application from scratch using the principles of Business Process Management and Service Oriented Architecture and using WebSphere Process Server (WPS) and WebSphere Enterprise Service Bus (WESB). The various detailed aspects, features, and capabilities of the product are conveyed through examplesWe begin with essential concepts on Business Integration, SOA Fundamentals and SOA Programming Model. Then we set up the development environment to build your first Hello Process and Hello Mediation applications.Gradually, we build an SOA-based Order Management Application. We cover important aspects and functions of WPS and WESB with numerous practical examples. We show how to analyze your application's business requirements and check if an SOA approach is appropriate for your project. Then you do a top-down decomposition of your application and identify its use cases, business processes, and services. Having built the SOA Application, we introduce you to various non-functional topics, including: Administration, Governance, Management, Monitoring, and Security. We also discuss deployment topologies for WPS and WESB, performance tuning, and recommended practices.
Table of Contents (20 chapters)
Application Development for IBM WebSphere Process Server 7 and Enterprise Service Bus 7
Credits
About the Authors
About the Reviewers
Preface
WID, WPS, and WESB Tips, Tricks, and Pointers
Index

Some performance tips and considerations


While the question is a simple one, the answer itself is not. Every customer is unique including the physical topology, network topology, requirements, needs, and other application and hardware that make up the ecosystem. Performance tuning is a personalized exercise that is done uniquely with and for the customer. As mentioned several times, WPS and WESB are built on the core capabilities of the WebSphere Application Server infrastructure. Hence solutions built using WPS and WESB also benefit from tuning, configuration, and best practices information for WAS and the corresponding platform JVMs. However, having said this, here are some tips, considerations, and areas to look into for performance improvements:

  • Use Microflows wherever possible instead of long-running processes.

  • Use a high-performance disk subsystem.

  • Use DB2 instead of the default Derby DBMS. DB2 is a high-performing, industrial strength database designed to handle high levels of throughput and concurrency, scale well, and deliver excellent response time.

  • Disable tracing and monitoring; use this wisely.

  • Configure thread and connection pools to enable sufficient concurrency.

  • Avoid unnecessary usages of asynchronous invocations.

  • Use events (CBE) with judgment, since it uses a persistence mechanism.

  • BPC DB2 Database Tuning:

    • Avoid RUNSTATS on empty tables.

    • Separate the logfiles from the data, put them on their own volumes.

    • Large enough space allocation for logfiles and the log buffer.

    • Make the buffer pool big enough to avoid disk I/O.

    • Set only the monitor switches that are really needed to on.

    • Update optimizer statistics (RUNSTATS) to avoid deadlocks.

  • The throughput of the services you build on WPS and WESB will be limited by the external applications and services it will have to invoke which may have a lowest throughput capacity. Design your system taking into consideration these bottlenecks.

  • For large object (over 5 MB in general) processing consider batch patterns by splitting the large objects as multiple small objects.

  • Consider moving to a 64-bit mode (for server runtime) for applications that are well behaved and liveset exceeds 32-bit memory limitations.

  • Cache results of ServiceManager.locateService() in your Java code.

  • Use synchronous SCA bindings across local modules, since this binding has been optimized for module locality and will outperform other bindings.

  • Do not apply a QoS qualifier at the interface level if it is not needed for all operations of the interface.

  • When designing long-running business process components, ensure that callers of a two-way (request/response) interface do not use synchronous semantics, as this ties up the caller's resources (thread, transaction, and so on) until the process completes. Instead, such processes should either be invoked asynchronously, or through a one-way synchronous call, where no response is expected.

  • Minimize number and size of BPEL variables declared and business objects because each commit saves modified variables to the database.

  • The throughput is inversely related to the number of transaction boundaries traversed in the scenario, so fewer transactions are faster.

  • In an SCA assembly, we recommend using the SCA transactional qualifiers to reduce transaction boundaries. For any pair of components where this is desired, we recommend using the following golden path:

    • SuspendTransaction=false, for the calling component's reference

    • joinTransaction=true, for the called component's interface

    • Transaction=any|global, for both components implementation

  • Components and modules can be wired to each other either synchronously or asynchronously. The choice of interaction style, especially choosing an asynchronous style, can have a profound impact on performance. Use asynchronous style only when needed. Set the preferred interaction style to Sync whenever possible.

  • Avoid asynchronous invocation of synchronous services in a fan-out/fan-in block.

  • There are three categories of Mediation primitives in WebSphere ESB that benefit to a greater or lesser degree from these internal optimizations:

    • Category 1 (greatest benefit):

      • Route on message header (message filter primitive)

      • XSLT primitive (transforming on /body as the root)

      • Endpoint Lookup without XPath user properties

      • Event emitter (CBE header only)

    • Category 2 (medium benefit):

      • Route on message body (message filter primitive)

    • Category 3 (lowest benefit):

      • Custom Mediation

      • Database lookup

      • Message Element Setter

      • Business Object (BO) mapper

      • Fan-out

      • Fan-in

      • Set message type

      • Message Logger

      • Event Emitter (except for CBE header only)

      • Endpoint Lookup utilising XPath user properties

      • XSLT Primitive (with a non /body root)

  • XSLT and BO Maps—In a mediation flow that is eligible for deferred parsing, the XSLT primitive gives better performance than the BO Map primitive. However, in a mediation flow where the message is already being parsed, the BO Map primitive gives better performance than the XSLT primitive. Note that if you are transforming from the root (/), then the Business Object map will always perform better.

  • Do not run the production server in development mode or with development profile.

  • Do not use the UTE for performance measurement.

  • Use query tables to optimize query response time.

  • Place database logfiles on a fast disk subsystem.

  • WID performance considerations:

    • Opt for a faster and high speed disk drive

    • Defragment the drive periodically

    • Make use of shared libraries in order to reduce memory consumption