Upload
tahsin-yueksel
View
179
Download
2
Embed Size (px)
Citation preview
ÖlçeklemeWeb’ de ölçekleme ve teknolojiler
Serüven Ne zaman Başlar Uygulama klasik şekilde yazılır ve hayata geçirilir. İlk başta her şey normaldir. İşlem yükü arttığında(bir çok durum
olabilir,kullanıcı taraflı düşüneceğiz) sistemin bunu nasıl karşılayabileceği ön görülmemiştir.
Ani (reklamlar,kampanyalar vs) veya doğal artan kullanıcı kitlesinin oluşturduğu işlem taleplerinden dolayı sisteminizde kilitlenmeler olumsuz sonuçlar almaya başlayabilirsiniz.
Serüven Ne zaman Başlar Çok fazla talepten dolayı tükenen kaynaklardan
dolayı sistemin verememesi veya geç cevap (istenilen ölçülerde olmaması) vermesi durumunda ortaya çıkar.
Bu durumu önceden ön görmek gerekir. Aksi takdirde maddi ve manevi kayıplar olabilir. Kullanıcılar sisteminizden faydalanamaması müşteri/para kaybına yol açacağı gibi aniden karşılaşacağınız bu problemleri anlayıp stresli durumda hızlı çözüm bulmak çok kolay olmayacaktır.
Ölçekleme (Scalability) Sistem/uygulamalarda artan işlem yükünü
sekteye uğratmadan karşılayabilme.
İki çeşit ölçekleme methodu vardır.
1) Dikey Ölçekleme (vertically scale)
2) Yatay Ölçekleme (horizontally scalable)
Dikey Ölçekleme (vertically scale) Kullanılan makinenin donanımsal kaynaklarını
arttırarak ve/veya optimize ederek işlem kapasitesini arttırmak.
İlk akla gelen ve en çok kullanılan yöntemdir.
Maliyet artar. Her sonraki aşama katlanan maliyet.
Tek makine olduğu için olası kötü senaryolarda erişimi kaybedersiniz.
Yatay Ölçekleme(horizontally scalable) Dikeyin aksine bir çok ucuz makinelerin bir araya gelerek
güçlerini birleştirmesi şeklinde açıklanabilir. İşlemler bu makineler arasında paylaştırılır. Bu sayede hem hızlı sonuçlar alınır hem de yedeklilik
sağlanır Yüksek erişebilirlik sağlar. Daha geniş ve kompleks yöntemdir. Birden çok makinenin
yönetilmesi bakımı üzerinde çalışan uygulamaların ortak hale getirilebilmesi gibi ekstra bir çok konu kapsar.
Load Balancer Gelen trafiği uygulamalarınız arasında belirlenen
yöntemde dağıtmaya/yönlendirmeye yarar. Donanımsal ve yazılımsal olarak 2 şekilde
sağlanabilir.
Yükü Dağıtmak, Dağıtık Çalışmak Uygulamanın çalışan birer kopyaları ve bunlar
arasında trafiği paylaştırma işidir.
Tek çalışan uygulamanın birden çok kopyayla farklı makinelerde bulunarak çalışmasını sağlamada bazı problemlerle karşılaşırız.
Bunlar birden çok aynı iş üzerinde çalışan makine ve uygulamaların ortak konuşmasını sağlamanın gerekliliğidir.
Neler ?
Session verileri File Store Statik dosyalar
Gibi tüm sunuculardan ortak şekilde ulaşılabilir, kullanılabilir olması gerekenler.
Neler ? Session Session: Bilindiği üzere session verileri default/genel
olarak file system de tutulur.
Örneğin 3 sunucu üzerinde uygulamalarınızı çalışıtırıyorsunuz. 1.makineye gelen kullanıcı oturum açtığında o session bilgileri doğal olarak 1.makinede kaldı.
Bu durumda kullanıcı isteği 2 ve 3.makinelere load balancer ile geldiğinde oturum açmamış gibi davranılacak.
Veya makineler birbirlerinden haberdar olamayacak.
Session Peki Çözüm:
1) persistent load balance Kalıcı Yönlendirme
2) share store Paylaşılan depolama
Persistent Load Balance: Artı: Yazılım tarafında değişikliğe gitmeye gerek
yoktur.
Eksi: Load balancer da darboğazlar oluşabilir. Sunucuda oluşabilecek problem veri kaybına yol
açar.
2. Share Store Artı: Load balancer darboğazları yaşamaz. Belirlenen depolarda veriler saklanır(Db, memory
vs) Yönetimi daha kolay ve işlenebilir.
Eksi: Yazılım mimarisinde değişiklikler gerektirir.
Session Management Php de session store değiştirmek için php.ini de
bulunan session ayarları düzenlenmeli.
Session handler ile session verilerinin nerede saklanacağı session name gibi bilgilerle özelleştirebileceğimiz ayarlar.
http://php.net/manual/en/session.customhandler.php
Share Store Türleri Paylaşımlı depolama türleri:
File System Database Memcached Redis
Diğer çözümler.
Bu yöntemler ile tüm makinelerin ortak ulaşıp kullanabileceği veriler sağlanıyor.
Proje kapsamına göre değerlendirmeler sonucu uygun çözümler kullanılabilir.
Cache için de sıkca başvurabileceğimiz memory tabanlı çözümler sık tercih edilir ve hayat kurtarır.
En bilindikleri memcached, redis
Önbellekleme İsteklere karşı daha hızlı cevap verebilmek adına
talep edilen verilerin bellekte depolanarak buradan sağlanması.
Tekrar tekrar db veya diğer veri sağlayacılardan veri talep etmek yerine cache suncuları araya girerek buradan veri işleme yöntemidir.
Önbellekleme Tekrar gerektiren verileri veya karmaşık sorgular
sonucu ortaya çıkan veriyi saklayarak işlem ve kaynak tasarrufu sağlar.
Memory tabanlı oldukları için çok hızlıdırlar. Key value şeklinde çalışırlar. Veriler kalıcı değildir.(Genellikle)
Redis, memcached, xcache, apc …