Makale Özeti

Ölçeklenebilir, erişilebilir ve yüksek performanslı uygulamalar geliştirmek için sunulan dağıtık önbellek platformu olan AppFabric Cache'in mimarisi hakkında fikir sahibi olmanız onu kendi geliştirdiğiniz uygulamalarda hangi noktalarda ve ne şekilde kullanabileceğinizi bilmenizi sağlayacaktır. Bu makalemde AppFabric Cache fiziksel ve mantıksal mimarisini derinlemesine tanıyacağız.

Makale

Ölçeklenebilir, erişilebilir ve yüksek performanslı uygulamalar geliştirmek için sunulan dağıtık önbellek platformu olan AppFabric Cache'in mimarisi hakkında fikir sahibi olmanız onu kendi geliştirdiğiniz uygulamalarda hangi noktalarda ve ne şekilde kullanabileceğinizi bilmenizi sağlayacaktır. Ek olarak; önbellek kümesinin yapılandırmasında yapınıza ve ihtiyaçlarınıza uygun ayarları yapabilmenizi sağlayacaktır. AppFabric Cache mimarisini daha iyi anlamanız açısından mimariyi fiziksel ve mantıksal olmak üzere iki farklı açıdan incelemek faydalı olacaktır.

AppFabric Cache Fiziksel Mimarisi

AppFabric önbelleği fiziksel tasarımı, dışarıdan bir bütün gibi görünen ve birbirleriyle iletişim içinde bulunan sunucu kümelerinden, önbellek kümesinden, oluşmuştur. Uygulamanız için önbellek kümesi bir bütün olarak göründüğünden, kümeye yeni bir sunucu eklenmesi ya da bir sunucu çıkartılması sonrası uygulamanızda herhangi bir değişiklik yapılması ihtiyacı bulunmamaktadır.

Fiziksel mimari aşağıdaki bileşenlerden oluşmaktadır;

  • Önbellek sunucusu
  • Önbellek windows hizmeti
  • Önbellek kümesi
  • Küme yapılandırma deposu
  • Powershell tabanlı önbellek yönetim aracı
  • Önbellek istemcisi

AppFabric Önbellek Fiziksel Mimarisi

Önbellek Windows Hizmetleri

AppFabric Önbellek Servisi, sunucu üzerinde çalışan bir windows servisidir. Bu servisin barındığı sunucu ise Önbellek Sunucusudur ve aynı anda bir önbellek sunucusunda sadece bir önbellek servisi yer alabilir. Pratikte, bir önbellek sunucusu pek çok ek role de sahip olabilir. Hatta gerçek hayatta ağır yük ile karşılaşmayan uygulamalarda uygulama sunucusu, önbellek sunucusu ve veritabanı sunucusu rolleri aynı makineye yüklenmiş olabilir.

Önbellek Kümesi

Bir veya daha fazla önbellek sunucusu bir araya gelerek önbellek kümesini oluşturmaktadır. Küme içerisindeki önbellek sunucular sürekli gözlemlenerek yüksek erişilebilirlik sağlanmaktadır.

Küme Yapılandırma Deposu

Önbellek kümesi yapılandırmaları ortak bir depoda tutulmaktadır. Yapılandırma bilgilerinin tutulma ve erişilme şekline göre iki tip küme yapılandırma deposu bulunmaktadır;

  1. Xml dosyası : Yapılandırma bilgileri ağ üzerinden paylaşılan ve tüm önbellek sunucularınca erişilebilen bir konumda yer alan xml dosyası içerisinde tutulur.
  2. SQL Server veritabanı : Yapılandırma bilgileri önbellek sunucularınca erişilebilir bir noktaya konumlanmış olan SQL Server veritabanında tutulur.

Önbellek servislerinin Network Service kullanıcı yetkileriyle çalıştığı göz önüne alınacak olursa, bu kullanıcının küme yapılandırma deposuna erişebilir durumda olması sistemin çalışması açısından oldukça önemlidir.

PowerShell Tabanlı Önbellek Yönetim Aracı

Önbellek yönetim özellikleri PowerShell üzerinden kullanıcılara sunulmuştur. Önbellek kümesi başlatma/durdurma, önbellek oluşturma/yapılandırma ve erişim yetkisi verme gibi pek çok işlemin yapılabildiği PowerShell tabanlı bu yönetim aracı bir ya da bir kaç önbellek sunucuna AppFabric kurulumundaki “Önbellek Yönetim Özellikleri” seçeneği seçilerek kurulabilir. Servis başlatma durdurma gibi fonksiyonlara sahip bu yönetim aracının doğru çalışabilmesi için PowerShell oturumunun sistem yöneticisi yetkisiyle başlatılması gerekmektedir.

Önbellek İstemcisi

AppFabric Cache tarafından sunulan önbellek özelliklerini kullanan her bir istemciye önbellek istemcisi adı verilmektedir. Önbellek istemcisi bir Asp.Net uygulaması olabileceği gibi bir masaüstü uygulaması da olabilir. Bazı senaryolarda ortamda hem Asp.Net hem de masaüstü istemcileri bulunabilir.

 

