Bu yazımızda en çok kullanılan yazılım mimarileri ve yazılım dünyasında çok tercih edilen beş mimariden bahsederek kısaca temel özellikleri hakkında bilgiler paylaşacağız. Öncelikle Yazılım kodlarınızın her bölümünü en iyi mimari ile optimize etmek için tek bir sistemde birden fazla kalıbı kullanabileceğinizi hatırlatmak isteriz.
En çok kullanılan yazılım mimarileri
Layered (n-tier) architecture – Katmanlı (n-katmanlı) mimari
Bu yaklaşım muhtemelen en yaygın olanıdır. Java EE, Drupal ve Express gibi en büyük ve en iyi yazılım çerçevelerinin çoğu, bu yapı göz önüne alındığında inşa edildiğinden, onlarla oluşturulan pek çok uygulama doğal olarak katmanlı bir mimaride ortaya çıkmaktadır.
Popüler web çerçevelerinin çoğunun sunduğu standart yazılım geliştirme yaklaşımı olan Model-View-Controller (MVC) yapısı açıkça katmanlı bir mimaridir.
İlk yazılan programlar, tek katmanlı “Monolithic” olarak kodlanıyordu. Tek katmanlı uygulamalarda iş katmanı, sunum katmanı ve veritabanı katmanları tek bir bilgisayarda bulunuyorlardı. Buna en iyi örnek Adabas veritabanı sistemi verilebilir. Adabas sistemleri bir veritabanı ve bu veritabanına direkt sorgulamalar yapabilecek formlardan oluşmaktadır.
Bu yapıda bozulan kod bloğunun hatasının giderilmesi oldukça zordur. Çünkü o bölüm hata verdiğinde bütün sistemin çalışması durmaktadır.
Katmanlı mimaride ise uygulamalar ayrı katmanlar halinde yazıldığından, yönetilebilmesi ve değiştirilmesi oldukça kolay ve hızlıdır. Bu aslında bir çok programcının zaten bildiği fonksiyon yapısından farklı değildir ya da başka bir deyişle modüler programlama yapısı da denilebilir. Bu yapıda eğer programın çok uzun kodları olacaksa alt parçacıklara (fonksiyonlara) bölünür. Böylece hangi fonksiyonun ne iş yaptığı belli olur ve kodlarda bir hata varsa ilgili fonksiyon değiştirilir, yazılımın tüm kodlarını değiştirmek gerekmez. Böylece kodların yönetimi kolaylaşır. MVC ile popüleritesini arttıran bir mimari olan katmanlı mimari yine en çok kullanılan yazılım mimarileri dizisinin başında gelmektedir.
Event-driven architecture – Olay güdümlü mimari
Olay odaklı mimari (EDA), bir sistemin durumundaki önemli değişikliklerin (olaylar olarak bilinir) üretimini, algılanmasını ve bu sisteme tepki göstermesini ve buna tepki verilmesini teşvik eden bir yazılım mimarisidir. Bu, birbirine kısmen bağlı yazılım bileşenleri ve hizmetleri arasında olayları ileten uygulamalar ve sistemlerin tasarımı ve uygulanması yoluyla gerçekleştirilir.
Bu mimariyi kullanan yazılımları programlama tekniğinde, olayları dinleyen fonksiyonlar yazılır. Beklenen olay numarası algılandığında, o olaya ilişkin alt işlev çağrılır. Beklenen olay karşısında bir fonksiyonun icra edilmesine olay yakalama (event capture) ya da sadece yakalama (capture) adı verilir. Beklenmeyen bir olay kodu geldiğine ise hiçbir işlem yapılmaz.
Microkernel architecture – Mikrokernel mimarisi
Mikrokernel mimarisi modeli (bazen eklenti mimari deseni olarak anılacaktır), ürün tabanlı uygulamaların uygulanması için doğal bir modeldir. Ürün tabanlı bir uygulama, paketlenmiş ve tipik bir üçüncü parti ürün olarak sürümlerde indirilebilecek bir uygulamadır. Bununla birlikte, birçok şirket ayrıca yazılım ürünleri gibi iç iş uygulamalarını, sürümleri, sürüm notları ve takılabilir özelliklerle eksiksiz olarak geliştirir ve yayımlar. Bunlar da bu desen için doğal bir uyum içindir. Mikrokernel mimarisi deseni, çekirdeğe eklenti olarak ek uygulama özellikleri eklemenize olanak tanır ve genişletilebilirlik özellik ayrımı ve izolasyon sağlar.
Mikrokernel mimari kalıbı, değişen sistem gereksinimlerine uyum sağlamalı yazılım sistemleri için geçerlidir. Minimal işlevsel bir çekirdeği genişletilmiş işlevsellikten ve müşteriye özel parçalardan ayırır. Mikrokernel aynı zamanda bu uzantıları takmak ve işbirliklerini koordine etmek için bir soket görevi görür.
Microservices architecture – Mikro hizmet mimarisi
Mikroservisler, SOA mimarisi ile yazılım geliştirenlerin tercih edebilecekleri bir mimaridir. Microservice Architecture olarak da bilinmektedir. Bu mimarinin de avantaj ve dezavantajları vardır.
Büyük servisleri küçük parçalara ayırarak yönetilmesi , geliştirilmesi ve silinip atılması oldukça kolay olan bir yaklaşımı Mikroservis mimarisi geliştiriciye sunabilmektedir. Ancak küçük parçalara ayrılan ve birbirinden bağımsız servisler olarak çalışan mikro servislerin avantajlarının yanı sıra güçlükleri de bulunmaktadır. Mikroservisler iş mantıklarını ve kurallarını kendi içinde tutmalıdırlar. “Ne yapıldığı” servisler tarafında, “nasıl yapıldığı” ise servisleri kullanan uygulamalar tarafında olmalıdır.
İş kabiliyetlerine göre ayrıştırılan servisler, tek başlarına çalışabilen servisler olmalıdır. Böylece platform, sistem, dil ya da framework bağımlılıkları kalmamaktadır. Örneğin bir e-ticaret sitesindeki ürün görsellerini sağlayan servis node.js ile kodlanırken , kategori yönetimini sağlayan servisler .NET ile geliştirilebilir. İstatistiksel verileri sağlayan kısımlar R dili ile yazılabilirken, ödeme servisleri Scala ile yapılabilir. Dolayısıyla kimi servisler Windows platformda kimi servisler Linux platformda çalışabilmektedir.
Space-based architecture-Uzay temelli mimari
Uzay tabanlı mimari ( SBA ), durumsal, yüksek performanslı uygulamaların doğrusal ölçeklendirilebilirliğine ulaşmak için kullanılan bir yazılım mimarisi desenidir . REST, SOA ve EDA unsurlarının çoğunu barındırır. Uzay tabanlı bir mimari ile uygulamalar, işleme birimleri (PU) olarak bilinen kendi kendine yeterli birimlerden oluşur. Bu birimler birbirinden bağımsızdır, böylece uygulama daha fazla birim ekleyerek ölçeklendirilebilir. SBA modeli, Google, Amazon.com ve diğer tanınmış şirketler tarafından kullanılan paylaşımsız mimari (SN) gibi uygulama ölçeklenebilirlik sorununu ele alan başarılı olduğu kanıtlanmış diğer kalıplarla yakından ilişkilidir. Bu model, menkul kıymet sektöründe ölçeklenebilir elektronik menkul kıymet ticareti uygulamaları için birçok firma tarafından da uygulanmıştır.
En çok kullanılan yazılım mimarileri için önerileriniz veya projeleriniz hakkında sorularınız bulunuyorsa ekibimize ulaşabilirsiniz.