ÖZET VE TEKNİK CEVAP
Saf iş alanı varlıklarını merkeze koyup, tüm girdi ve çıktılar için arayüz sözleşmeleri ('Portlar') tanımlayarak ve altyapı detaylarını (HTTP denetleyicileri, SQL depoları) değiştirilebilir dış 'Adaptörler' olarak uygulayarak.
Mühendislik El Kitabı & Mekanizma
1. Temel Çalışma Mekanizması
Merkez iş alanı (Core Domain), hiçbir üçüncü taraf kütüphane bağımlılığı olmayan (ORM yok, HTTP anotasyonu yok, bulut SDK'sı yok) saf iş kurallarını ve kullanım senaryolarını barındırır. Dış dünya ile iletişim Portlar üzerinden yürütülür: Girdi/Süren Portlar uygulama kullanım senaryolarını (örn. PlaceOrderUseCase), Çıktı/Sürülen Portlar ise gerekli altyapı ihtiyaçlarını (örn. OrderRepositoryPort, PaymentGatewayPort) arayüz olarak tanımlar. Adaptörler bu portları dış çeperde hayata geçirir (örn. PostgresOrderRepository, StripePaymentAdapter). Bağımlılıkların Tersine Çevrilmesi ilkesi gereği tüm bağımlılıklar daima içe, iş alanına doğru akar.
2. Doğru Kullanım Senaryosu
Uzun ömürlü kurumsal sistemler, karmaşık iş kuralları barındıran uygulamalar ve iş mantığını ağır veritabanı veya ağ altyapılarına ihtiyaç duymadan saf birim testleriyle doğrulamak isteyen projeler.
3. Prodüksiyon Arıza Modları
1) Sızdıran İş Alanı Soyutlaması: Veritabanı ORM anotasyonlarının veya HTTP nesnelerinin çekirdek iş modellerine sızması; 2) Basit CRUD İçin Aşırı Mühendislik: Düz veri okuma işlemlerine gereksiz 4 katman port ve adaptör yazmak; 3) Sahte Nesne (Mock) Tuzağı: Gerçek SQL kısıtlarını test etmeden yalnızca mock adaptörleri test ederek kritik entegrasyon hatalarını kaçırmak.
4. Teşhis ve Telemetri Sinyalleri
İş alanı paketinin harici web/veritabanı kütüphanelerini import etmesi, Docker DB konteyneri olmadan birim testlerinin koşulamaması veya iş mantığının HTTP denetleyici fonksiyonlarına dağılması.
5. Önleme ve Mimari Bariyerler
Otomatik mimari testleriyle çekirdek pakete harici bağımlılık girişini yasaklayın, adaptörlerde DTO-Domain dönüştürücüleri kullanın ve ultra hızlı birim testleri için bellek içi sahte (fake) depolar yazın.
6. Mimari Ödünleşimler (Trade-offs)
Kusursuz test edilebilirlik, çatı bağımsızlığı ve temiz iş mantığı sağlar; buna karşılık katmanlar arası veri dönüştürme (mapping) kod yükü ve başlangıç mimari karmaşıklığı getirir.
Vaka İncelemesi (TinyCTO Örneği)
TinyCTO Refactoring Örneği: MySQL 5.7 ActiveRecord'a sıkı sıkıya bağlı bir fintek motoru, 200 controller metodunu bozmadan dağıtık CockroachDB'ye geçemiyordu. Portlar ve Adaptörler kalıbı uygulanarak faturalama mantığı izole edildi; veritabanı adaptörü sorunsuzca değiştirildi ve tüm ödeme kuralları 400 ms'de koşan saf bellek testleriyle doğrulandı.
İnteraktif Konsept Alıştırmaları
3 Alıştırma'Süren Port' (Driving Port) ile 'Sürülen Port' (Driven Port) arasındaki fark nedir?
İş alanı varlıkları neden asla @Entity veya @Column gibi ORM dekoratörleri içermemelidir?
Altıgen Mimari otomatik test hızını nasıl devrimsel şekilde artırır?
Altıgen & Soğan Mimarisi (Portlar ve Adaptörler) — Sıkça Sorulan Sorular
Temiz Mimari (Clean Architecture) ile Altıgen Mimari aynı şey midir?
Temel felsefeleri tamamen aynıdır (DIP ve iş alanı izolasyonu). Clean Architecture iç katmanları daha ayrıntılı halkalara bölerken (Entities, Use Cases, Controllers), Hexagonal mimari port ve adaptörler aracılığıyla iç ve dış ayrımına odaklanır.
Altıgen Mimari ne zaman gereksizdir?
İş mantığının neredeyse bulunmadığı ve uygulamanın yalnızca veritabanına veri aktardığı basit CRUD servisleri, raporlama araçları veya yardımcı mikroservisler için gereksizdir.
Portlar ve Adaptörler yapısında bağımlılık enjeksiyonu (DI) nerede bağlanmalıdır?
İş alanı çekirdeğinin tamamen dışındaki başlatma noktasında (Composition Root), adaptörlerin somutlaştırılıp kullanım senaryolarına enjekte edildiği yerde.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸Alistair Cockburn, iş mantığının UI ve veritabanı kodlarına kördüğüm şeklinde bağlanmasını önlemek için 2005 yılında Altıgen Mimariyi geliştirmiştir.
- ▸Altıgen şekli semboliktir; uygulamanın dış dünyaya bağlanan birden çok farklı porta sahip olduğunu görselleştirmek için seçilmiştir.
Yaygın Yanılgılar
- ✗DTO'ların (Veri Transfer Nesneleri) iş alanı varlıklarına doğrudan geçirilebileceğini sanmak; iş modelleri yalnızca iş alanı değer nesnelerini (Value Objects) kabul etmelidir.
Karar Kılavuzu & Önceliklendirme
İş kurallarınız karmaşık ve sistem ömrü uzun olduğunda Altıgen Mimariyi tercih edin; basit veritabanı CRUD API'lerinde bu kalıptan kaçının.
Doğrulanmış Kaynaklar & Referanslar
- [OFFICIAL-DOC]Hexagonal Architecture (Ports and Adapters)— Alistair Cockburn
- [BOOK]Clean Architecture: A Craftsman's Guide to Software Structure and Design— Prentice Hall (2017)
