Layered Architecture Nedir? Tanımı, Nasıl Çalışır ve Kullanım Alanları

Layered Architecture, yazılım uygulamalarını işlevsel katmanlar (presentation, business logic, data) şeklinde organize eden bir mimari desendir. Her katman belirli görevlerden sorumludur ve diğer katmanlarla iletişim kurar. Bakım kolaylığı, test edilebilirlik ve ölçeklenebilirlik sağladığı için kurumsal uygulamalarda yaygın olarak kullanılır.

5 dk okuma
Layered Architecture

Layered Architecture (Katmanlı Mimari), yazılım sistemlerini birbirinden bağımsız işlevsel katmanlar halinde organize eden bir tasarım desenidir. Her katman belirli görevlerden sorumlu olup, diğer katmanlarla kontrollü bir şekilde iletişim kurar. Bu yöntem, karmaşık uygulamaların yönetimini basitleştirir, kodu daha okunaklı hale getirir ve ekip işbirliğini kolaylaştırır.

Layered Architecture Nasıl Çalışır?

Layered Architecture genellikle dört temel katmandan oluşur:

  • Presentation Layer (Sunum Katmanı): Kullanıcının görebildiği ve etkileşim kurduğu arayüzdür. Web tarayıcısı, mobil uygulama arayüzü veya masaüstü uygulaması bu katmanda yer alır. Kullanıcı girdilerini alır ve sonuçları görsel olarak sunar.
  • Business Logic Layer (İş Mantığı Katmanı): Uygulamanın çekirdek işlevlerini gerçekleştiren katmandır. Kurallar, hesaplamalar, doğrulamalar ve işlem akışları burada tanımlanır. Sunum katmanından gelen verileri işler ve veri katmanına gönderir.
  • Persistence Layer / Data Access Layer (Veri Erişim Katmanı): Veri tabanı ve diğer depolama sistemleriyle iletişim kuran katmandır. Verileri kaydeder, okur, günceller ve siler. SQL sorguları ve veri tabanı bağlantıları bu katmanda yönetilir.
  • Database Layer (Veri Tabanı Katmanı): Tüm verilerin saklı tutulduğu katmandır. MySQL, PostgreSQL, MongoDB gibi veri tabanı yönetim sistemleri bu katmanda çalışır.

Her katman sadece kendisinden bir alt katmanla doğrudan iletişim kurar. Sunum katmanı veri katmanıyla doğrudan konuşamaz; ileti iş mantığı katmanından geçmelidir. Bu yapı "katmanlar arasında ayrılık" (separation of concerns) ilkesine dayanır.

Layered Architecture'un Avantajları

  • Bakım Kolaylığı: Her katman ayrı olduğu için, bir katmandaki değişiklik diğerlerini doğrudan etkilemez. Hata düzeltme ve geliştirme çalışmaları daha hızlı yapılır.
  • Ölçeklenebilirlik: Uygulama büyüdükçe her katman bağımsız olarak geliştirilip optimize edilebilir.
  • Test Edilebilirlik: Her katman izole bir şekilde test edilebilir. Birim testleri (unit tests) yazması kolay hale gelir.
  • Ekip İşbirliği: Farklı takımlar (frontend, backend, database) eş zamanlı olarak çalışabilir. İnterfazler önceden belirlendiğinde, ekipler bağımsız hareket edebilir.
  • Kod Yeniden Kullanılabilirliği: Bir katmanda yazılan kod başka projelerde de kullanılabilir.
  • Teknoloji Değişimi: Veri tabanını MySQL'den PostgreSQL'e değiştirirken, iş mantığı ve sunum katmanlarını değiştirmeniz gerekmeyebilir.

Layered Architecture'un Dezavantajları

  • Performans Overhead: Katmanlar arasında veri geçişi (network latency, serialization) ek zaman alabilir. Katmanlar ne kadar fazla olursa, performans o kadar etkilenir.
  • Karmaşıklık: Basit uygulamalar için bu mimari aşırı olabilir. Ek katmanlar gereksiz kod yazılmasına neden olabilir.
  • Monolitik Yapı Riski: Katmanlar genellikle tek bir sunucuda çalıştığı için, sistemin tamamı bir yer değiştirilmesi gerekebilir. Ölçekleme bütün katmanları etkileyebilir.
  • Veri Tabanı Bağımlılığı: Veri katmanındaki değişiklikler iş mantığı katmanını etkileyebilir ve bu kısıtlı bir tasarım olabilir.
  • Katmanlar Arası Sıkı Bağlantı: Eğer katmanlar kötü tasarlanmışsa, değişiklikler zincirleme olarak yayılabilir.

