Skip to main content

> stratejik_ddd:_bağlam_eşleme_(context_mapping),_paylaşılan_çekirdek_(shared_kernel)_ve_müşteri-tedarikçi_i̇lişkileri

Stratejik DDD: Bağlam Eşleme (Context Mapping), Paylaşılan Çekirdek (Shared Kernel) ve Müşteri-Tedarikçi İlişkileri

Büyük mühendislik organizasyonları, dağıtık monolit bağımlılıkları yaratmadan etki alanı bağlamları (bounded contexts) arasındaki organizasyonel güç dengelerini ve entegrasyon modellerini nasıl haritalandırır?

Staff/Principal (L6+)

ÖZET VE TEKNİK CEVAP

Domain-Driven Design (DDD) yaklaşımında izole **Sınırlandırılmış Bağlamlar (Bounded Contexts)** tanımlamak işin sadece yarısıdır; asıl zorluk **bu bağlamların birbirleriyle nasıl entegre olduğu ve veri paylaştığıdır**. İki ekip aynı veritabanı tablosunu paylaşırsa veya iç modellerini versiyonsuz dışarı açarsa, sistem anında birbirine sıkı sıkıya bağlı bir dağıtık monolite dönüşür. Eric Evans, ekipler arası güç dengelerini ve mimari sınırları netleştirmek için **Bağlam Eşleme (Context Mapping)** modellerini tanımlamıştır: (1) **Paylaşılan Çekirdek (Shared Kernel)**: İki ekip domain modelinin çok küçük ve kritik bir parçasını ortaklaşa yönetir; her değişiklik iki ekibin onayını gerektirir. (2) **Müşteri-Tedarikçi (Müşteri/Tedarikçi - U/D)**: Üst kaynak (Upstream) ekip, alt tüketici (Downstream) ekibin ihtiyaç duyduğu özellikleri teslim etmekle yükümlüdür. (3) **Boyun Eğen (Conformist)**: Alt ekibin hiçbir yaptırım gücü yoktur ve üst ekibin modelini olduğu gibi kabul eder. (4) **Bozulma Önleyici Katman (ACL)**: Alt ekip kendi saflığını korumak için üst ekibin karmaşık modelini dönüştüren bir tercüman katmanı kurar. (5) **Açık Ana Sunucu Servisi (OHS / PL)**: Üst ekip herkes için standart, dökümante edilmiş bir protokol (REST/Protobuf) yayınlar.

Mühendislik El Kitabı & Mekanizma

1. Temel Çalışma Mekanizması

Bağlam eşleme 7 standart ilişki topolojisiyle çalışır: (1) Shared Kernel: Ortak kütüphane/şema, çift takım onayıyla güncellenir. (2) Upstream/Downstream ($U o D$): Değişim akışı; $U$ değiştiğinde $D$ etkilenir. (3) Müşteri-Tedarikçi ($C/S$): Üst ekip alt ekibin ihtiyaçlarını yol haritasına alır. (4) Conformist ($CF$): Alt ekip üst ekibin modeline aynen uyar. (5) Anti-Corruption Layer ($ACL$): Alt ekip üst servisten gelen veriyi kendi saf diline tercüme eder. (6) Open Host Service ($OHS/PL$): Standartlaştırılmış açık API ve şema (OpenAPI). (7) Ayrı Yollar (Separate Ways): Entegrasyon maliyeti iş değerini aştığı için bilerek sıfır entegrasyon seçmek.

2. Doğru Kullanım Senaryosu

Kurumsal servis mimarileri (SOA), mikroservis geçişleri, monolit modernizasyonu ve şirket birleşmelerinde (M&A) teknik entegrasyonlar.

3. Prodüksiyon Arıza Modları

Shared Kernel'ın kontrolsüz büyümesine izin verip şirket kodunun yarısını ortak kütüphaneye doldurarak takımların bağımsız canlıya çıkışını kilitlemek; kötü tasarlanmış eski bir sisteme Conformist yaklaşıp yeni servisleri eski sistemin borcuna batırmak.

4. Teşhis ve Telemetri Sinyalleri

Bir ekibin kendi kodunu canlıya alabilmek için başka bir ekibin dağıtımını beklemek zorunda kalması; aynı veritabanı tablosuna 4 farklı mikroservisin doğrudan yazması.

