With the emergence of the microservice architecture pattern, several organizations build technology solutions involving data distributed across several microservices. Further, the number of such microservices and data stores within the organization continues to grow with the growing number of products, features, and capabilities. Much of this data distributed among isolated data stores is surfaced to the end-users simply as one or more products and capabilities offered by the organization.
Such an end-user would want to quickly find desired data from across any of these products and capabilities using a centralized search bar or user interface.
Given the isolation between such microservices and data stores, building such a unified text search solution poses fundamental problems:
1. Each of the microservices needs to build an index exposing text search capabilities over its data entities, leading to duplication of effort and resources.
2. A single search from an end-user needs to translate into a search over such multiple isolated indices.
3. The isolated indices might follow different text search technologies and algorithms, thus losing the consistent experience in search results.
4. It’s challenging to guarantee an appropriate ranking of the results, merged from such isolated indices.
Adobe Experience Cloud, comprising a number of diverse products and capabilities, like Adobe Experience Platform, Adobe Analytics, Adobe Target, and others, faced a similar problem. Business Entities from these products, like Catalogs, Segments, Journeys, Activities, are managed in isolated data stores and services, and the same reflected in Search Capabilities exposed to the users.