Our challenges on project
While improving existing distributed system, we were faced with the task of creating a robust and centralized way of synchronization of separate services.
The existing solution was implemented via direct API calls within separate web applications.
This approach had too many flaws, which we could not accept:
- Complexity. A very complex configuration of the servers and event listeners.
- Low failover. Almost impossible to trace event processing statuses and fail reasons.
-
Implementation complexity. When a new type of event was required, a development department
had to create a lot of program code in different parts of the system and then perform a complex debugging session.
To solve these issues we proposed to use well a known method called Message Oriented Middleware.
Considering the conditions of the project, it took nearly 6 months to make this solution up and running.
The solution included the following milestones:
- Development of a separate message bus service, which is responsible for storage, routing, logging, monitoring of message execution.
- Development of the protocol for a message exchange between the message bus and subscribers.
- Development of generic approach for message handling and its integration in already existing applications.
After the implementation of the planned solution, the following improvements were reached:
- Project architecture has become simpler and more transparent, which makes future developments much cheaper.
- The reliability of the system has grown, and now we have a possibility to handle message processing errors and downtimes of service subscribers.
- The development and configuration have become much easier, which allows an administrator to perform the system configuration without any help from the development team.
Technologies stack:
ASP.Net MVC,
Microsoft SQL Server,
IIS,
Multi-instance,
SOAP,
WCF,
API,
MicroServices