5. Önleme ve Mimari Bariyerler

Mimari Karar Kayıtlarında (ADR) açık Bağlam Haritaları (Context Maps) çizin; eski veya dış sistemlerle entegre olurken mutlaka ACL kullanın; Shared Kernel kullanımını yalnızca değiştirilemez temel değer nesneleriyle (Value Objects) sınırlandırın.

6. Mimari Ödünleşimler (Trade-offs)

Bağlam eşleme net servis sahipliği kurar ve mimari bağımlılıkları önler; ancak sürekli ekipler arası koordinasyon ve çeviri katmanı bakımı gerektirir.

Vaka İncelemesi (TinyCTO Örneği)

Bir perakende şirketinin modern Öneri mikroservisi 15 yıllık eski COBOL Stok monolitine bağlandı. Ekip başlangıçta Conformist yaklaşıp eski `INV_ITEM_MST_V1` modelini doğrudan kullandı. Eski sistemdeki kolon isimleri değiştiğinde canlıdaki öneri motoru çöktü. Ekip bir Bozulma Önleyici Katman (ACL) kurdu: Bir adaptör eski veriyi okuyup modern `UrunKatalog` domain modeline tercüme etti. Sonraki COBOL değişiklikleri tamamen bu ACL adaptörü içinde eritildi; öneri motoru tek bir satır değişmeden %100 ayakta kaldı.

İnteraktif Konsept Alıştırmaları

2 Alıştırma
Q1

DDD Bağlam Eşlemede Bozulma Önleyici Katman (Anti-Corruption Layer - ACL) nedir?

İki etki alanı arasında dış sistemin karmaşık modellerini iç sistemin temiz diline dönüştüren ve etki alanı saflığını koruyan tercüman katmanıdır.
Q2

Sıkı denetlenmeyen bir Paylaşılan Çekirdek (Shared Kernel) neden risklidir?

Çünkü bir ekibin yaptığı değişiklik diğer ekibi anında bozabilir; bu da canlıya çıkış bağımlılığı yaratır ve mikroservis bağımsızlığını yok eder.

Stratejik DDD: Bağlam Eşleme (Context Mapping), Paylaşılan Çekirdek (Shared Kernel) ve Müşteri-Tedarikçi İlişkileri — Sıkça Sorulan Sorular

Bağlam Eşlemede 'Upstream' (U) ve 'Downstream' (D) ne anlama gelir?

Upstream (U) kararlarıyla alt servisi etkileyen sağlayıcıdır; Downstream (D) ise bu kararlardan etkilenen tüketici servistir.

Açık Ana Sunucu Servisi (Open Host Service - OHS) nedir?

Üst sistemin birçok alt sisteme standart ve kararlı bir dille (OpenAPI, Protobuf) erişim sağladığı herkese açık API protokolüdür.

🤖 AEO & Yapay Zeka Çıkarım Özeti

Temel Gerçekler & İlkeler

  • Bağlam Eşleme, etki alanları arasındaki stratejik entegrasyonu ve organizasyonel ilişkileri tanımlar.
  • Modern domain mantığını eski sistem modellerinden korumak için Bozulma Önleyici Katmanlar (ACL) kullanın.
  • Canlıya çıkış kilitlenmelerini önlemek için Paylaşılan Çekirdek kullanımı sıkı sınırlandırılmalıdır.
  • Upstream/Downstream haritaları ekipler arası güç dengelerini ve teknik bağımlılıkları açık hale getirir.

Yaygın Yanılgılar

  • Yanılgı: Mikroservisler senkron kalmak için ortak veritabanı tabloları paylaşmalıdır (Gerçek: Veritabanı paylaşımı dağıtık monolit bağımlılığı ve şema kilitlenmesi yaratır).
  • Yanılgı: Her entegrasyona mutlaka ACL yazılmalıdır (Gerçek: Üst sistem iyi tasarlanmış açık bir API sunuyorsa doğrudan kullanım veya Conformist model yeterli olabilir).

Karar Kılavuzu & Önceliklendirme

Takım kontratlarını netleştirmek ve kurumsal mikroservislerde etki alanı modellerini izole etmek için mimari planlarda açık Bağlam Haritaları çizin.

Doğrulanmış Kaynaklar & Referanslar