Katmanlı mimari, ya da sıkça duyduğumuz adıyla N-Layer Architecture, modern yazılım projelerindeki karmaşıklığı yönetmek için kullanılan popüler bir yazılım tasarım modelidir.
Yazılım geliştirmek sadece kodun çalışmasıyla ilgili değildir. “Kod çalışsın da nasıl çalışırsa çalışsın” bakış açısı, uzun vadede ciddi sorunlara yol açar. Kodun düzenli, esnek ve bakımı kolay olması en az çalışması kadar önemlidir.
Bu noktada biz geliştiricilerin başvurabileceği çeşitli yazılım mimarileri vardır. N-Layer Architecture, Onion Architecture gibi yapılar, projeleri daha sürdürülebilir hale getirmek için kullanılır. Bu yazıda N-Layer Architecture’a odaklanacağız.
Ekstra Not: N-Layer vs N-Tier
Bu iki kavram sıkça birbirinin yerine kullanılsa da aslında aynı şeyi ifade etmezler.
- N-Layer: Kodun mantıksal olarak ayrılmasıdır. Kodun yapısına odaklanarak, hangi katmanda ne iş yapılacak bunun kurgulanmasıdır.
- N Tier: Fiziksel ayrımı ifade eder. Her katman farklı bir sunucuda çalışabilir. Örneğin, veritabanı başka bir sunucuda, API başka bir sunucuda olabilir.
Katmanlı Mimari Neden Önemlidir?
Bugünün yazılım projeleri artık çok daha karmaşık. Sayısız framework, kütüphane, konfigürasyon derken işler kolayca içinden çıkılmaz bir hal alabiliyor. Projeler büyüyor, ekipler genişliyor, istekler değişiyor, teknik altyapılar güncelleniyor. Tüm bu değişiklikler, iyi bir mimari olmadan büyük bir iş yüküne ve baş ağrısına dönüşebilir.
Mimari Olmadan Kod Yazmanın Getirdiği Sorunlar
-
Kod değişikliklere karşı dirençli hale gelir. Bir yeri değiştirince başka yerler bozulabilir.
-
Ekip içindeki geliştiriciler kodun içinde kaybolur. Hangi dosya ne işe yarıyor belli değildir.
-
Test etmek zorlaşır. Bu da daha çok hata anlamına gelir.
-
Product Owner’ın isteklerini gerçekleştirmek güçleşir.
-
Proje büyüdükçe motivasyon düşer. Bir noktada biri çıkıp “bu projeyi baştan yazalım” der. :(
Katmanlı Mimarinin Avantajları
-
Kod mantıksal katmanlara ayrılır. Her katmanın görevi bellidir.
-
Veriye nereden erişileceği, iş kurallarının nerede uygulanacağı, istemciyle nerede etkileşim kurulacağı net şekilde tanımlanır.
-
Kod daha anlaşılır, test edilebilir ve bakımı kolay hale gelir.
-
Böyle bir projede çalışmak geliştiriciye motivasyon ve tatmin duygusu verir.
N-Layer Architecture, genellikle küçük ve orta ölçekli, monolitik mimarilerde tercih edilir.
Katmanlar
N-Layer Architecture kullanılan projelerde 3 ila 5 katman arasında değişen yapılar görebiliriz. Bazı katmanlar birleştirilebilir, bazı projelerde ihtiyaçlara göre yeni katmanlar eklenebilir. Yaygın 4 katmanı şöyle özetleyelim:
1. Sunum Katmanı (Presentation Layer)
Kullanıcının uygulamayla doğrudan etkileşime girdiği katmandır. Web arayüzleri, mobil uygulamalar, masaüstü ekranlar ya da API endpoint’leri burada yer alır.
2. İş Katmanı (Business Layer)
İş mantığının yürütüldüğü alandır. Doğrulamalar, hesaplamalar, iş kuralları bu katmanda uygulanır. Sunum katmanından gelen talepler burada işlenir, veri katmanıyla iletişim buradan kurulur.
3. Veri Erişim Katmanı (Data Access Layer - DAL)
Veritabanı veya başka veri kaynaklarıyla doğrudan iletişim kurar. CRUD işlemleri burada gerçekleştirilir.
4. Veri Katmanı (Data Layer)
Verilerin saklandığı fiziksel ortamdır. MSSQL, PostgreSQL gibi veritabanları ya da dosya sistemleri bu katmanda yer alır. Bu katman genellikle bizim yazdığımız kodun bir parçası değildir, etkileşimde bulunduğumuz bir dış kaynaktır.
Örnek REST API Projesi
N-Layer Architecture kullanarak geliştirdiğim küçük ölçekli bir REST API projesinde mimariyi şu şekilde kurguladım:
BookStore.API → Presentation Layer
BookStore.Business → Business Layer
BookStore.Data → Data Access Layer
Katmanlara Genel Bakış
BookStore.API
- RESTful API endpoints
- JWT tabanlı kimlik doğrulama (authentication)
BookStore.Business
- İş mantığı
- DTO’lar (Data Transfer Objects)
- AutoMapper
- Doğrulamalar ve iş kuralları
BookStore.Data
- Entity Framework Core konfigürasyonları
- Entity modelleri
- Repository implementasyonları
- Veritabanı context’i