Hexagonal Architecture
Uygulama/domain mantığını port sözleşmeleri arkasında tutup veri tabanı, HTTP veya mesajlaşma gibi altyapıyı adapter'larla bağlayan bağımlılık yönü yaklaşımı.
Altıgen mimaride (Ports and Adapters) asıl fikir klasörlerin altıgen görünmesi değil, bağımlılık yönünün uygulamanın iş mantığına doğru çevrilmemesidir.
Port
Port, uygulamanın dış dünyadan beklediği veya dış dünyaya sunduğu sözleşmedir. Örneğin "müşteri kaydet" use-case'i veya "müşteri verisini getir" veri erişim sözleşmesi port olarak ifade edilebilir.
Adapter
HTTP controller, Oracle repository, dosya sistemi, mesaj kuyruğu veya test double bu sözleşmelerin adapter'larıdır. Altyapı değiştiğinde domain/use-case kodunun mümkün olduğunca etkilenmemesi amaçlanır.
Test Edilebilirlik
Business rule'ın test edilebilmesi için gerçek veri tabanı veya HTTP sunucusunun ayağa kalkması zorunlu olmamalıdır. Bu ayrım özellikle dış kaynakların yavaş veya hata verebilir olduğu sistemlerde test kapsamını ve failure simulation'ı kolaylaştırır.
Sınır
Her interface tanımlamak hexagonal architecture değildir. Sözleşmeler iş sınırını yansıtmıyorsa yalnız soyutlama sayısı artar.
İlgili kavramlar: Dependency Inversion, Ports and Adapters, domain model. Uygulama bağlamı için güvenilir servis ve veri erişim tasarımı üzerine teknik yazılarımla birlikte değerlendirilmelidir.