Search Portal Transformation for a Leading Credit Rating Agency

Technologies: Java, Spring Boot, Kafka, Kubernetes, MongoDB, Solr, GraphQL, HATEOAS, EC2, Amazon S3

Client

Our client is a global credit-rating agency that delivers financial analytics to businesses and investors. Their platform provides subscribers with financial insights on industries and organizations, empowering businesses to assess investment risks, identify financial opportunities, and make well-informed decisions.

Need

The client turned to Expert Soft to split their existing data access and search portal into two distinct systems. The challenge was to restructure the existing data architecture while maintaining seamless search functionality across both new platforms.

Solution

The solution was built with microservices architecture, so the client was seeking a team with strong microservices architecture and development services. Expert Soft’s back-end developers stepped in, taking charge of the microservices responsible for alerts and data search. Our duties involved dividing a unified data structure into separate sets tailored for each portal. Along the way, we boosted application resilience and tackled several technical challenges.

Challenge 1. Data separation

For main data storage, the client leverages MongoDB. However, the search process takes place in the Solr — a search engine designed for full-text search. Solr acts as another storage optimized for search, independent from MongoDB.

The system works in the following way:

case of microservices

Our team had to restructure the data in both repositories to align with the needs of the two new platforms. This involved creating one-run migration scripts and categorizing data. We also introduced new REST API parameters to ensure that requests from each portal were served by the appropriate data sets.

Challenge 2. Increasing system resilience

To keep both MongoDB and Solr consistent, two synchronization mechanisms were in place. The system synchronized some data immediately upon entry, while other batches were processed later during regularly scheduled jobs.

Initially, background data synchronization was implemented synchronously: portions of data were sent via REST requests, and periodically some of them failed due to network issues or service unavailability. There was no automatic recovery from such failures and it caused a data loss.

To eliminate the issue, we switched to asynchronous communication using Kafka message brokers. This allowed us to queue failed messages and automatically reprocess them later. This way we ensure data consistency and eliminate the risk of data loss, enhancing the overall system stability.

Challenge 3. Software update

To enable efficient search infrastructure, the client relied on Fusion — a search platform built on top of Solr search engine with extended functionality. However, the Fusion version they were using was outdated, so we needed to migrate them from Fusion 4 to Fusion 5.

The challenge lay in the different data schemas, as Fusion 5 was not compatible with the indexes from Fusion 4. Re-indexing millions of records manually was too risky, so we ran both versions of Fusion in parallel for several months, feeding data into both systems to ensure consistency.

Once we verified the data integrity, we fully transitioned search functionality to Fusion 5, ensuring a smooth migration.

Microservices Best Practices

One notable microservices best practice in this project that simplified communication among microservices was HATEOAS (Hypermedia as the Engine of Application State). HATEOAS is a REST architecture principle that extends the capabilities of the REST API by inserting in response information about possible future actions with the resource.

In this project, HATEOAS was particularly helpful for handling large datasets and paginated data. Microservices designed to provide paginated data to other services included links to the next, previous, first, and last pages of data, which was handy for data loading.

While we didn’t develop this approach, we leveraged it effectively when working with microservices outside our direct control, demonstrating our ability to handle advanced REST maturity levels.

Results

Seamless platform separation
The platform was successfully divided into two independent portals, each optimized for different datasets, allowing users to access the relevant information quickly.
Resilient system
The shift to asynchronous communication through Kafka eliminated data loss caused by system slowdowns, greatly enhancing platform reliability.
Improved search performance
The migration to Fusion 5 coupled with improvements in search functionality, improved the speed and accuracy of search queries across the platform.
01 / 02
Contact Us
All submitted information will be kept confidential
MARY MAKARENKOVA
MARY MAKARENKOVA
Head of Client Relations & Customer Success