Layered Architecture Nerede Kullanılır?

Layered Architecture aşağıdaki durumlarda ideal bir seçimdir:

  • Kurumsal Web Uygulamaları: Banka, sigorta, e-ticaret, CRM sistemleri gibi karmaşık iş uygulamaları.
  • Orta Ölçekli Projeler: Yapısı belirlenmiş ve stabil gereksinimler olan projeler.
  • Takım Tabanlı Geliştirme: Farklı takımların bağımsız çalışması gereken projeler.
  • Uzun Vadeli Uygulamalar: Yıllar boyunca bakım ve geliştirme yapılacak sistemler.
  • Standart Veritabanı Uygulamaları: İlişkisel veri tabanları (SQL) kullanan uygulamalar.

Kullanılmaması uygun olan durumlar:

  • Çok basit uygulamalar (statik web siteleri, hızlı prototipler)
  • Gerçek zamanlı, yüksek performans gereken sistemler (oyunlar, sıvı finansal sistemler)
  • Mikro hizmetler mimarisine taşınan modern bulut uygulamaları
  • Olay tabanlı sistemler (event-driven architecture)

Layered Architecture Türleri

Layered Architecture'un, proje gereksinimlerine göre değişen çeşitleri vardır:

Tür Açıklama Katman Sayısı
3-Katmanlı (3-Tier) Presentation, Business Logic, Data katmanlarından oluşur. En yaygın versiyondur. 3
4-Katmanlı (4-Tier) Presentation, API/Service, Business Logic, Data katmanlarından oluşur. API katmanı eklenerek esneklik artar. 4
N-Katmanlı (N-Tier) İhtiyaca göre çok sayıda katman eklenebilir. Messaging, caching, security katmanları eklenebilir. 4+
Horizontal (Yatay) Katmanlar Tüm katmanlar bir sunucuda veya ayrı sunucularda çalışabilir. Değişken
Vertical (Dikey) Katmanlar Domain-driven design kullanarak iş alanlarına göre katmanlar oluşturulur. Değişken

Layered Architecture Örneği

Bir e-ticaret platformunun Layered Architecture ile yapısı:

  • Presentation Layer: Ürün sayfası, alışveriş sepeti, ödeme formunun görüntülendiği web tarayıcı veya mobil uygulama.
  • Business Logic Layer: Ürünlerin stoğunu kontrol eden, vergiler hesaplayan, indirim kodlarını doğrulayan ve ödeme işlemini yönlendiren yazılım modülleri.
  • Data Access Layer: Ürün bilgilerini, müşteri verilerini, siparişleri veri tabanından okuyan veya yazılan SQL sorguları ve veri nesneleri (Data Access Objects - DAO).
  • Database Layer: Ürünler, müşteriler, siparişler, ödemeler tabloları barındıran MySQL veya PostgreSQL veri tabanı.

Layered Architecture vs. Diğer Mimariler

Mimari Yapı Ölçeklenebilirlik Karmaşıklık İdeal Kullanım
Layered Katmansal, monolitik Orta Orta Kurumsal uygulamalar
Microservices Dağıtılmış, servis tabanlı Çok Yüksek Yüksek Büyük, dinamik sistemler
Event-Driven Olay tabanlı, asenkron Yüksek Yüksek Gerçek zamanlı sistemler
Serverless Bulut fonksiyonları Otomatik Düşük Minimal operasyon iş yükleri
"Layered Architecture, yazılım geliştirmenin en eski ve en kanıtlanmış mimarilerinden biridir. Basitliği ve etkinliği sayesinde hala milyonlarca uygulamada kullanılmaktadır. Bununla birlikte, modern bulut tabanlı uygulamalar için mikro hizmetler mimarisine geçiş yapan şirketler giderek artmaktadır."

Layered Architecture Tasarlarken Dikkat Edilecek Noktalar

  • Katmanlar Arasında Net Sınırlar: Her katmanın sorumlulukları açık bir şekilde tanımlanmalıdır. Bir katman başka katmanın işini yapmaya çalışmamalıdır.
  • Arayüz Tanımlama: Katmanlar arasındaki iletişim, önceden belirlenmiş arayüzler (interfaces) üzerinden olmalıdır.
  • Bağımlılıkları Yönetme: Alt katmanlar üst katmanlardan bağımsız olmalıd

L harfindeki diğer terimler