AppFabric Cache fiziksel mimarisi firewall arkasında yer alan bir domain içerisinde çalışması üzere tasarlanmıştır ve önbellek kümesi içerisindeki iletişim şifrelenmemiştir. Bu iletişimin şifrelenmemiş olması, ağ içerisinden yapılabilecek saldırı ve giden-gelen verinin loglanmasına karşı savunmasız olduğu anlamına gelmektedir.

Önbellek kümesi yönetimi için bir komut çalıştırılması öncesi komutun çalıştırıldığı kullanıcı bilgileri yetki kontrolünden geçmektedir. İzin verilen kullanıcılar dışında bir kullanıcının kümeyi yönetmesi söz konusu değildir. Dikkat edilmesi gereken önemli bir noktada her bir önbellek sunucusu yönetici grubu küme yönetimini gerçekleştirmeye yetkilidir.

AppFabric Cache Mantıksal Mimarisi

Mantıksal mimarisi aşağıdaki parçalardan oluşmuştur;

  • İsimlendirilmiş önbellekler (Named Caches)
  • Bölgeler (Regions)
  • Önbelleğe alınmış nesneler.

İsimlendirilmiş Önbellekler

Bir önbellek; tüm programlarca erişilebilir, kullanılabilir/ayarlanabilir ortak hafıza alanıdır. Windows Server AppFabric ilk kurulumuyla birlikte “default” adıyla varsayılan bir önbelleği uygulamaların kullanımına sunmaktadır; fakat istenirse bir veya daha fazla isimlendirilmiş önbellek oluşturularak kullanılabilir. Her bir uygulama dilediği kadar isimlendirilmiş önbellek kullanabileceği gibi bu önbelleklerin her biri birbirinden yalıtılmış durumdadır. Her bir önbellek, önbellek sunucularında yatayda yer almaktadır.

Bölgeler

Bölgeler önbelleklerde ek veri taşıyıcı alanlardır. Önbelleklerden farklı olarak bölgeler küme yapılandırmasında tanımlanmayıp her bir önbellek sunucusu içerisinde yer alırlar. Önbelleklerin seçimli bir parçası olan bölgelerin var olabilmeleri için harici olarak oluşturulmaları gereklidir.

Bölgeler üzerinden önbellekler ile yapabileceğiniz standart işlemleri yapabilir, verdiğiniz anahtar üzerinden istediğiniz nesneye ulaşabilirsiniz. Bu özelliklere ek olarak; tag adı verilen ve string veri türünde veri tutabilen alanlar sayesinden bölge içerisindeki tüm nesnelerde arama yapılabilir. İstenirse bölge içerisindeki bir nesneye birden fazla da tag atanması söz konusudur.

Tabi ki bölgelerin bu özelliklerinin getirisiyle birlikte ölçeklenebilirliği gibi önemli bir özelliğinden vazgeçilmesi gerekecektir; çünkü bölgelerde yer alan nesneler sadece tek bir önbellek sunucusu içerisinde bulunabilir.

Önbelleğe Alınmış Nesneler

Önbellekler System.Object türünden nesneleri tutabilir. Daha önceki makalelerimi okuyanlar hatırlayacaklardır ki object türü .Net içerisinde oldukça güçlü bir veri türüdür. Dolayısıyla da önbellekler neredeyse her .Net veri türüyle işlem yapabilirler.

Bir nesne önbelleğe alınırken ek olarak erişimde kullanılacak anahtar kelimeler, tag’ler, sürüm bilgisi, hangi önbellek ve bölgede  tutulduğu gibi bilgiler iliştirilerek alınır.

Önbellekler hakkında düşülmesi gereken önemli bir not; önbelleklerde tutulan veri şifrelenmemiştir ve doğru ayarlarla yapılandırılmış herhangi bir istemci bu veriye ulaşabilir. Bir güvenlik zaafiyetine yol açmamak için yapılandırma dosyalarınızın güvende tutulması önemlidir.

 

Yüksek Erişilebilirlik

AppFabric Cache mimarisi yukarıda sayılanlara ek olarak yüksek erişilebilirliği desteklemektedir. Yüksek erişilebilir olarak işaretlenmiş olan bir isimlendirilmiş önbellek içerisinde tüm nesne ve bölgelerin bir kopyası ayrı sunucular üzerinde barındırılır.

Yüksek erişilebilirliği aktif hale getirilmiş isimlendirilmiş önbellek içindeki bir nesne üzerinde yapılan işlemler önbellek kümesi kontrolünde kopyaları üzerinde de gerçekleştirilir. Bu yapı ile birlikte birincil nesneye erişilememesi durumunda (örneğin barındığı sunucuda donanımsal arıza olması) küme ikincil kopya üzerinden işlem yapılmasına izin vererek erişilebilirlik sağlar. Yüksek erişilebilirlik konusunda dikkat edilmesi gereken nokta, bu özelliğin ancak Windows Server 2008 ve Windows Server 2008 R2'nin Enterprise sürümlerinde destekleniyor olmasıdır.

Yüksek erişilebilirlik özelliğinin birden fazla kopyanın senkron kalmasının sağlanması nedeniyle performansa etkisi olabileceği unutulmamalı. Yazılım mimarları bu noktada önbelleğin yeniden yüklenmesi ve verinin kaybedilmesi durumundaki senaryoları göz önüne alarak kullanılıp kullanılmayacağına karar vermesi gerekmektedir.

 

Fatih Boy

http://www.enterprisecoding.com
http://twitter.com/fatihboy