Architecture Modernization –
About the Client
Our client is a leading HR consultancy in US providing Performance Management and Training solutions.
- Client has a set of complimentary SAAS applications. These applications are running independently and do not have data synchronization between them.
- Any organization subscribing to these applications must separately setup the master data (like User details) in each application, resulting in wastage of effort and money.
- Also, there are no APIs available for integration from the HRMS systems that the SAAS customers use.
- 1.The proposed solution was to implement a centralized API platform (Enterprise Service Bus platform) which would help in synchronizing data between the applications as well as in integrating the HRMS platforms of end customer organizations with the subscribed applications.
- 2.WSO2 was selected as the integration platform. WSO2 is a leading opensource platform that provides a complete platform for building, integrating, and exposing your digital services as managed APIs in the cloud. WSO2 helps to expose APIs easily and securely to both internal and external customers.
- 3.Application Awas selected as the manual entry point for data. The data then gets synchronized to all the other applications through the centralized API platform.
Data requirements of each application were analyzed.
Data points to be received by APIs were identified.
A common JSON structure for the API payload was designed.
The data points in the payload were mapped to the corresponding data points of each application.
An authentication subscription mechanism was implemented using WSO2 Identity Server.
A custom application was developed in Laravel to manage subscriptions to the different applications, which interacts with WSO2 Identity Server.
API endpoints were developed in WSO2 API Manager.
APIs were developed for each application that required to receive & send data.
Data distribution flow was developed in WSO2 API Manager to re-distribute the data received by API endpoints to the relevant subscribed applications.
For efficient queuing, prevention of data loss and to be able retry on failure, RabbitMQ was implemented as the queue service and PostgreSQL was used for persistence.
Notification alerts were implemented to notify admin in case of repeated failure.
When the API platform distributed data to the subscribed applications, if any of the application is not available to receive data, due to network issues, maintenance etc., at that point in time, data is lost.
To address this, a data queue mechanism and retry logic were implemented. Data would remain in the queue and retry would happen until a successful response is received from the application.
Administrator would be alerted if retry failed repeatedly.
- Seamless and real time synchronization of data between applications.
- Eliminate manual data entry reducing errors, effort and cost.
- Provide feature to end customers to integrate their applications and transfer data to subscribed applications.
- Easily extend the application landscape by plugging in new applications with minimal development effort.