Skip to main content
Yazılım Mimarisi

Yazılım Mimari Kalıpları: MVC'den Clean Architecture'a Kapsamlı Rehber

March 29, 2026 5 min read 3 views Raw
Also available in: en
Yazılım mimari kalıpları modern mimari yapı
Table of Contents

Yazılım Mimarisi Neden Önemlidir?

Yazılım mimarisi, bir projenin uzun vadeli başarısını belirleyen en kritik faktörlerden biridir. Doğru mimari kalıbı seçmek, kodun sürdürülebilirliğini, test edilebilirliğini ve ölçeklenebilirliğini doğrudan etkiler. Bu kapsamlı rehberde, modern yazılım geliştirmede en yaygın kullanılan mimari kalıpları detaylı şekilde inceleyeceğiz: MVC, MVVM, Clean Architecture, Hexagonal Architecture, Event Sourcing ve CQRS.

MVC (Model-View-Controller)

MVC, yazılım dünyasında en köklü ve yaygın kullanılan mimari kalıplardan biridir. 1979 yılında Trygve Reenskaug tarafından tanıtılan bu kalıp, uygulamayı üç temel katmana ayırır.

MVC Bileşenleri

  • Model: İş mantığını ve veri yapılarını temsil eder. Veritabanı işlemleri ve iş kuralları burada yer alır
  • View: Kullanıcı arayüzünü temsil eder. Verilerin görsel olarak sunumundan sorumludur
  • Controller: Model ile View arasındaki iletişimi yönetir. Kullanıcı girdilerini işler ve uygun Model ve View'ı koordine eder

MVC'nin Avantajları

  1. Sorumlulukların net ayrımı sayesinde kod okunabilirliği artar
  2. Her katman bağımsız olarak test edilebilir
  3. Paralel geliştirme imkanı sunar
  4. Geniş topluluk desteği ve dokümantasyon
  5. Birçok framework tarafından varsayılan olarak desteklenir

MVC'nin Dezavantajları

  • Controller'lar zamanla şişebilir (Massive Controller problemi)
  • Karmaşık uygulamalarda bileşenler arası bağımlılık artabilir
  • Reactive programlama ile uyumsuzluk yaşanabilir

MVVM (Model-View-ViewModel)

MVVM, Microsoft tarafından WPF ve Silverlight uygulamaları için geliştirilmiş bir mimari kalıptır. Özellikle veri bağlama (data binding) mekanizmasına sahip platformlarda son derece etkilidir. Günümüzde React, Angular, Vue.js, SwiftUI ve Jetpack Compose gibi modern frameworklerde yaygın olarak kullanılmaktadır.

MVVM Bileşenleri

  • Model: Veri ve iş mantığını yönetir, MVC'deki Model ile benzerdir
  • View: Kullanıcı arayüzünü temsil eder, mümkün olduğunca basit tutulur
  • ViewModel: View ile Model arasındaki köprü görevi görür. View'ın ihtiyaç duyduğu veri ve komutları sağlar

MVVM'in en güçlü yönü, iki yönlü veri bağlama (two-way data binding) sayesinde View ve ViewModel arasında otomatik senkronizasyon sağlamasıdır. Bu, boilerplate kodunu azaltır ve geliştirme hızını artırır.

Clean Architecture

Robert C. Martin (Uncle Bob) tarafından 2012 yılında ortaya konulan Clean Architecture, bağımlılık tersine çevirme ilkesi üzerine inşa edilmiş katmanlı bir mimari yaklaşımdır. Temel hedef, iş mantığını frameworklerden, veritabanlarından ve kullanıcı arayüzünden tamamen bağımsız kılmaktır.

Clean Architecture Katmanları

  1. Entities (Varlıklar): İş kurallarını ve iş nesnelerini içerir. En iç katmandır ve hiçbir dış katmana bağımlı değildir
  2. Use Cases (Kullanım Senaryoları): Uygulama özel iş kurallarını tanımlar. Entity'leri kullanarak iş akışlarını yönetir
  3. Interface Adapters (Arayüz Adaptörleri): Dış dünya ile iç katmanlar arasında veri dönüşümlerini gerçekleştirir
  4. Frameworks & Drivers: En dış katman. Veritabanı, web framework, UI araçları gibi dış bağımlılıkları içerir

Bağımlılık Kuralı

Clean Architecture'ın temel kuralı, bağımlılıkların her zaman içe doğru yönelmesidir. Dış katmanlar iç katmanlara bağımlı olabilir, ancak iç katmanlar asla dış katmanlara bağımlı olamaz. Bu kural, iş mantığının teknolojik değişikliklerden etkilenmemesini garanti eder.

