Domain Driven Design Nedir, Servis Sınırı Nasıl Çizilir?

Haberci

SEO UZMANI
Yönetici
Katılım
21 May 2023
Mesajlar
602
Tepki
17
Puan
18
859




Bir yazılım büyüdükçe en zor soru teknik olmaktan çıkıyor: bu sistem hangi parçalara bölünmeli? Yanlış çizilen sınırlar, birbirine kenetlenmiş servisler ve her değişiklikte iki ekibi masaya oturtan bir düzen üretiyor.

Bu yazı alan odaklı tasarımın bu soruya nasıl yaklaştığını, sınırlı bağlam ve ortak dil kavramlarının ne işe yaradığını ve alt alanların neden farklı yatırım gerektirdiğini iki bulut sağlayıcısının mimari belgelerine dayanarak anlatıyor.

Alan odaklı tasarım nedir?​


Microsoft'un mikroservis alan analizi belgesine göre alan odaklı tasarım, iyi yapılandırılmış servislerin tasarımını destekleyen bir çerçeve sunuyor ve iki evresi bulunuyor.

Stratejik evrede sistemin büyük ölçekli yapısı tanımlanıyor; belgenin ifadesiyle bu evre mimarinin iş yeteneklerine odaklı kalmasını sağlıyor. Taktik evrede ise alan modelini oluşturmaya yarayan tasarım kalıpları devreye giriyor: varlıklar, kümeler ve alan servisleri.

Belge çıkış noktasını da net koyuyor: mikroservisler veri erişimi ya da mesajlaşma gibi yatay katmanlar etrafında değil, iş yetenekleri etrafında tasarlanmalı.

Ortak dil neden bu kadar önemli?​


Belgeye göre ortak dil kavramı alan odaklı tasarımın merkezinde duruyor: geliştiricilerle alan uzmanlarının her sınırlı bağlam içinde birlikte oluşturduğu paylaşılan bir sözlük. Ekipler bu dili konuşmalarda, belgelerde ve kodda tutarlı biçimde kullanıyor.

Aynı terimlerin her yerde aynı anlama gelmesi yanlış anlaşılmaları azaltıyor ve iş niyetini doğru yansıtan modeller üretiyor. Belge bir uyarı da ekliyor: her sınırlı bağlamın kendi ortak dili olabiliyor, yani "hesap" gibi bir sözcük farklı bağlamlarda farklı anlam taşıyabiliyor.

Sınırlı bağlam ne demek?​


Sınırlı bağlam, belirli bir alan modelinin geçerli olduğu sınırı tanımlıyor. Microsoft'un belgesindeki örnek fikri somutlaştırıyor: bakım ve tahmine dayalı analiz yapan bir altsistem, cihazın bakım geçmişi ve yaşı gibi çok sayıda fiziksel özelliğini temsil etmek zorunda; oysa teslimat planlayan altsistem için bu ayrıntılar gereksiz, orada yalnız uygunluk ve tahmini süre önemli.

Belge sonucu şöyle bağlıyor: iki altsistem için tek bir model kurmak gereksiz karmaşıklık getiriyor ve modelin zamanla evrilmesini zorlaştırıyor; aynı gerçek dünya varlığını iki farklı bağlamda ayrı modellerle temsil etmek daha iyi.

AWS'nin monolit parçalama rehberi de aynı kavramı servis sınırlarına bağlıyor: sınırlı bağlam sınırları servis sınırlarına dönüşüyor, gevşek bağlılık ve yüksek uyum bu şekilde sağlanıyor.

Sınır çizerken' Alıntı:
Aynı sözcüğün iki ekipte farklı anlama geldiğini fark ettiğiniz an, orada bir sınır vardır. Sınırı çizmemek sözcüğü değil, modeli bulanıklaştırır.

Her alt alan aynı yatırımı hak etmiyor​


