Hi, I am currently working on a multi-system integration project where several business systems need to communicate with SAP. The first phase of this project is to build an integration system between a WMS and SAP.
After learning about messaging frameworks, I am considering using NServiceBus. I have been reading through the official documentation, but I still have some questions regarding Logical Endpoint design.
I would like to share my current understanding and would appreciate any advice or experience from the community, people who have designed similar integration platforms.
For the WMS-SAP integration scenario, the main business areas may include:
- Inbound processing
- Outbound processing
- Data Synchronization
- Inventory management
- Miscellaneous operations
At the moment, I am considering two possible approaches.
Option 1: Based on systems
- WMS Endpoint
- SAP Endpoint
This approach is easier for me to understand because when a new external system is introduced in the future, I can add a new endpoint based on the system boundary.
However, I am concerned about scalability.
For example, if one specific WMS business process becomes slow or requires independent scaling in the future, would I eventually need to split it into a separate logical endpoint?
If so, the original “system-based endpoint design” may become difficult to maintain.
Option 2: Based on business capabilities
- WMS-Inbound Endpoint
- WMS-Outbound Endpoint
- Data-Sync Endpoint
- Inventory Management Endpoint
- Misc-Operation Endpoint
This seems to provide better isolation between different business areas.
However, I am concerned about creating too many endpoints. Since Logical Endpoints also have licensing and operational considerations, excessive fragmentation may introduce unnecessary complexity.
Based on mu current understanding, a Logical Endpoint should represent a boundary that requires:
- Independent message queue
- Independent deployment
- Independent scaling
- Independent failure isolation
With this understanding, I am wondering whether both approaches above are too extreme.
My current idea is to start like:
- WMS-Operation Endpoint
- WMS-Sync Endpoint
The reason is that the current WMS message throughput is small (less than 10,000 messages/day), so this may provide a reasonable balance between isolation and simplicity.
My questions are:
- What principles do you usually follow when defining Logical Endpoint boundaries?
- Should endpoints normally align with business capabilities, technical responsibilities, or external systems?
I would really appreciate any advice, best practices, or examples from your experience.
Thank you!