Yüksek Ölçeklenebilirlik(High Scalability) Nedir?
Ölçeklenebilirlik(scalability) bulut bilişiminin en önemli ve can alıcı özelliklerinden biri. Düşünsenize; elinizde fiziki olarak hiçbir bilgisayar yok, ama aynı zamanda yüzlerce bilgisayar sizin uygulamanızı ölçeklendirmek için sırada bekliyor. Bulut üzerinde ölçekleme yapma olanağının startup şirketlerin ve projelerin büyümeleri için de çok ciddi bir fırsat olduğunu düşünüyorum, zira yeni bir uygulamayla hayata giren bir startup şirketin çok sayıda sunucuyu fiziki olarak satın alması gerçekten çok zordur. Ancak bulut ortamlarındaki ölçeklenebilirlik özelliği sayesinde ürünlerini hızlıca ve daha ekonomik şekilde kullanıcılarına sunabilir. Kısacası ölçeklenebilirlik size en kısa zaman içerisinde en çok sayıda müşteriye ulaşmanın en ucuz yolunu sağlamaktadır.
Ölçeklenebilirlik konusu ilginizi çektiyse yazının devamında sizlere dikey ölçeklenebilirliği(vertical scalability) anlatmaya çalışacağım.
Öncelikle bulut platformlarında ölçeklenebilirliği ana yönleriyle ele alalım:
- Uygulamanızı dakikalar içerisinde ölçeklendirebilirsiniz.
- Load balancer kurmadan ve detaylı konfigürasyonlar yapmadan uygulamalarınızın yük dağılımlarını kolayca ayarlayabilirsiniz.
- Donanımsal olarak tam kapasite kullanmayacağınız sunuculara yüklü miktarda yatırım yapmaktansa, bulut üzerinde sadece kullandığınız kadar donanım ve kaynağa para ödersiniz.
- Bulut platrofmları farklı koşullar için farklı ölçeklendirme seçenekleri sunar.
- Ölçeklendirme uygulamanızın erişilirliğini arttırır. Yoğun istek alan zamanlarda scale up yapılarak zaman aşımları veya son kullanıcıya yavaş hizmet vermek gibi sorunların önüne geçilir.
- Kolayca otomatize edilebilir, ihtiyaç doğduğunda arttırılabilir(scale up), ihtiyaç yokken düşürülebilir(scale down).
Peki, scalability yani ölçeklenebilirlik ne demektir? Wikipedia’daki alıntının Türkçe çevirini şöyle yapabiliriz:
Bir sistemin, ağın veya sürecin artan iş yükünü yönetebilmek veya büyümeyi karşılamak için kaynakların esnetilerek/arttırılarak kullanılması.
Açıklama çok anlaşılır olmadıysa bir örnek üzerinden anlatmaya çalışayım. Diyelim ki Twitter uygulamasını siz yazdınız, sistem son derece basit ve kolay; kullanıcıların 140 karakterlik mesajlarını alarak takip edenlerin zaman akışlarında görüntülenmesini sağlıyorsunuz. İlk zamanlar uygulamanızı binlerce insan kullanacak, dolayısıyla 8 GB RAM ve 4 adet CPU’ya sahip bir sunucu bu yükü rahatlıkla kaldırabilir. Ancak uygulamanız birden popülerleşti ve birkaç gün içerisinde milyonlarca insanın ilgisini çekti. İlk günler binlerle bahsedilen kullanıcı sayınız birden milyona hatta milyonlara çıktı. Elbetteki elinizdeki dört işlemcili bir sunucuyla milyonlarca insana hizmet sunmanız imkansız.
Ya da bir futbol takımının web sitesini düşünün. Birkaç saat sonra dünya çapında bir yıldızın transferini açıklayacak ve o dakika itibariyle web sitesi ziyaretçi akınına uğrayacak, belki de normal zamanlardaki ziyaretçi trafiği 100 katına çıkacak. Böyle bir ortamda normal kaynaklarla yönetilen web sitesinin yanıtlara cevap verememesi hepimizin malumu. Örnekleri arttırmak mümkün…
Sisteminizi birkaç saat içerisinde, hatta birkaç dakika içerisinde milyonlarca kişinin ziyaretini karşılayabilecek hale getirseniz ne güzel olurdu değil mi? İşte sisteminizi ve donanımınızı birkaç dakika içerisinde bu şekilde esnetmenizi ve yazılımınızın bu sistem üzerinde sorunsuz şekilde çalışmasını sağlama işlemine high scalability yani yüksek ölçeklenebilirlik diyoruz.
Bulut platformları uygulamanızın host edildiği sunucuların donanımlarını birkaç dakika içerisinde arttırmanızı veya uygulamanızın host edildiği sunucunun yanına ek sunucular ekleyerek uygulamanızın daha verimli ve sağlıklı çalışmasını sağlar. Ayrıca bu sunucuların load balancing(yük dağılımları) ayarlarını da otomatik yapar, yine sizin ek ayarlar yaparak yük dağılımlarını yönetmenizi sağlar.
Nasıl ölçekleme yapabiliriz? Bulut teknolojileri bize nasıl olanaklar sunuyor?
Günümüzün iki popüler bulut teknolojisi olan Amazon Web Services(AWS) ve Microsoft Azure uygulamalarınızı çeşitli parametrelere göre ölçeklemenizi sağlamaktadır. Geçmişte AWS üzerinde birçok projeyi hayata geçirdiğim için bu ve bir sonraki yazımda daha ziyade AWS ile ilgili high scalability konusunda detaylar aktaracağım.
AWS’de ölçeklenebilirlik konusunda birçok seçeneğin olduğunu ve bu seçenekleri arayüzler üzerinden pratik şekilde kullanarak uygulamanızı ölçeklendirebilirsiniz. AWS ElasticBeanstalk farklı platformlar üzerinde uygulamalarınızı yönetmenizi, kurulumlar yapmanızı(deployment) ve ölçeklendirme işlemlerini gerçekleştirmenizi sağlamaktadır. Yapısında bulunan scaling triggerları ve bu triggerları oluşturacak birçok parametre sayesinde çeşitli senaryolar için oldukça esnek ölçeklendirmeler yapabilmekteyiz.
Ölçeklenebilirlik özelliği anlık, günlük veya dönemsel olarak farklı yükler altında çalışacak uygulamalarınız için oldukça önemli ve günümüz şartlarında artık olmazsa olmaz bir özelliktir. Bulut bilişimi ile uğraşanların bu konuyu detaylıca araştırmaları ve kullandıkları bulut platformlarında(AWS, Azure… gibi) bulunan araçları incelemelerini tavsiye ederim.
Bir sonraki yazımda AWS ElasticBeanstalk’ı tanıtıp ve bu ürünle uygulamalarımızı nasıl ölçekleyebileceğimizi anlatacağım.
1 Comment
AWS ElasticBeanstalk ile High Scalibility | Devnot
14 Ekim 2015 at 22:04[…] İlk yazımızda yüksek ölçeklenebilirliğin(high scalability) ne olduğuna değinmiştik. Bulut platformlarının sağladığı ölçeklenebilirlik özelliklerinden ve bu özellikler sayesinde uygulamalarımızı nasıl ölçekleyebileceğimizden bahsetmiştim. Bu yazımda da ilk yazıda kısaca değindiğim AWS ElasticBeanstalk’in bu çerçevedeki özelliklerine ve kullanımına göz atacağız. […]