Yazılım Mimarileri #1 Monolotik Mimari

Monolotik Mimari

Bu yazımızı okumaya başladıysanız Yazılım Mimarileri hakkında bilgi almak üzeresiniz demektir. Hadi başlayalım 🙂

Yazılım Mimarisi Nedir? (Software Arhitecture)

Yazılım mimarisi, bir sistemin yazılımsal bileşenleri, görünür özellikleri ve bu ikisi arasında ki ilişkiler veya ilişkiler bütünüdür. Mimari yazılımın temel organizasyonu olarak tanımlanır. Bir yazılım kendi içerisinde birden çok bileşenden oluşmaktadır. Tüm bu bileşenlerin birbirleriyle sürekli ilişki içerisindedir. Bileşenden anlamamız gereken metot, sınıf, paket, modüller bütünüdür. Tüm bu bileşenlerin birbirleriyle olan tüm ilişkilerine yazılım mimarisi demekteyiz. Yazılım mimarisi sistemin güvenliği, esnekliği, performansı gibi birçok konuyu etkilemektedir. Örneğin MVC(Model View Controller) en çok bilinen mimarilerden birisidir. Mimari, kodlamaya başlamadan önce hazırlanması hatlarının belirlenmesi gereken bir kavramdır. Örneğin kullanılacak programlama dili, framework, veri tabanı, esneklik ihtiyacı, güvenlik bileşenleri gibi birçok konu üzerinde çalışma yapılarak bir mimari tasarlanır.

Neden Mimari İhtiyacımız Var?

Yazılım geliştirme süreci kapsamlı ve karmaşık bir süreçtir. Bu sürecin herhangi bir aşamasında tıkanma, aksaklık veya karmaşıklık en son isteyeceğimiz şeydir. Bu problemlerin yaşanma olasılığını minimize etmek için projemizi bir mimari ile şekillendirmemiz gerekir. Mimariler ile projemizin karmaşıklığını veya dağınıklığını yönetebilir ve mevcut durumu rahat koruyabilme imkânı sağlamaktayız. İyi kurgulanmış bir mimari olmadan geliştirilmeye başlanmış bir projede uyum, esneklik, karmaşıklık gibi bir dizi problem ile karşılaşmak olasıdır.

Mimarilerde Kullanılan Şablonlar Nelerdir?

  • Model-View-Controller en çok bilinen şablondur. Genel çalışma prensibi, tarayıcı üzerinden view sayfasıyla istek yapıldığında bu istek Controller’a iletilir. Controller isteği işlemek üzere model ve bağlantılı bileşenleri ile ihtiyaç duyulan sınıf ve metotları çalıştırır. Elde ettiği sonuçları View’e göndererek çıktıyı gösteren yapıya sahip bir şablondur.
  • Service-Oriented-Architecture temel olarak sistem üzerinde birçok sistemin uyumlu şekilde çalışmasını amaçlar. Entegre sistemler kurmak için kullanılan bir mimari yaklaşımdır.
  • Multitier Architecture (Çok Katmanlı Mimari) ise projede yapılan veri tabanı işlemleri, mantıksal işlemler ve sunum işlemlerini ayrı katmanlarla kurgulayıp bir bütün ortaya koyarak geliştirme yapmayı sağlar. Veri tabanı için Data katmanı, mantıksal işlemler için Business Logic katmanı, ve sunum için UI katmanı oluşturulur. İhtiyaçlar doğrultusunda ek katmanlar da oluşturulabilir.

Mimari Tasarımı

Yazılım mimarisi geliştirme süreci aşağıda ki maddeler gibi sürekli döngü içerisinde olan bir süreçtir. Mimari gereksinimler doğrultusunda tasarlanır ve dokümante edilir. Sonra ortaya çıkan mimari analiz edilir ve geliştirme başlar.

  • Mimari Gereksinimleri
  • Mimari Tasarımı ve Dokümantasyonu
  • Mimari Analizi
  • Mimarinin Geliştirilmesi

Bu adımlar proje geliştirme esnasında sürekli olarak kontrol edilir. Yeni gereksinimler oluşması ile süreç yeniden uygulanarak mimari güncellenir. Geliştirme esnasında mimari kaygılar ve mimari yaklaşımları dikkate alınarak hareket edilir.

Monolotik Mimari

Monolotik bir yazılım, birden çok modül içeren tek bir kod çekirdeğine sahiptir. Modüller teknik veya fonksiyonel özelliklerine göre ayrıştırılmıştır. Tüm yazılım build eden tek bir derleme sistemi vardır. Tüm yazılım tek bir çalıştırılabilir veya deploy edilebilir dosyaya sahiptir.

Monolotik Mimari Avantajları

  • Geliştirme, Test etme ve canlıya alma işlemleri kolaydır
  • Uçtan uca test etme mümkündür
  • Yatay ölçeklendirme kolay
  • Dağıtım için paketlenmiş yazılımı sunucuya aktarmak yeterlidir.

Monolotik Mimari Dezavantajları

  • Sürekli deploy zorunludur
  • Uygulama boyutu büyük ise değişiklik işlemleri hızlı ve doğru yapılamaz
  • Uygulama boyutu büyük ise cevap süreleri uzayabilir
  • Güvenilirlik düşüktür
  • Bütünüyle anlaşılamayacak kadar büyük ve karmaşıktır
  • Büyütme ve genişletebilme konularında sınırları maruz kalınır

Diğer yazılarımda görüşmek üzere iyi geliştirmeler dilerim 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir