Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Here are the guidelines and recommendations to design, develop, test, and deploy WSO2 integration solutions:

...

  • When you create an artifact, use the proper naming convention from the start.
  • If an ESB project contains many artifacts related to multiple use cases, name the artifacts by prefixing or post fixing the use case name. 
  • Create specific ESB projects for specific use cases. This makes it easy to manage the code/project.
  • Design the ESB logic into highly cohesive and loosely coupled modules.
  • Avoid creating large, complex mediation code as much as possible. Always follow the separation of concerns design principle and split lengthy logic into separate mediation components.
  • When you have a common set of code, implement it in a sequence or a template that can be reused. For more information, see Sequence Template.
  • Externalize endpoint and policy references using the Registry. For more information, see Managing ESB projects across environments
  • Hide sensitive information such as passwords in configuration files using Secure Vault.

...

Otherwise, the Continuation Stack becomes empty in the Synapse Message Context if you do not use a Call mediator in the target sequence.

Using the Loopback  mediator

Do not include the Loopback mediator in the OutSequence.

...

  • You should not specify any mediator after the Send Mediator or the Respond Mediator.

    A message flow must end from these two mediators. Here, the message flow does not mean the current sequence. If you have these two mediators in a sub-sequence that gets called from a parent sequence, then once the message returns from the sub-sequence to the parent, the parent sequence should not include any mediator after the call to the sub-sequence. If you include a mediator after these two mediators, it can cause unusual behaviour in the message flow.

    The following diagram illustrates an incorrect use of the Send mediator:

    Image Modified

    The following diagram illustrates the correct use of the Send mediator:

...

  • Use the Iterate mediator in association with the Aggregate mediator.

  • Do not do any configuration after the Send mediator.

  • Do proper error handling to handle mediation errors as well as endpoint errors.

  • Use appropriate intervals for tasks.

  • Use the ForEach mediator only for message transformations. If you need to make back-end calls from each iteration, use the Iterate mediator.

  • Do not use the DB mediators (DBReport and DBLookup) with complex SQL queries or in scenarios where you need to simultaneously retrieve multiple rows. Instead, use the data services functionality of WSO2 Enterprise Integrator. For information on how to use the data services functionality, see the Tutorials.

  • Use dollar context (i.e., $ctx) instead of get-property()This is because the get - property  methods search even in Registry if the value is not available in the message context. Thus, it affects performance as Registry search is an expensive operation. However, $ ctx  only checks in the message context. 
    If you need to retrieve a property that you have set on a message, use the predefined XPath variables such as $ctx instead of the get-property() function for better performance. For example, use $ctx: proxy.name instead of get-property(' proxy.name ').
    For more information on the predefined XPath variables that you can use to retrieve a property, and for examples of XPath variable usage, see Synapse XPath Variables.

    Note
    titleNote

    The use of the get-property() function can have a lower performance because it does a registry lookup when the value is not available in the message context. Therefore, the recommended approach is to use predefined XPath variables when you need to retrieve a property.

    You will encounter this performance issue only if you are using WSO2 ESB 4.9.0 or below.

  • Reusing a defined sequence
    If you want to repeatedly use the same mediation sequence, you can define it and save it either in the Synapse configuration or in the Registry, with a unique name. Then you can call the mediation sequence from the main sequence as well as from multiple proxy services and REST APIs. The saved sequence can be called via the Sequence mediator or can be selected as the InSequenceOutSequence, or FaultSequence when you define a proxy service or a REST API.

    The following diagram illustrates how a saved sequence can be called using the Sequence mediator:

...

  • Ensure that you tune the deployment environment based on the performance tuning guidelines.
  • Install all patches using WSO2 Update Manager(WUM) in all environments.

    Info
    titleNote

    If you are using WSO2 ESB 4.9.0 or above, ensure that you have all WUM updates installed at any given time.

  • Pre-test patches in a test environment before going into the production environment. You should use an automated test suite to do this. For example, you can use JMeter Automation or SOAP UI.
  • Pre-test artifacts in a test environment before deploying into the production environment.
  • Pre-test configuration changes before applying them in the production environment.
  • Automate the process of change deployment. You can use puppet for this purpose. For more information, see the tutorial on How To Use WSO2 Puppet Modules to Deploy WSO2 Products.
  • Make sure you follow the production hardening guidelines before going into production or exposing instances to live traffic.
  • To port your artifacts from one environment to another, first package the artifacts into a Composite Application (C-App) archive, and then deploy the C-App in the new environment.
  • It is not recommended to run more than one server instance inside a docker container.
Note

You can implement high availability in your deployment via strategies like Blue-Green, Canary, or Rolling deployments. Select one of those strategies based on your requirements. This enables you to perform load balancing to maintain availability of services for consumers while they are being undeployed.

Recommended deployment patterns

...