Why does the simple task of making a fast and reliable system integration in our hyper-automated era turn into a catastrophe?
For nearly 20 years, there have been tools on the market that let teams manage integrations between systems quickly, reliably, and transparently for everyone.
Moreover, such tools are a foundational concept of service-oriented architecture.
Why many teams do not use this approach or use it incorrectly will be discussed at the end. Let us start with solving the task.
Collectively, such tools are called middleware, that is, an intermediate layer.
This layer by itself does not seem to provide value at first glance.
But a smooth road between your home and the restaurant also does not bring direct value.
More precisely, such solutions are called buses, t
that is, a software package that lets you take data from one system (for example, products from 1C), store it in intermediate storage, and send it to another - for example, Wildberries.
This layer "knows" that products cannot be transferred directly from 1C to Wildberries, and that the "color" attribute, for example, needs to be transformed in a special way.
This layer can also "know" that 1C does not store all product information, and that product photos must be taken from another system of yours, or even from the internet, before sending them to the marketplace.
What provides speed, reliability, and transparency?
Speed comes from the fact that your 1C developer does not need to write logs, set up monitoring, or learn how Wildberries works, and so on. The 1C developer already knows that if their system is the master system for products, then their responsibility already includes the bus connector and, in fact, the quality data in 1C. In other words, they can set up the transfer long before the export task even appears.
Strictly speaking, each system "knows" which data it is responsible for
For example, your 1C may be responsible for products and prices, while the warehouse system is responsible for stock balances.
It is also responsible for creating and updating this data in the intermediate layer - for storage in the corresponding broker queue.