Azure App Service Local Cache Nedir ?

App Service Local Cache Azure üzerindeki web uygulamalarının performans ve erişebilirliğini yüksek ölçüde arttıran bir özelliktir. Local cache özelliğinin ayrıntılarına girmeden önce Web App mimarsinden biraz bahsetmek istiyorum. Azure üzerinde sahip olduğunuz  bir Web App’in arka planda bir VM üzerinde koştuğunu düşünüyor olabilirsiniz kısmen doğru olsada aslında gerçek resim şu şekildedir;

Azure App Service Local Cache

Azure platformu üzerinde bir Web App’in 3 farklı bileşeni vardır :

  • Front End: Proxy gibi davranarak gelen istekleri (http/https) worker’lara iletir. Aynı zamanda layer-7 bir load balancer mantığında çalışarak istekleri App Servis modeline bağlı olarak allocated edilmiş worker instance’larina iletir.
  • Worker Role: Web uygulamanızın host edildiği katmandır. IIS rolünün yüklü olduğu bir VM olarak düşünebilirsiniz. Bu VM’in CPU – Memory kaynakları sahip olduğunu App Servis plan’a göre değişir. Free yada Shared tier bir App Servis Plan kullandığınızda Worker Instance farklı müşteriler ile paylaşılabilir.

App Service Local Cache

Web App’inizi Scale Out yaptığınızda belirtmiş olduğunuz -n kadar Worker Rolü (Server) sizin için Worker havuzundan saniyeler içerisinde tahsis edilmiş olur.

  • Shared Network Drive: Web Sitenizin içeriklerinin (Html, Imaegs, Js, Code Files v.s) tutulduğu bir file server olarak düşünebilirsiniz. Bu file server Worker VM’lere MAP drive olarak eklenir.

Azure üzerinde bir Web App deploy ettiğinizde tüm site içerikleri share network drive içerisine kopyalanır. Worker Rolü uygulamanızın ihtiyaç duyduğu içeriklere bu shared network drive üzerinden erişir.

Ancak Yüksek Erişebilirlik yada Yüksek Performans ihtiyacı duyduğumuz durumlarda bu model bizi pek mutlu etmeyebilir. Çünkü;

  • Web Sitenize ait içeriklerin network drive’dan okunması ekstra bir zaman alır.
  • Worker VM – Shared network drive bağlantısında problem olabilir ve bu durumda uygulamanız restart olur.
  • Script-Based uygulamalar başlangıçta çok fazla okuma işlemi yapacağından okuma performansı yavaş olur.

Fakat tüm bunları App Service Local Cache özellii ile çözebiliriz 🙂 

App Service Local Cache Nedir ?

Local Cache; Shared network drive üzerinde tutulan içeriklerin kopyasını Worker VM ‘in lokal diskine alınmasını sağlayarak uygulamanızın performans ve erişebilirik seviyesini arttıran bir özelliktir. Web App’ininiz her yeniden başlatıldığında network drive üzerindeki içerikler worker VM’ üzerindeki lokal diske kopyalanır, kopyalama işlemi tamamlandıktan sonra Worker Rolü içeriklere erişmek için kendi local diskini kullanmaya başlar.

Local Cache özelliği, herhangi bir platformda çalışan web uygulamaları (.NET, JAVA veya PHP) için etkinleştirilebilir.

Local Cache tek yönlü bir senkronizasyondur ve yalnızca shared drive içerisindeki içerikleri local disk üzerine senkronize eder ve web app’in restart olması durumunda silinirler.

Local Cache boyunu default’ta 300 MB dir. Max 2 GB olarak set edilebilir. (Eğer web uygulamasının içeriği 2 GB’den fazla ise Local Cache özelliği çalışmayacaktır)

App Service Local Cache Özelliği Nasıl Aktif Edilir ?

Portal üzerinden Local Cache özelliğini aktif etmek istediğiniz Web App içerisindeki Application Settings bölümünden WEBSITE_LOCAL_CACHE_OPTION değerini kullanarak aktifleştirebilirsiniz.

WEBSITE_LOCAL_CACHE_OPTION – Always
WEBSITE_LOCAL_CACHE_SIZEINMB – 300 ile 2000 MB (Her Web App için) arasında bir değer.
WEBSITE_LOCAL_CACHE_SIZEINMB değeri belirtilmediği varsayılan olarak 300 MB dır.

WEBSITE_LOCAL_CACHE_OPTION

Local Cache’i aktif ettikten sonra Kudo ile Environment Variables altından Local cache’in aktif olup olmadığını kontrol edebiliriniz.

Environment Variables

Local Cache parametreleri eklendikten sonra aktif olması için Web App’in restart edilmesi gereklidir.

Faydalı olması dileğiyle.