Belgeler alt alanları üç kategoriye ayırıyor ve bu ayrım nereye ne kadar emek harcanacağını belirliyor:

  • Çekirdek alt alan: Rekabet avantajı sağlayan, işi tanımlayan alan. Ayrıntılı modelleme ve ciddi ekip yatırımı gerektiriyor.
  • Destekleyici alt alan: İşin yürümesi için gerekli ama rakiplerden ayrıştırmayan alan. Özel geliştirme istiyor, ancak rekabet üstünlüğü kaynağı değil.
  • Genel alt alan: Sektörün zaten çözdüğü problemler. Hazır ya da standart çözümlerle karşılanabiliyor.

Bu sınıflandırma pratik bir soruyu yanıtlıyor: her şeyi kendimiz mi yazmalıyız? Belgeye göre hayır — genel alt alanlarda hazır çözüm kullanmak, emeği çekirdek alana ayırmayı sağlıyor.

Sınırlar sabit değil​


Microsoft'un belgesi süreci yinelemeli olarak tanımlıyor: alan odaklı tasarım devam eden bir çalışma ve servis sınırları sabit kalmıyor. Uygulama evrildikçe bir servisi daha küçük servislere ayırmaya karar verilebiliyor.

Bağlamlar arası ilişkiler de belgelenmeyi gerektiriyor. Servisler birbirine iyi tanımlanmış arayüzler üzerinden bağlandığında, aradaki sözleşmenin nasıl tasarlandığı önem kazanıyor; arayüz tarafını REST API'yi ele aldığımız yazıda işlemiştik. Servisler arası tetiklemenin nasıl kurulduğunu ise webhook'ları anlattığımız yazıda ele almıştık.

Sürecin bütününe bakmak isterseniz yazılım geliştirmeyi adım adım derlediğimiz yazıya göz atabilirsiniz.

Sık Sorulan Sorular​


Domain driven design nedir?
Microsoft'un belgesine göre iyi yapılandırılmış servislerin tasarımını destekleyen bir çerçevedir; stratejik evrede sistemin büyük ölçekli yapısı, taktik evrede varlık, küme ve alan servisi gibi kalıplar tanımlanır.

Sınırlı bağlam ne anlama geliyor?
Belirli bir alan modelinin geçerli olduğu sınırdır. Aynı gerçek dünya varlığı farklı bağlamlarda farklı modellerle temsil edilebilir.

Ortak dil ne işe yarar?
Geliştiricilerle alan uzmanlarının birlikte kurduğu paylaşılan sözlüktür; konuşmalarda, belgelerde ve kodda tutarlı kullanıldığında yanlış anlaşılmaları azaltır.

Her alt alan için aynı emek mi harcanmalı?
Hayır. Çekirdek alt alan rekabet avantajı sağladığı için ayrıntılı modelleme ister; genel alt alanlar hazır çözümlerle karşılanabilir.

Servis sınırları sonradan değişebilir mi?
Evet. Belge süreci yinelemeli olarak tanımlıyor ve uygulama evrildikçe bir servisin daha küçük servislere ayrılabileceğini belirtiyor.

Özetle​


Alan odaklı tasarım, sistemi teknolojiye göre değil işin kendisine göre bölmeyi öneriyor. Sınırlı bağlam nerede ayrı bir modelin geçerli olduğunu, ortak dil ise o bağlam içinde terimlerin ne anlama geldiğini belirliyor. Alt alan sınıflandırması da emeğin nereye harcanacağını söylüyor: çekirdeğe yatırım, genel işlere hazır çözüm.

Sizin projenizde aynı sözcüğün iki ekipte farklı anlama geldiği bir yer var mı?

Güncelleme: 26 Ağustos 2026.



Dijital Dünyanıza Yön Veren Pusula
 

Ekli dosyalar

  • banner_02.jpg
    banner_02.jpg
    6.6 KB · Görüntüleme: 1
Geri
Üst