Why is it relevant to use a dedicated solution to convey messages between several applications ? What does this method bring that a point-to-point interface doesn’t ?
Urbanizing the information system and enabling it to evolve
The use of a third-party solution to deliver information between the various applications of the information system enables to urbanize it. Enterprises evolve with time and, quite often, they add up applications which communicate in a non-standardized way. This makes it difficult for the information system to evolve, in a technical or an applicative way.
In response to this problem, urbanizing the information system, in the same way as a city is urbanized, entails creating a system able to evolve easily so as to sustain the various changes generally affecting a company (being acquired by another, merging, concluding a partnership, creating a new business line…). To this end, the information system has to implement the principle of high cohesion, loose coupling: each component must be able to communicate with the others without there being a strong technical dependency. A well-defined role must be assigned to applications as well as a standardized input and output behavior. It must be possible to take any application out or replace it without affecting the rest of the information system technically. The fact for the applications of using a third-party solution to exchange data enables them not to have to support API or file formats specific to other applications of the information system, which would create technical coupling. The use of a dedicated solution to interconnect the applications of the information system is therefore necessary.
Urbanizing the information system makes it easier to scale it out. If the data flows between applications are well defined and there is no coupling, it is easier to add new applications. So, complying with the principles of urbanization, especially by using a dedicated solution to interconnect applications, contributes to the building of an agile, modular and easily evolving information system.
Managing asynchronous data transmission
Developing a point-to-point interface between two or more applications might seem simple. However, the question of the availability of the applications receiving data (the consumers) entails the need to manage asynchrony. Indeed, one of the benefits of using a third-party solution is its being available independently from the applications connected. Even if a consumer application is not connected to Xbus when an incoming message arrives, the message won’t be lost. It will be stored in the bus database and sent to the application as soon as it connects to the bus. In this way, Xbus guarantees the asynchronous transmission of messages.
In addition, consumer applications don’t necessarily consume the data sent to them at the pace at which they receive it. Implementing a queue system combined with a database to store the messages at the level of consumer applications would be useless insofar as such a system would depend on the availability of consumer applications. Therefore, it would be necessary to implement the system at the level of emitter applications. However, it would imply that emitters have to take into account the way the data they send is consumed, which is inconsistent with the principles of urbanization, according to which a component doesn’t have to be too tightly connected to another. Implementing a third-party system as an intermediary therefore appears as the best option if you want to manage asynchrony effectively. Xbus includes a queue system based on NATS as well as a database capable of forming a buffer by storing the messages not consumed quickly enough by the consumer applications. It is possible to configure the pace at which you want the data to be received by each application.
Monitoring the data flows
A solution interconnecting applications generally enables you to monitor the data flows exchanged between applications by tracking various measures. With Xbus, it is possible to: • Check if each message has been received or not, • Track message progression, especially know the exact location of each envelope containing data, • Know which applications can be reached and access the history of connections and disconnections of all the applications registered, • Know how long it takes to process data between each couple of systems, • Access the error messages emitted by the consumer applications so as to know when an envelope well received hasn’t been consumed and why (wrong format, inconsistent data…).
Saving all the logs in a central system enables production teams not to have to check what has been sent or received by each application all the time. Monitoring is made easier. What is more, it is possible to connect a specific tool like Prometheus to Xbus so as to receive alerts, making monitoring even easier.
Generally, a solution connecting applications also routes the messages. This contributes to urbanizing the system, the emitter applications being less coupled with the consumers.
In addition, using a dedicated solution to interconnect your applications enables you not to have to secure access to them
If you need to interconnect your applications, using a solution which is loosely coupled with these applications makes the information system more urbanized and more likely to evolve easily. It handles asynchronous data transmission and message routing, in a secured way, and makes monitoring simpler. An Open-Source interconnecting solution is particularly interesting because users can modify it so as to adapt it to their needs more closely. A cloud-native solution can be easily deployed on any platform anywhere in the world.