Ölçeklenebilirlik Nedir?

Ölçeklenebilirlik programlama dillerine has bir olgu değil. Bu terim ile bir uygulamanın ne oranda artan kullanıcı sayısı ile işlevini sürdürebildiği ifade edilmektedir. Yüksek ölçeklenebilir uygulamalar her koşulda tasarlandıkları şekilde çalışırlar. Bunu sağlamak icin örneğin uygulamanın paralel ve değisik sunucularda çalışan kopyaları oluşturulur. Bir yük dağıtıcı (loadbalancer) ile kullanıcılar değişik sunuculara dağıtılır. Bu yük ve sunucu ayarlaması kullanıcı sayısına göre dinamik olarak gerçekleştirilebilir.

Çoğu zaman bir uygulamayı birden fazla sunucuya dağıtarak yüksek ölçeklenebilirliği yakalamak mümkün iken, bu uygulamanın kullandığı veri tabanı için mümkün değildir. Bu sorunu çözmek için replikasyon teknikleri kullanılarak, veri tabanını da değişik sunuculara yayılabilir.

Kullanılan programlama dilinin yüksek ölçeklenebilirliği desteklemesi, yüksek ölçeklenebilir özellikle bir uygulama geliştirmeyi kolaylaştıracaktır. Örneğin Java’da Threadler yardımı ile bir sunucu bünyesinde belli bir seviyeye kadar servis sunulan kullanıcı sayısı artabilir. Uygulamanın ne oranda kullanıcıya servis sunabileceği kullanılan donanımın sahip olduğu özellikler ile doğrudan orantılıdır. Artan her çekirdek ve hafıza alanı ile uygulamanın o sunucu bünyesindeki ölçeklenebilirliği artar. Bu tür ölçeklenebilirliğe boyuna ölçeklenebilirlik (vertical scaling) ismi verilmektedir. Burada ölçeklenebilirlik seviyesi kullanilan donanıma bağlıdır. Bunun yanı sıra birden fazla sunucu kullanılarak enine ölçeklenebilirlik (horizontal scaling) sağlanabilir. Boyuna ölçeklenebilirliğin sınırı donanımın kapasitesi iken, enine ölçeklenebilirlikte sınır yoktur.

Genel olarak yüksek ölçeklenebilir bir uygulamanin en belirgin özelligi yük altında ezilmeden, sürekli gerektiği şekilde servis sunabilmesidir.

Yüksek ölçeklenebilirliği ölçmek için performans ve yük (load) testleri yaılır. Bu testler yardımı ile uygulamanın bir sunucu bünyesinde hangi yükle maksimum hatasız çalıştığı tespit edilir. Buradan yola çıkarak hangi kullanıcı kitlesi için ne kadar sunucuya ihtiyaç oldugu hesaplanabilir.

Yüksek ölçeklenebilir uygulamaların diğer bir özelliği de çok karmaşık yapıda olmalarıdır. Birden fazla sunucu kullanımı, veri replikasyonu, transaksiyon koordinasyonu gibi konular işletme mantığı yani sıra yüksek ölçeklenebilirligi sağlamak için gerekli kodun yazılmasını zorunlu kılar. Bu tür uygulamaların bakımını ve geliştirilmeleri sıradan uygulamalara kıyasla çok daha fazla efor sarfedilmesini gerektirir. Yüksek ölçeklenebilirliğin bedeli budur.

Kaynak: Özcan ACAR

  
  • Yorumunuz için teşekkür ederim.