Mikrokernel Architecture
Bu mimari, ürün bazlı uygulamalarda yaygın bir şekilde kullanılır. Bunun dışında eklenti mimarisi (plug-in architecture) olarak da bilinir. Ürün bazlı uygulamalar, farklı versiyonları olan ve bir paket olarak indirilebilir haldedir. Bu mimari, üçüncü parti ürünlerde görülmesine rağmen bazı firmalar şirket içi uygulamalarını, uygulamaya eklenebilir yeni özellikler geliştirip sürüm notlarıyla birlikte bunları yayınlarlar. Ana uygulamaya eklenti olarak yeni özellikler eklemek ve bunları izole ve birbirinden ayrı şekilde geliştirmek için uygun bir mimaridir.
Bu mimari iki farklı bileşenden oluşmaktadır: çekirdek sistem (core system) ve eklenti modülleri (plug-in modules). Mikroçekirdek mimari genel olarak sistemi kullanılabilir halde tutmak için az miktarda işlevsellik gerektirir. Bir çok işletim sistemi bu mimariyi kullanır. İş uygulamaları tarafında ise çekirdek sistem genellikle özel durumlar, özel kurallar ve kompleks koşullu işlemler için özel bir kod içmereyen iş mantığı olarak tanımlanır.
Eklenti modülleri bağımsızdır. Özelleşmiş işlemeler, ek geliştirmeler ve özel kod içeren bu bağımsız bileşenler, çekirdek sistemin daha fazla iş yetenekleri üretmesine yönelik geliştirme veya genişlemesini sağlarlar.
Normal şartlarda eklenti modülleri birbirlerinden bağımsız olmalıdırlar. Ama gerekirse birbirlerine ihtiyaç duyan eklenti modülleri tasarlamakta mümkündür. Bağlılık problemleri ile uğraşmamak için eklenti modülleri arasındaki iletişim en düşük seviyede tutulmalıdır.
Çekirdek sistem, hangi eklenti modüllerinin mevcut olduklarını ve onları nasıl alacağı hakkında bilgi sahibi olma ihtiyacı duyar. En yaygın yöntemlerden birisi, bir çeşit eklenti kayıt defteri (registry) oluşturmaktır. Bu kayıt defteri, her eklenti modülü hakkında adı, veri kontratı ve uzaktan erişim protokolü gibi çeşitli bilgileri barındırır.
Eklenti modülleri, çekirdek sisteme OSGi (open service gateway initiative), mesajlaşma ve web servisler ile bağlanabilir.
Çekirdek sistem ve eklenti modülleri arasındaki kontratlar, standart kontratlar ve özel kontratlar olabilir. Özel kontartlar, üçüncü parti tarafından geliştirilen ve üzerinde herhangi bir kontrole sahip olunmayan eklenti bileşenlerinin olduğu durumlarda bulunurlar. Bu gibi durumlarda eklenti kontratları ve standart kontratlar arasına bir adaptör konulur. Ve böylece çekirdek sistem her eklenti için özel bir koda ihtiyaç duymaz.
Mikrokernel mimari ile ilgili en güzel özelliklerden birisi, bu mimarinin diğer mimarilerin bir parçası olarak kullanılabilmesidir.
Bu mimari, çekirdek sistemde büyük değişiklikler yapmadan uygulamaya yeni özellikler ve fonskiyonellik eklemeyi sağlar. Ürün temelli uygulamalarda mimarinin oluşturulması esnasında ilk tercih edilen mimari olmalıdır.
Değerlendirme kısmı okuduğum kitapta 6 ana başlık altında toplanıyor. Bu şekildeki anlatım hoşuma gittiği için ben de aynı yapıda değerlendirme kısmını oluşturdum.
Mikro Çekirdek Mimarisinin Değerlendirilmesi;
- Çeviklik: Yüksek
– Değişiklikler, izole bir şekilde ve hızlıca implement edilebilir. Bu durum eklenti modüllerinin birbiriyle minimum düzeyde konuşmasının bir avantajıdır. - Dağıtım Kolaylığı: Yüksek
– Eklenti modülleri çalışma zamanında çekirdek sisteme dinamik olarak eklenebilir ve bu da uygulamanın çalışmadığı süreyi en düşük seviyede tutmayı sağlar. - Testedilebilirlik: Yüksek
– Eklenti modülleri izole bir şekilde test edilebilir hatta bu modüller çekirdek sistem tarafından kolaylıkla mock’lanabilir. Bu sayede çekirdek sistemde herhangi bir değişiklik yapmadan yeni özellikler denenebilir. - Performans: Yüksek
– Mikrokernel mimarisi üzerine inşaa edilmiş uygulamalar iyi performans gösterir. Bunun nedeni ise uygulamanın sadece ihtiyaç duyulan özellikleri içerecek şekilde özelleştirilebilmesidir. - Ölçeklenebilirlik: Düşük
– Çoğunlukla bu mimari, ürün temelli ve küçük uygulamalarda kullanılır. Bu mimari tek bir parça halinde implement edildiği için ölçeklendirilmesi düşük seviyededir. - Geliştirme kolaylığı: Düşük
– Bu mimari detaylı bir dizayn ve kontrat yönetimi gerektirir. Bu durum da implementasyonu karışık bir hale sokar. Kontrat versiyonlaması, iç eklenti kitaplığı ve eklentilerin birden fazla yöntem ile bağlanabilir olması bu mimariyi karışık bir hale getirmektedir.
Yazımın devamında Mikroservis Mimarisinden (Microservices Architecture) bahsedeceğim.
Kaynakça: Software Architecture Patterns — Mark Richards