Bulutu programlama
Bulutu hedefleyen programların tasarlanmasında dikkat edilmesi gereken önemli noktalar vardır. Uygulama türüne ve beklenen yüke bağlı olarak geliştiriciler, programların ölçeklenebilirliğini ve bakımını geliştirmek için bulut sağlayıcıları tarafından sağlanan bazı özelliklerden yararlanabilir. Otomatik ölçeklendirme sistemleri ve yük dengeleyicileri kullanılması, geliştiricilerin, program tarafından hesaplanan yük katsayısına veya donanım kullanımına göre altyapıyı dinamik olarak büyütmesine ya da küçültmesine olanak sağlar.
Bir geliştiricinin, uygulama geliştirirken veya uygulamayı buluta geçirirken, özellikle de performans ve güvenlik ile ilgili hesaba katması gereken birçok önemli nokta vardır.
Buluttaki uygulamalar için performans faktörleri
Bulut merkezli bir veri merkezindeki ortam, geliştiricilerin sahip olunan altyapı üzerinde uygulamalar tasarlayıp dağıtırken kullanabileceği ortamdan farklıdır. Bazı geliştiriciler, fiziksel donanım düzenine veya genel bulutlara yönelik belirtimlere erişimleri olmadığından, uygulamalarının performansını geliştirme veya ince ayar yapma konusunda zorlanabilir. Bulutta uygulama performansını etkileyen faktörler başta olmak üzere, başlıca endişelerden bazılarını listelemeye çalışacağız:
Kaynak bant genişliği ve gecikme süresi
Bulut uygulamaları geliştirme ve dağıtma konusunda öncelikli endişe, gecikme süresidir. Geliştiricilerin, uygulamalarını planlarken katı gecikme süresi gereksinimlerini dikkate almaları gerekir. Bir yaklaşım da, istemci konumlarının dağıtımını derlemektir. Bu, geliştiricilerin son kullanıcı performansını ve yanıt hızını iyileştirmek için kullanılabilecek en iyi veri merkezi konumları kümesini bulmasına olanak sağlar. Bu, özellikle statik web içeriğine yönelik her bir HTTP isteğinin, web sayfası yükleme sürelerinin önemli bir kesimini temsil edebildiği web uygulamalarında geçerlidir.
Uygulamaların, özellikle de ses ve video gibi zengin multimedya içeriğiyle ilgilenen uygulamaların, gecikme süresinin yanı sıra katı bant genişliği gereksinimleri de olabilir. Çoğu bulut sağlayıcısı, bulut geliştiricilerin sağlama sırasında işlem ve depolama kaynakları için IOPS gereksinimleri biçiminde performans parametreleri belirtmesine imkan tanır. Ayrıca çoğu bulut sağlayıcısı, geliştiricilerin sanal ağlar oluşturmasına olanak sağlar. Yazılım tanımlı ağ ve depolamayı uygulama ve benimseme (sonraki modüllerde ele alınmıştır), bir yandan istemci SLO’larında belirtildiği gibi tek tek gereksinimleri yönetirken, diğer yandan birden çok istemciden gelen trafiği yönetmek için veri merkezleri tarafından kullanılan daha yeni tekniklere yönelik ek içgörüler sağlar.
Yukarıda belirtilen teknikler öncelikli olarak statik içerikte hedeflenmektedir. Çok daha zor bir sorun ise, dağıtılmış veri depolama sistemlerine, özellikle de yazma ve güncelleştirme işlemlerini işlemesi gerekenlere yönelik erişimin gecikme süresini kısaltmaktır. Sonraki modüllerde bu endişelerle ilgili daha ayrıntılı bilgi edineceğiz.
Çoklu kiracı
Genel veri merkezlerinde uygulamalar genellikle paylaşılan altyapıda çalışır. Bulut hizmetleri, bu yönüyle birkaç önemli sorun doğurur. Modern sanallaştırma teknolojileri uygulama ortamı ve güvenlik açısından yalıtılmış bir ortam sağlarken, genellikle performans yalıtımını sağlayamaz. Bu nedenle, bulutlardaki sanallaştırılmış kaynaklar her zaman tutarlı performansı garanti edemez. Herhangi bir zamanda bir kaynağın performansı, aynı donanımı paylaşan diğer kiracılardan gelen girişim olarak da bilinen tüm kiracılardan gelen kaynaklar üzerindeki toplam yükün bir işlevidir.
Azure gibi bazı bulut sağlayıcıları, istemcilere ayrılmış donanımlarda belirli türlerdeki kaynakları (VM'ler gibi) sağlama olanağı sağlar. Bu, kaynak performansındaki büyük dalgalanmalara karşı koruma sağlayarak, kaynaklar için oldukça tutarlı bir performans sunar. Öte yandan, Azure’ın özel olarak kaynaklar için bir sunucu ataması gerektiğinden, ayrılmış donanım örnekleri, normal isteğe bağlı örneklerden çok daha yüksek maliyetli olur.
Çoklu kiracılığın ilgili bir yönü, genel bulutlardaki sanal kaynaklara yönelik özdeş isteklerin fiziksel kaynaklara aynı şekilde tahsis edilmemesi ve bu nedenle performans farklılıklarına yol açan "tahsis varyasyonu" sorunudur. Örneğin, sanal makineler ( ve ) için yapılan iki özdeş istek, iki farklı fiziksel makineye ( ve VM1) yönlendirilebilir. A fiziksel makinesinin, aynı makinedeki kaynaklar için rekabet eden dört başka kiracısı olurken, B makinesinin yalnızca iki tane kiracısı olabilir. İstemci, VM1 ve VM2 sanal makineleri için aynı şekilde görevlendirilir, ancak büyük ihtimalle bu makinelerde farklı performansla karşılaşabilir.
Güvenlik ayarları
Genel bulutlar, 1. ünitede gördüğümüz gibi daha fazla saldırı vektörüyle karşı karşıya kalır. Geliştiricilerin, bulutta uygulama dağıtırken ve korurken en iyi deneyimleri, protokolleri ve yordamları izlediğinden kesinlikle emin olması gerekir. Sonuç olarak, genel bulutların gerektirdiği güvenlik protokollerinin kullanılması nedeniyle ek performans yükleri oluşabilir.
Bu protokolleri önceki bir modülde ele aldığımız için tekrar ayrıntılı şekilde ele almayacağız. Genel bulutta dağıtılan tüm kodların, katı bir el ile ve otomatik kaynak kod incelemelerinden, statik analizden ve dinamik güvenlik açığı analizi ve sızma testinden geçmesi gerekir. Sonraki sayfada, uygulamaları güvenli şekilde dağıtma yönergeleri gösterilmektedir.
Başvurular
- Rehman, M.S ve Sakr, M.F (2010). 2010 IEEE İkinci Uluslararası Bulut Bilişim Teknolojisi ve Bilimi Konferansı'ndan (CloudCom) Bulut Bilişimde Değişim Sağlama için İlk Bulgular