KatmanSorumlulukBağımlılık Yönü
Entitiesİş kuralları ve nesneleriHiçbir katmana bağımlı değil
Use CasesUygulama iş mantığıYalnızca Entities'e bağımlı
Interface AdaptersVeri dönüşümleriUse Cases ve Entities'e bağımlı
FrameworksDış araçlar ve sürücülerTüm iç katmanlara bağımlı olabilir

Hexagonal Architecture (Altıgen Mimari)

Ports and Adapters olarak da bilinen Hexagonal Architecture, Alistair Cockburn tarafından geliştirilmiştir. Uygulamanın çekirdeğini dış dünyadan portlar (arayüzler) ve adaptörler aracılığıyla izole eder.

Temel Kavramlar

  • Portlar: Uygulamanın dış dünya ile iletişim kurduğu arayüzlerdir. Primary (giriş) ve secondary (çıkış) portlar olarak ikiye ayrılır
  • Adaptörler: Portları gerçekleyen somut implementasyonlardır. HTTP controller, veritabanı repository gibi bileşenler adaptör olarak çalışır
  • Çekirdek (Domain): İş mantığının bulunduğu, hiçbir dış bağımlılığı olmayan merkez katman

Hexagonal Architecture'ın Faydaları

Bu mimari, test edilebilirliği dramatik şekilde artırır. Dış bağımlılıklar adaptörler aracılığıyla soyutlandığından, iş mantığı izole bir şekilde test edilebilir. Ayrıca farklı giriş noktaları (REST API, GraphQL, gRPC, CLI) kolayca eklenebilir.

Event Sourcing

Event Sourcing, uygulamanın durumunu bir dizi olay (event) olarak saklama yaklaşımıdır. Geleneksel CRUD yaklaşımından farklı olarak, veritabanında mevcut durumu güncellemek yerine, her değişikliği bir olay olarak kaydeder.

Event Sourcing'in Avantajları

  • Tam denetim izi: Her değişiklik kaydedildiğinden eksiksiz bir geçmiş oluşur
  • Zaman yolculuğu: Uygulamanın herhangi bir andaki durumuna geri dönülebilir
  • Debugging kolaylığı: Hataların tam olarak ne zaman ve nasıl oluştuğu takip edilebilir
  • Ölçeklenebilirlik: Event'ler append-only olduğundan yazma performansı yüksektir

Event Sourcing Kullanım Senaryoları

  1. Finans ve bankacılık uygulamaları (her işlem izlenebilir olmalı)
  2. E-ticaret sipariş yönetimi
  3. Denetim gereksinimleri yüksek sistemler
  4. Gerçek zamanlı analitik platformları

CQRS (Command Query Responsibility Segregation)

CQRS, komut (yazma) ve sorgu (okuma) sorumluluklarını ayrı modellere bölen bir mimari kalıptır. Genellikle Event Sourcing ile birlikte kullanılır, ancak bağımsız olarak da uygulanabilir.

CQRS Bileşenleri

  • Command Model: Yazma işlemlerini yönetir. Veri doğrulama, iş kuralları ve durum değişiklikleri burada gerçekleşir
  • Query Model: Okuma işlemlerini yönetir. Okumaya optimize edilmiş veri yapıları kullanır
  • Event Bus: Command ve Query modelleri arasındaki senkronizasyonu sağlar

CQRS, okuma ve yazma yüklerinin çok farklı olduğu sistemlerde muazzam performans kazanımları sağlar. Okuma modelini bağımsız olarak ölçeklendirebilmek, yüksek trafikli uygulamalarda kritik bir avantajdır.

Mimari Kalıp Seçim Rehberi

KalıpEn Uygun SenaryoKarmaşıklık
MVCKüçük-orta ölçekli web uygulamalarıDüşük
MVVMData binding destekli UI uygulamalarıOrta
Clean ArchitectureUzun ömürlü kurumsal projelerYüksek
HexagonalÇoklu entegrasyon gerektiren sistemlerYüksek
Event SourcingDenetim izi gerektiren iş alanlarıÇok Yüksek
CQRSYüksek trafikli, okuma-ağırlıklı sistemlerYüksek

Sonuç

Her mimari kalıbın kendine özgü güçlü yönleri ve zorlukları bulunmaktadır. Doğru mimari seçimi, projenin büyüklüğüne, ekibin deneyimine, iş gereksinimlerine ve uzun vadeli hedeflere bağlıdır. Basit projeler için MVC veya MVVM yeterli olabilirken, karmaşık kurumsal uygulamalar Clean Architecture veya Hexagonal Architecture'dan büyük fayda sağlar. Event Sourcing ve CQRS ise yüksek denetim ve ölçeklenebilirlik gereksinimleri olan projeler için idealdir.

Share this post