Synchronizer Architecture
We did not become "reinvent the wheel" when were starting Synchronizer software development project. Being known, all the best in the world has been invented by nature already, and we need find it only. Usually, such analogs become the most effective and convinient solutions. As a basis for System Synchronizer, we have taken the circulatory system - transport environment, which delivers the necessary materials (in our case - the information) to the cells of an alive organism for supporting of its activities.
From our point of view, the large variety of systems, which are typically used in the most of organizations, presents similar alive organism, all parts of which should communicate with each other to ensure the delivery of the necessary information, often to multiple destination endpoints.
Synchronizer architecture is implemented as simple as possible. When designing the solution, we have defined the next prerequisites:
- The system is modular, enabling you adapt it to almost any business environment for any customer. Modules may be combined with each other, you can easily add and remove them, create custom modules, and so on.
- Failures in a single module of Synchronizer will not crash the synchronization processes at all. In the worst case the violations will be temporarily concern to a separate system only, while the other systems will participate in synchronization as it was designed.
- Synchromessage (a basic unit of the synchronization data) is an XML file. It was designed for simplifying communicating the data amongst systems. Accordingly, it's easy apply the additional processing for synchronization messages if you need. For example, synchromessages can be encrypted and decrypted on the fly by any external tools, including third-party ones, and it will not break the data exchange amongst the modules of Synchronizer.
- Synchronization messages can be accumulated for postponed processing the communicating data. Sometimes, the systems can be unavailable some time, for example, in result routine maintenance. But later, if the system will become active again, Synchronizer processes the accumulated data in turn in the order as they were received. Such an approach gives a great advantage in providing high reliability of transferring the sync data and avoiding any information loss.
- Multiplatform is a distinctive feature for the most of Sinchronizer modules. They can be run on the most of operation systems and platforms. Synchronizer can be deployed to Windows, Linux, Unix, HP-UX, Solaris, MacOS, etc.
- Users can choose the way how to deploy Synchronizer's modules: stand-alone applications, or applications for some application server (Apache Tomcat or IBM WebSphere Application Server). In case of application servers, the installation procedure is extremely simple (for example, in case of Apache Tomcat you need only copy a deployable module into application folder, and it will be automatically installed and started there).
The simplest case is when Synchronizer enables synchronizing data between two external systems. For that, you can use Synchronizer modules, so called gateways, one for each system and a module called Mapper. Each gateway provides reliable communication to one of the systems, processing the incoming synchromessages, and preparing the resulting data for updating them in the linked system.
Mapper module is a transport router, and provides the correct data transformation in accordance to the synchronization rules, which are configured in so-called synchronization map. It must be mentioned that the synchronization map can be built without any additional programming. It's a simple XML file that fully describes all the synchronization rules. For example, you can define transformations for field names (accordingly, the field names in the incoming synchromessages will be transformed as you need). Furthermore, the synchronization rules can additionally describe the desirable value conversions. Please, take into account that you can transform both the values themself and the data types of the values as well.
Generally speaking, the main purpose of Synchronizer is to redirect the message flows to that system for which this synchromessage was created. In this way, multiple mappers can work simultaneously. Each mapper can perform its own function, related to providing the specific data processing. For example, information about incidents (let's presume that we have such type of data in one system) from first system should be transformed in accordance to one set of synchronization rules. For another example, we have also project tasks (another data type) which should be processed with other synchronization rules, and so on. You can use an unlimited number of Mappers for synchronizing the data in the appropriate way.
Suppose we need synchronize three systems at once. You can assemble diverse Synchronizer schemas into the resulting synchronizing system, one example of which is shown next.
In the image above, there's a new module, called Splitter, is used to split the message flows to multiple transportation threads. Thereafter, it becomes possible using multiple Mappers for data synchronization in relation to a particular target system.
© 2008-2023 Finecosoft.