Given the current environment, delivering an omni-channel experience is a must have for all businesses. Customers expect to have a flawless and intuitive experience through any digital touchpoint allowing them to quickly start research for a type of product on their mobile device, go visit your store to physically interact with the product, then use their laptop for a detailed comparison between multiple vendors, and finally order the product from their tablet over the course of days, weeks, or even months.
There are platforms that can deliver this entire experience, however, most of us use multiple software products to support this experience due to the way in which our IT infrastructure has developed over time. These systems exchange a lot of data between them to deliver the expected omni-channel experience. It is crucial to leverage the integrations we build to deliver the customer experience we want. We want to highlight two key design properties that make a good integration between any system A and any system B, e.g., your commerce platform and order fulfillment system.
The first property—coupling—describes the interdependence of the two systems you are integrating. The desire is for a loosely coupled integration, so that when there is a change to system A, it should not require a change to system B. If the integration between systems A and B are done correctly, i.e., it is loosely coupled, then system A knows nothing or almost nothing about being integrated with system B. This allows the two separate systems to evolve independently with minimal coordination needed between the teams that manage the two separate systems.
The second property is cohesion. It measures how related behavior is implemented through the codebase. A system with high cohesion has related behavior implemented together, while unrelated behaviors are implemented elsewhere. In the case of the integration between systems A and B, all of the integration work that is needed - communication with the two systems, data validation, and data transformation – needs to sit in a single place to obtain a high cohesion integration. This place can be a traditional middleware, another process, part of one of the two systems if the integration code is completely isolated from the rest of the system, or a more modern serverless compute service like Azure Functions or AWS Lambdas.
The benefits of having a low-coupled and high-cohesion integration between two systems is that the two systems can change independently with no impact on the other system (low-coupling). If we want to change how the integration works, we can do that by changing in only one place and release the updates faster.