Yapay Zeka Çağında Alan Modelleri Neden Daha Önemli?

Yazılım mimarisi genellikle kazananı olmayan bir tartışmadır. Bir sistem inşa edersiniz. Alternatifini asla aynı koşullar altında inşa etmezsiniz. Bu durum, her kararı yanlışlanamaz kılar. Bir sistem çöktüğünde, insanlar alan modelini (domain) veya ekibi suçlar. Karşılaştırabilecekleri bir kontrol grubu olmadığı için nadiren mimariden şüphelenirler.

Tasarımlarımızı test etmenin bir yoluna ihtiyacımız var. Temel karmaşıklığı (essential complexity), tesadüfi karmaşıklıktan (accidental complexity) ayırmalıyız. Temel karmaşıklık asıl problemdir. Tesadüfi karmaşıklık ise araçlarımız ve süreçlerimizle yarattığımız karmaşadır.

Yapay zeka, implementasyonu neredeyse bedava hale getiriyor. Bu devasa bir değişimdir. Geçmişte, kod yazmanın getirdiği zorluklar geliştiricileri daha iyi yapılar kurmaya zorluyordu. Eğer kodunuz bir karmaşaysa, yönetilmesi zorlaşırdı. Bu acı, bir geri bildirim döngüsüydü.

Yapay zeka bu zorluğu ortadan kaldırıyor. Temiz kod kadar hızlı bir şekilde dağınık ve kötü yapılandırılmış kod da yazabiliyor. Kötü bir modelin acısı artık geliştiriciye build aşamasında çarpmıyor. Bunun yerine, acı production ortamına kayıyor. Bozuk veriler ve imkansız entegrasyon görevleriyle karşılaşıyorsunuz.

Zengin bir alan modeli (rich domain model), bunu önlemek için bir araçtır. Üç spesifik görevi yerine getirir:

  • Kavramlara şekil vermeye zorlayarak alanı öğrenmenize yardımcı olur.
  • Alanı tanımlar, böylece "ne inşa edileceği" artık bir tahmin olmaktan çıkar.
  • Alanı, derleyici (compiler) aracılığıyla güncel kalan kodla belgeler.

Çalışması için bir alan modeli üç kurala uymalıdır:

  • Temel karmaşıklığı bir bütün olarak tutun. Tek bir kavramı yüzlerce mikroservise dağıtmayın.
  • Geri bildirim sağlayın. Yanlış bir varsayım sessiz bir hata (bug) değil, bir derleme hatası (compile error) oluşturmalıdır.
  • Değişiklikleri ucuz tutun. Bir kavramı on farklı serviste aramak yerine tek bir yerde düzeltmelisiniz.

Eğer "şişkinliği" (bloat) çözmek için alanınızı çok erken mikroservislere bölerseniz, genellikle sadece karmaşayı yer değiştirmiş olursunuz. Tek bir "god object" yerine, takibi daha zor olan dağıtık bir karmaşa ile takas etmiş olursunuz. Göremediğiniz bir bağımlılık, production ortamında kırılacak olan bir bağımlılıktır.

Zengin bir alan modelinin amacı haklı çıkmak değildir. Amaç, hata yapmanın maliyeti hala düşükken, yanlış yapıldığını görünür kılmaktır.

Kaynak: https://dev.to/leonpennings/what-is-the-reason-for-using-a-rich-domain-model-in-the-age-of-ai-3gg

İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi