- Yazılım geliştirmenin temel zorluklarının çoğu, kodun içinde değil, kod ile kodun, sistem ile sistemin buluştuğu sınırda (Boundary) ortaya çıkar görüşü
- Sınır = farklı ilgi alanlarının, sorumlulukların ve bağlamların buluştuğu nokta
- Fonksiyonları ayırma, modülerleştirme, mikroservisler gibi geliştirmenin neredeyse tüm eylemleri sınır oluşturma eylemidir
- İroni şu: karmaşıklığı yönetmek için sınırlar oluştururuz, ama sınırın kendisi yeni bir karmaşıklık kaynağı olur
Kodda ortaya çıkan sınırlar
- Çağıran-çağrılan sınırı:
null döndürme ile exception fırlatma arasındaki fark gibi sözleşme belirsizlikleri
- Arayüz sınırı: soyutlama sızıntısı yasası - gizlenmiş karmaşıklık er ya da geç sınırı delip yukarı çıkar
- Bağımlılık sınırı: harici API'ler ve kütüphaneler haber vermeden değişebilir
- Dönüşüm sınırı: nesne-ilişkisel empedans uyumsuzluğunda olduğu gibi, her sınır geçişinde bilgi çarpılması ya da kaybı
- Güven sınırı: doğrulanmış veri ile doğrulanmamış veri arasındaki sınır → imzasız webhook alma gibi güvenlik açıkları
- Tasarım-uygulama sınırı: gereksinim → tasarım → uygulama → operasyon aşamalarının her birinde bilgi kaybı birikir
Fiziksel sınırlar
- Sıra sınırı: asenkron noktalar arasında durum değişebilir; dağıtık sistemlerde bu daha da ciddidir
- Ölçek sınırı: eşik aşıldığında niceliksel değil niteliksel değişim yaşanır
- Ortam sınırı: "Benim bilgisayarımda çalışıyor" türü durumlar ortaya çıkar
- Altyapı sınırı: servisler ayrıldığında atomiklik garantisi verilemez
İnsanlar arasında ortaya çıkan sınırlar
- Organizasyon sınırı: Conway Yasası - organizasyon yapısı sistem yapısını belirler. Takımlar yeniden düzenlendiğinde kod ile organizasyon sınırları uyumsuz hale gelir
- İletişim sınırı: kulaktan kulağa oyunundaki gibi, gereksinimler her aktarıldığında niyet değişime uğrar; örtük bilgi ise hiç aktarılamaz
- Kullanıcı-geliştirici sınırı: geliştiricinin güvenlik için koyduğu sınır, kullanıcı için can sıkıcı bir engele dönüşebilir
Sınırlar nasıl yönetilir
- Gizli sınırları fark et: iki servisin aynı DB tablosunu paylaşması gibi, kodda görünmeyen bağlılıklara dikkat et
- Pattern'ler cevap değildir: pattern'ler yalnızca "belirli koşullarda etkili çözümler"dir; körü körüne uygulanmamalıdır
- Bir sınırın önünde sorulacak üç soru:
- Bu sınırın üzerinden ne geçiyor?
- Bu sınır bozulursa ne olur?
- Bu sınırı kim yönetiyor?
- Sınır çizmemenin kendisi de bir seçimdir: monolitik yapıyı korumak, aceleci ayrıştırmadan kaçınmak vb.
- Sınırlar evrilir: ayırıp sonra birleştirmek, birleştirip sonra yeniden ayırmak tekrarlanır → bilinçli ve düzenli yeniden gözden geçirme gerekir
Henüz yorum yok.