Katman sınırını CI'da denetlemek
Mimari kararlar dokümanda kalırsa altı ay sonra bozulur. Sınırı derlemeye bağlamak, dokümanı koda çeviriyor.
· 4 dk
"İş kuralları HTTP'ye bağlanmayacak" cümlesi bir toplantıda herkesin onayladığı bir cümle. Üç ay sonra bir endpoint'in içinde `if (invoice.status === ...)` görüyorsunuz.
Sorun niyet değil, geri bildirim: kuralı çiğnediğinizde hiçbir şey olmuyor. Kod gözden geçirmede yakalanırsa yakalanıyor.
Kuralı paket sınırına çevirmek
Depoyu dört uygulama (api, web, saha, admin) ve beş pakete ayırdım. `core` paketi yalnızca iş kurallarını taşıyor; HTTP, ORM ve framework importu yasak. `db` paketi veri erişimini, `shared` tipleri, `ui` bileşenleri, `config` yapılandırmayı tutuyor.
Beş kural, derlemede
- core, db'ye, HTTP'ye ve framework'e bağımlı olamaz.
- api, core'u çağırır; iş kuralını tekrar yazamaz.
- ui, api ve db'ye bağımlı olamaz.
- shared, hiçbir pakete bağımlı olamaz.
- Uygulamalar birbirinin içine import edemez; sadece paketler üzerinden konuşur.
Bu beş kural dependency-cruiser yapılandırmasında duruyor ve her derlemede çalışıyor. İhlal, kırmızı bir derleme demek. Kural artık bir görüş değil, yapı.
Neyi çözmedi
Katman sınırı, `core` içindeki kötü bir fonksiyonu düzeltmiyor. Paketler arası bağımlılığı engelliyor, bir paketin içindeki karmaşayı değil. Onun için test ve gözden geçirme hâlâ gerekli.
Bir de bedeli var: ortak bir yardımcı fonksiyon gerektiğinde onu doğru pakete koymak düşünmeyi gerektiriyor. Bazen "bu nereye ait" sorusu beş dakika sürüyor. Karşılığında altı ay sonra "bunu neden buradan çağırmışız" sorusu sorulmuyor.
Bakım Onarım Yönetimi
Arıza, SLA, iş emri, saha, kapanış. Çok şirketli bakım süreci tek platformda.