Функція пошуку може бути змодельована як окрема послуга з окремою відповідальністю від двох згаданих вами служб. Таким чином, підхід тут може полягати у створенні нової служби ("пошук") і зберіганні її копії даних обох служб у формі, яку легко індексувати та шукати, можливо, також денормалізованою, щоб швидко дати результати в потрібний формат.
Так, наприклад, ви можете мати застарілу базу даних SQL, використовуючи, наприклад, mySql, іншу мікросервіс, що використовує, наприклад, MongoDB, та нову службу пошуку, використовуючи еластичний пошук з даними як уже вставлених разом (денормалізованих) для більш зручного доступу. звичайно, деталі залежатимуть від типу пошуку, який потрібно здійснити.
Дані двох служб найкраще передаватимуть асинхронно до індексу пошуку через шину подій, наприклад, Kafka або Hermes, щоб збільшити пропускну здатність і зменшити зв’язок між службами. Зміна будь-якої з двох служб призведе до події, яка інформує пошукову службу, щоб також оновити її дані.
Звичайно, існує додаткова затримка між змінами в сервісах і в пошуковій службі, але оскільки мікросервіси зазвичай використовуються в системах, які розповсюджуються, деякі затримки та тимчасові невідповідності все одно неминучі. Наявність додаткової послуги та використання додаткового сховища для копії даних, які вже є у двох інших сервісах, також є типовою вартістю широко розповсюдженої та масштабованої системи з використанням мікросервісів.