Bir arama özelliği, bahsettiğiniz iki hizmetten ayrı sorumluluğa sahip ayrı bir hizmet olarak modellenebilir. Bu nedenle, buradaki yaklaşım yeni bir hizmet ('arama') oluşturmak ve her iki hizmetten verilerin bir kopyasını dizine ve aramaya kolay, muhtemelen de hızlı bir şekilde sonuç vermek için normalleştirilmemiş bir biçimde saklamasını sağlamak olabilir. istediğiniz biçime.
Örneğin, örneğin mySql kullanan eski SQL veritabanına, örneğin MongoDB kullanan diğer mikro hizmete ve daha rahat erişim için zaten birbirine yapıştırılmış (normalleştirilmiş) verilerle elasticsearch kullanan yeni arama hizmetine sahip olabilirsiniz. elbette ayrıntılar yapmanız gereken arama türüne bağlı olacaktır.
İki hizmetten elde edilen veriler en iyi şekilde, verimi artırmak ve hizmetler arasındaki bağlantıyı azaltmak için Kafka veya Hermes gibi bir olay veri yolu üzerinden arama dizinine eşzamansız olarak aktarılır. İki hizmetin herhangi birindeki bir değişiklik, arama hizmetini verilerini güncellemesi için bilgilendiren bir olay gönderir.
Tabii ki hizmetlerdeki ve arama servisindeki değişiklikler arasında ek bir gecikmenin maliyeti vardır, ancak mikro hizmetler genellikle dağıtılan sistemlerde kullanıldığından, bazı gecikmeler ve geçici tutarsızlıklar zaten kaçınılmazdır. Ek bir hizmete sahip olmak ve zaten diğer iki hizmette olan verilerin bir kopyası için fazladan depolama alanı kullanmak, mikro hizmetler kullanarak oldukça dağıtılmış ve ölçeklenebilir bir sisteme sahip olmanın tipik bir maliyetidir.