DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Newsletter
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Related

  • Enabling Business Transaction Monitoring for App Connect Enterprise
  • MuleSoft Integration With RabbitMQ
  • How to Use IBM App Connect's ‘Mapping Assist’ to Automatically Map Your Integration Flows
  • Delegated Transport, Forked Authorization: Where Chat and AI-Agent Integrations Actually Break

Trending

  • How to Hide Sensitive Information Before You Share a File
  • Kafka vs Flink vs Spark: Do You Really Need Real-Time?
  • The Man Who Invented Selenium Also Built Its Replacement
  • Agent Harness, Memory Indexing, and AI Governance in Test Automation

Draft This article hasn't been published, so readers can't see it.

In moderation This article is waiting for review, so readers can't see it yet.

Deleted This article has been deleted, so readers can't see it.

  1. DZone
  2. Testing, Deployment, and Maintenance
  3. Deployment
  4. IBM IIB (Integration Bus) Best Practices

IBM IIB (Integration Bus) Best Practices

Explore IBM IIB best practices.

By 
Karthik Venkata Thotapalli
·
Jul. 01, 19 · Opinion
Post on X (opens in a new tab) Share on LinkedIn (opens in a new tab)
18.6K Views

Join the DZone community Save articles, join the discussion, and download Refcards and Trend Reports with a free account.

Join for free Already a member? Log in

We can segregate the best practices to be followed into two major categories.

  1. Designer perspective
  2. Developer perspective

Designer Perspective

  • First things first, a designer should have a firm understanding of Functional Specification. To some degree, the Functional Specification may undergo a few minor amendments while the task of Technical Specification is underway. However, it is expected that the Functional Specification has defined all the messages, components, and processes that are required for the interface before the commencement of Technical Design.
  • Now for flow designing, all the organizations have re-usable common flows (sub-flows) as libraries for auditing and exception handling. But I love to identify other common processes across the projects and have independent common flows prepared for that. We can call this a microservice architecture.

Example 1

Let’s say you have few projects (or the same projects across multiple countries) where the final backend is database and your IIB flows have to make a bunch of SQL inserts.

For this, we can have a flow created, which accepts “SQL inserts” as input from the main flow, and we can do a bulk insert at once. This way, we can decrease the roll-out period of similar pattern projects.

Example 2

I worked on a project where we used Salesforce as a CRM and had many services that needed to connect with it. Each time there is a call to salesforce for fetching sessionID, make another call for the actual business transaction.

Here we have a scope to make the sessionID call webservice an independent common flow.

  • There are new cool features in IIB 10 with better performance and ease of development. Such as:
    • Shared libraries Callable flows RestAPI project (generates API from Swagger doc), webUI for Transaction monitoring, and MQTT nodes for PUB SUB even without local MQ From IIB 10.0.0.14. It is possible to use aggregation even without using MQ. Having few standard patterns across the organization will lead to ease of reusability of code/modules.

Developer Perspective

Let me start with the CPU and memory costing tasks.

  • Message parsing
  • Navigating a tree in code
  • Copying the tree from every node to the next node
  • Logic in code
  • Resource access ( DB/files/HTTP req etc..)
  1. Reduce memory and CPU utilization by using OnDemand/opaque parsing. Try reducing parsing as much as possible.

Persistent messages follow a 3-commit rule for completion of “unit of work”, thus taking more processing time. For un-important messages like “balance inquiry”, which has an expiry time, there is no need to use persistence.

  • ESQL reference variables should be used for navigating message tree.
  • Don’t have too many compute nodes in a flow. This helps in reducing message trees being copied.
  • Avoid the below functions in ESQL code for better performance:
  1. EVAL

  2. Cardinality — Try to accomplish the task of looping with “Lastmove” instead

  3. Instead of too many “IF ELSE”, it's good to use “CASE”

  • Have transaction maintained in each and every flow
  • As I said above, accessing a resource like DB/files, etc. can cost us time and CPU. Have a well-designed flow reduces the access by number of times
  • Have a back-out queue configured for all input queues. If not, all failed messages may go to dead-letter-queue, and it will be difficult to identify each and every service’s message for reprocessing
  • Global cache helps in sharing frequently needed data across all integration servers
  • Have a proper and detailed plan of AVP verification after the restart of integration Nodes
Flow (web browser) Integration

Opinions expressed by DZone contributors are their own.

Related

  • Enabling Business Transaction Monitoring for App Connect Enterprise
  • MuleSoft Integration With RabbitMQ
  • How to Use IBM App Connect's ‘Mapping Assist’ to Automatically Map Your Integration Flows
  • Delegated Transport, Forked Authorization: Where Chat and AI-Agent Integrations Actually Break

Partner Resources

×

Comments

Loading comments

The comments didn't load

Please try again in a moment.

Likes

Loading

The next likes didn't load. Please try again.

The likes didn't load

Please try again in a moment.

See who liked this

Log in or join DZone for free to see who liked this article.

Log in Join for free
  • RSS
  • X
  • Facebook

ABOUT US

  • About DZone
  • Support and feedback
  • Community research

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 215
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

  • RSS
  • X
  • Facebook