API Kompozisyonu kalıbı ön yüz veya dış bir hizmet için verilerin farklı mikro hizmetlerden toplanması gerektiğinde kullanılır. Bu, gereken hizmetlere ayrı istekler yaparak gerekli verileri toplayan ve nihai yanıtı oluşturan bir koordinatör katman (API Composer) aracılığıyla gerçekleştirilir.
Bu katman genellikle ayrı bir hizmet, Gateway veya BFF (Backend For Frontend) olarak uygulanır; veri toplama, dönüştürme ve hata işleme sağlar. Bu çözüm, gereksiz ağ isteklerini azaltır ve istemcileri iç API değişikliklerinden izole eder.
Örnek kod (Node.js + Express kullanarak):
const axios = require('axios'); app.get('/user-details/:id', async (req, res) => { const user = await axios.get(`http://usersvc/user/${req.params.id}`); const orders = await axios.get(`http://ordersvc/orders/user/${req.params.id}`); res.json({ user: user.data, orders: orders.data }); });
Ana özellikler:
API kompozisyonu her zaman mikro hizmetlerden veri birleştirmenin en iyi yolu mudur?
Hayır, çok sayıda bağlı varlık ve yavaş bağlantılara sahip olduğunuzda performans zarar görebilir. Belirli durumlarda CQRS veya Veri Toplayıcı hizmetlerini kullanmak daha iyidir.
Her mikro hizmete doğrudan ön yüzün erişmesi mümkün mü?
Küçük sistemlerde mümkündür, ancak sistem büyüdüğünde güvenlik, şemaların yönetimi, ölçeklenebilirlik ve ön yüzün toplama mantığıyla aşırı yüklenmesi gibi konular ortaya çıkar. Bu nedenle, merkezi bir toplama katmanı tercih edilir.
API kompozisyonu hizmetler arasında işlem bütünlüğü sağlar mı?
Hayır. Bu kalıp yalnızca istek için verileri toplar. İşlem bütünlüğü, saga veya olay mekanizmaları aracılığıyla sağlanmalıdır.