Bir çok yerde “Architecture and Design Patterns”(Mimari ve Tasarım Kalıpları) başlığına benzer başlıklar altında çeşitli yazılar okuyoruz. Ve çoğunun içeriği Gof(gang of four)’un ön ayak olduğu tasarım kalıpları ile ilgili…İyi,güzel ama peki bunların “mimari” kelimesi ile alakası ne…Direkt olarak pek yok…Evet, gerçekten pek yok…
Belki benden tecrübeli meslektaşlarım biraz kızacak ve hatta ne saçmalıyorsun falan diyecektir. Ama açıkcası “Design Patterns”(Tasarım kalıplarının) direk olarak mimari yaklaşımlar ile alakalı olduğunu düşünmüyorum, aslında düşünmediğim gibi, kendi tecrübelerimden,okuduklarımdan, öğrendiklerimden görüyorum da…
“Design Patterns”(Tasarım kalıpları) hakkında internette bir çok kaynak var. Çoğunda belli kod parçacıkları ile örnekler ile ne amaçla kullanacağımızı falan anlatılıyor.Süper, mükemmel…Ama erken…Daha kod yazmaya başlamadık ki…
Madem böyle kalıp falan başladık bahsetmeye, bu yazının amaçı olan “Architecture Patterns(Sytles)”’e(Mimari Kalıplara) geçelim.Çeşitli kaynaklarda mimari sitiller, bazılarında da mimari kalıplar şeklinde geçer, ama yazılımcıların bakış açısından daha kolay anlaşılacağını düşündüğüm için bende kalıp olarak kullanacağım. Önceki yazılarda da bahsettiğim ihtiyaçlar doğrultusunda şekillenecek(şekillenmesi gereken) mimarimizi, belli tecrübelerden, teknolojik açılardan ve belli limitlerden dolayı belli kalıplar dahilinde şekillendirmemiz bize yardımcı olabilir. Kurabiye yaparken kullanılan kalıplar ya da kumdan kaleler yaparken kullandığımız kovalar gibi…
Bu bağlamda, ne olduklarının çok farkında olmadığımız ama sık sık kullandığımız kavramlar ortaya çıkıyor. Mimari kalıplar…
Mimari kalıplar, geliştireceğimiz sistemlerin ya da yazılımların ihtiyaçlarımız doğrultusunda çok daha etkili çalışabilmesini sağlayacak ve mimarimizi geliştirirken bize yol gösterecek kalıplardır. Çok daha iyi anlaşılması adına aşağıdaki gibi bir liste yaparsam daha iyi olur sanırım.
- Bileşen tabanlı mimari
- Katmanlı mimari
- P2P mimari
- UI tabalı mimari
- Mesaj bazlı mimari
- Servis tabanlı mimari
- Event tabanlı mimari
Yukarıda bazı popüler mimari kalıplardan örnekler var. Daha çeşitlenebilir tabi ki. Bunları tek tek şuan için açıklamayı düşünmüyorum. Bu noktada mimari kalıpların neden önemli olduğunu anlatmak istiyorum. Mimari kalıplar, ihtiyaçlarımızı daha net bir şekilde karşılamamızda bize yol gösterir. Ayrıca ihtiyaçlarımızı karşılarken, hangi yöntemleri kullanabiliriz bunları sunar. Bu kalıpları ayrı ayrı düşünüyor olmak biraz hatalı olabilir. Direk olarak kesiştirmek de hatalı olur. Mimari tasarımı yaparken, ihtiyaçlarımızı bu kalıplar doğrultusunda çerçeveleyip tasarımımızı yapmak çok daha sağlıklı sonuçlar getirecektir. Ayrıca bu kalıpların kendi içlerindeki kanıtlanmış yöntemler, sizi bir çok şeyden kurtarıyor da olacaktır.
Son olarak tekrardan “Design Patterns”-tasarım kalıplarının, mimari tasarımla direk alakası olmadığını söylemek istiyorum. Bu karıştırmadan dolayı kavramların da karıştığını görüyorum. İlerleyen yazılarda yine bu konulardan bahsediyor olacağım…Şimdilik bu kadar…