ÖZET VE TEKNİK CEVAP
Her mühendislik ekibi projeye tertemiz mimari kurallarla başlar: 'Domain katmanı asla altyapı kodunu import edemez', 'Controller doğrudan SQL sorgusu yazamaz' ve 'Faturalama servisi API Gateway'i baypas edemez'. 2 yıl içinde 50'den fazla geliştirici acil özellikler yetiştirirken **Mimari Aşınma (Architectural Erosion)** başlar: Biri React bileşeninin içine doğrudan veritabanı ORM'i import eder, bir başkası etki alanı sınırlarını aşan dairesel bağımlılıklar ekler. İnsan gözüyle yapılan kod incelemeleri bu ufak sızıntıları yakalayamaz. Evrimsel Mimari (Evolutionary Architecture) bunu **Mimari Uygunluk Fonksiyonları (Architectural Fitness Functions)** ile çözer: ArchUnit veya `eslint-plugin-boundaries` ile CI/CD boru hattına yazılan otomatik testler, mimari katman kuralını bozan herhangi bir Pull Request'i anında derleme hatasıyla reddeder.
Mühendislik El Kitabı & Mekanizma
1. Temel Çalışma Mekanizması
Mimari uygunluk fonksiyonları derlenmiş Soyut Sözdizimi Ağacını (AST) ve bağımlılık grafiğini tarayarak çalışır: (1) Kural Tanımlama: Mimarlar katman kurallarını test kodu olarak yazar (Hexagonal, Onion kuralları). (2) Statik Grafik Analizi: Araç (`ts-arch`, `dependency-cruiser`) projedeki tüm import ifadelerini tarar. (3) CI Onay Kapısı: `npm test` anında kural bağımlılık grafiğinde yasadışı bir bağlantı tespit ederse tam dosya ve satır numarasını vererek Pull Request'in birleştirilmesini (merge) engeller.
2. Doğru Kullanım Senaryosu
Büyük monorepo'lar, modüler monolitler, mikroservis şablonları ve regülasyona tabi bankacılık/sağlık yazılımları.
3. Prodüksiyon Arıza Modları
İlk günden binlerce eski ihlali hata veren kurallar yazıp ekibin testleri tamamen kapatmasına yol açmak; testleri CI/CD'ye bağlamayıp yerel geliştirmede bypass edilmesine göz yummak.
4. Teşhis ve Telemetri Sinyalleri
Derleme sırasında dairesel bağımlılık (circular dependency) uyarıları; domain modellerinin veritabanı sürücülerini doğrudan import etmesi; tek bir özelliği değiştirmek için ilgisiz 15 modüle dokunmak zorunda kalınması.
5. Önleme ve Mimari Bariyerler
Mandal (Ratchet) Prensibini uygulayın: Mevcut eski mimari borcu dondurun ve sadece YENİ eklenen kural ihlallerinde CI'ı patlatın; `dependency-cruiser` aracını PR kapılarına entegre edin.
6. Mimari Ödünleşimler (Trade-offs)
Uygunluk fonksiyonları mimari çürümeyi ve sınır ihlallerini otomatik olarak engeller; ancak kuralları tanımlamak ve beyaz listeleri yönetmek için ön yatırım gerektirir.
Vaka İncelemesi (TinyCTO Örneği)
Bir SaaS şirketinin modüler monoliti mimari erozyona uğradı: Raporlama modülü Faturalama modülünün dahili veritabanı tablolarını doğrudan okumaya başladı ve bu durum Faturalama'nın Postgres'e geçişini kilitledi. Ekip `dependency-cruiser` ile katı bir uygunluk fonksiyonu yazdı: Raporlama modülü Faturalama'nın dahili kodlarını import edemez. Bir geliştirici acil bir rapor için dahili kodu import etmeye kalktığında CI testi patlattı. Geliştirici Faturalama'nın herkese açık olay kuyruğunu (event stream) kullanmak zorunda kaldı; servis ayrıklığı korundu ve veritabanı başarıyla taşındı.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaMimari Uygunluk Fonksiyonu (Architectural Fitness Function) nedir?
TypeScript ve Java'da mimari uygunluk fonksiyonları yazmak için hangi araçlar yaygın kullanılır?
Otomatik Mimari Yönetişim: Sürekli Mimari Uygunluk Fonksiyonları (Fitness Functions & ArchUnit) — Sıkça Sorulan Sorular
Yüzlerce kural ihlali barındıran eski (legacy) bir projeye mimari uygunluk fonksiyonları nasıl entegre edilir?
Mandal/Temel Çizgi (Baseline) kullanarak: Mevcut tüm ihlalleri bir istisna dosyasına kaydedin; CI sadece YENİ eklenen ihlallerde patlayacak şekilde yapılandırılır.
Uygunluk fonksiyonları API gecikmesi veya paket boyutu gibi fonksiyonel olmayan gereksinimleri test edebilir mi?
Evet. Performans bütçeleri (Lighthouse skoru, API gecikmesi), JavaScript paket boyutu sınırları ve güvenlik açığı eşikleri de uygunluk fonksiyonlarıyla denetlenir.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸Mimari Uygunluk Fonksiyonları CI/CD sürecinde katman ve etki alanı sınırlarının denetimini otomatikleştirir.
- ▸İnsan kod incelemeleri zamanla oluşan mimari aşınmayı ve dairesel bağımlılıkları engellemede yetersiz kalır.
- ▸ArchUnit ve Dependency-Cruiser gibi araçlar bağımlılık grafiğini tarayarak temizliği zorunlu kılar.
- ▸Eski projelere mevcut yapıyı bozmadan uygunluk fonksiyonu eklemek için temel çizgi (baseline) mandalları kullanın.
Yaygın Yanılgılar
- ✗Yanılgı: Mimari kurallar sadece dökümantasyon ve wiki sayfalarıyla korunabilir (Gerçek: Otomatik test edilmeyen kurallar ekip büyüdükçe aylar içinde çöpe döner).
- ✗Yanılgı: Uygunluk fonksiyonları geliştirme hızını yavaşlatır (Gerçek: Saniyeler içinde verilen otomatik geri bildirim, uzun mimari PR tartışmalarını ortadan kaldırır).
Karar Kılavuzu & Önceliklendirme
Temiz sınırları korumak ve teknik borç birikimini engellemek için CI süreçlerine otomatik mimari uygunluk fonksiyonları entegre edin.
Doğrulanmış Kaynaklar & Referanslar
- [BOOK]Building Evolutionary Architectures: Automated Governance & Fitness Functions— Neal Ford, Rebecca Parsons, Patrick Kua (O'Reilly Media)
