Mikroservis mimarisinde dağınık veri kaynaklarını tek bir uç noktadan birleştirip istemciye hızlı ve tutarlı bir yanıt sunmanın pratik yolu.
Mikroservis yaklaşımı; ekiplerin bağımsız geliştirme/deploy, ölçeklenebilirlik ve domain ayrışması gibi önemli kazanımlar sağlar. Ancak bu model, basit bir ekranı bile beslemek için çoğu zaman birden fazla servise istek atmayı gerektirir. Bu da tarayıcı tarafında fazladan gecikme, gereksiz karmaşıklık ve kullanıcı deneyiminde tutarsızlık demektir.
İşte tam bu noktada kompozit API (composite/aggregation) yaklaşımı devreye girer: Birden fazla servis çağrısını arka planda birleştirip istemciye tek bir cevap döner.
Kompozit API, farklı mikroservislerden gelen yanıtları tek bir kompozit uç noktada birleştirerek istemciye bütünleşik bir veri modeli sunar. İstemcinin ağ üstünden 3–5 istek atması (round-trip) yerine tek bir istekte bulunmasını sağlar. Bu uç nokta, bir gateway üzerinde, ayrı bir aggregation service içinde veya ilgili bounded context’in “composite” controller’ında yer alabilir.
Bir yönetim panelinde “Kullanıcı Ekle” ekranını düşünün. Ekranda rol seçimi (checkbox) ve departman seçimi (dropdown) aynı formda yer alıyor. Tipik mikroservis düzeninde bu veriler iki farklı servisten gelir:
RoleService
→ Tüm aktif rollerDepartmentService
→ Tüm aktif departmanlarUI’nin iki ayrı istek atması yerine, tek bir kompozit uç nokta tanımlarız:
GET /api/v1/composite/rolesanddepartments
Bu uç nokta arka planda rol ve departman servislerini çağırır, veriyi filtreler/normalize eder ve tek DTO ile cevap döner:
{
"roles": [
{ "id": "7f2e...", "name": "Admin" },
{ "id": "2b9a...", "name": "Editor" },
{ "id": "6c31...", "name": "Viewer" }
],
"departments": [
{ "id": "a110...", "name": "Satış" },
{ "id": "b221...", "name": "İnsan Kaynakları" },
{ "id": "c332...", "name": "Operasyon" }
]
}
Frontend tarafında bu tek yanıtla hem rol checkbox’ları hem de departman seçimi aynı anda doldurulur. Form açılış süresi kısalır, gereksiz istek yönetimi kodu ortadan kalkar.
Seçim; ekip yapısı, trafik hacmi, devops olgunluğu ve versiyonlama stratejisine göre değişir.
UserAddDataDto
gibi). Aşırı ve gereksiz alanları döndürmeyin./v1
, /v2
gibi sürümleri olsun; UI değiştikçe geriye dönük uyumu koruyun.Kompozit katman, L7’de kritik bir durak olduğu için ölçülebilir olmalıdır:
Kompozit API’ler; UI’nin ihtiyaç duyduğu verileri tek istekte birleştirerek hem kullanıcı deneyimini iyileştirir hem de istemci kodunu sadeleştirir. “Kullanıcı ekleme” örneğinde roller ve departmanları tek uç noktada birleştirmek; ilk yüklenme süresini kısaltır, hata yönetimini merkezileştirir ve bakım maliyetini düşürür.
Prensip basit: Bir ekran = bir kompozit sözleşme. Doğru konumlandırma, sağlam sözleşme tasarımı ve ölçülebilirlik ile kompozit katman, mikroservis mimarinizin görünmez hızlandırıcısı olur.