Performans verimliliği
Kuruluşunuzun son ürün duyurularından biri hakkında yeni bir haber yayımlandığını düşünün. Haberden kaynaklanan ek tanıtım mutlaka web sitenize büyük bir trafik akışı getirecek. Web siteniz bu trafik artışını işleyebilecek mi yoksa bu ek yük sitenizin yavaşlamasına veya yanıt vermemeye başlamasına mı neden olacak?
Bu ünitede, performans verimliliği yapı taşını oluşturan ölçeklendirme ve iyileştirme ilkelerini kullanarak dikkat çekici bir uygulama performansı sağlamanın temel ilkelerinden bazılarını gözden geçireceksiniz.
Performans verimliliği nedir?
Performans verimliliği, uygulamaya sağlanan kaynakların uygulamanın aldığı taleple uyumlu olmasıyla ilgilidir. Performans verimliliği kaynakların ölçeklendirilmesini, olası performans sorunlarının belirlenip iyileştirilmesini ve uygulama kodunuzun en yüksek performans için iyileştirilmesini içerir.
Şimdi uygulamanızın ölçeklenebilirliğini ve performansını iyileştirebilecek bazı desenleri ve yöntemleri gözden geçirelim.
Ölçeği büyütme ve ölçeği genişletme
İşlem kaynakları iki yönde ölçeklendirilebilir:
Ölçeği büyütme, tek örneğe daha fazla kaynak eklemektir. Bu, Dikey ölçeklendirme olarak da bilinir.

Ölçeği genişletme ise daha fazla örnek eklemektir. Bu, yatay ölçeklendirme olarak da bilinir.

Ölçeği büyütme, tek örneğe daha fazla kaynak, örneğin CPU veya bellek eklemekle ilgilidir. Bu örnek bir sanal makine veya PaaS hizmeti olabilir.
Örneğe daha fazla kapasite ekleme işlemi uygulamanıza sağlanan kaynakları artırır ama bunun bir sınırı vardır. Sanal makineler, üzerinde çalıştırıldıkları konağın kapasitesiyle sınırlıdır ve konakların da kendi fiziksel sınırlandırmaları vardır. Sonuç olarak, örneğin ölçeğini büyüttüğünüzde bu sınırlara ulaşabilirsiniz. Bu durumda örneğe başka kaynaklar ekleme beceriniz kısıtlanır.
Ölçeği genişletme, hizmete daha fazla örnek eklemekle ilgilidir. Bunlar sanal makineler veya PaaS hizmetleri olabilir. Daha fazla kapasite ekleyip tek örneği daha güçlü hale getirmek yerine, bir bütün olarak örneklerin toplam sayısını artırarak kapasite ekleriz.
Ölçeği genişletmenin avantajı, mimariye ekleyecek daha fazla makineniz olduğu sürece sonsuza kadar ölçeği genişletebilmenizdir. Ölçeği genişletmek için bir tür yük dağıtımı gerekir. Bu dağıtım, istekleri kullanılabilir sunucular arasında dağıtan bir yük dengeleyici biçiminde olabilir. Alternatif olarak isteklerin gönderileceği etkin sunucuları tanımlamaya yönelik bir hizmet keşif mekanizması da olabilir.
Her iki ölçeklendirme türünde de, kaynaklar azaltılabilir ve maliyet iyileştirme gündeme gelebilir.
Otomatik ölçeklendirme, performans gereksinimlerini karşılamak için kaynakları dinamik olarak ayırma işlemidir. İş hacmi büyüdükçe, bir uygulama istediğiniz performans düzeylerini sağlamak ve hizmet düzeyi sözleşmelerini (SLA) karşılamak için daha fazla kaynak gerektirebilir. Talep azaldığında ve ek kaynaklar artık gerekli olmadığında maliyetleri en aza indirmek için kaldırılabilir.
Otomatik ölçeklendirme, yönetim yükünü azaltırken bulutta barındırılan ortamların esnekliğinden yararlanır. Bir kullanıcının sürekli sistem performansını izlemesi ve kaynakları ekleme ve kaldırma hakkında karar vermesi gerekliliğini ortadan kaldırır.
Ağ performansını iyileştirme
Performansı iyileştirdiğinizde düzeylerinin kabul edilebilir sınırlar dahilinde olmasını sağlamak için ağ ve depolama performansına bakarsınız. Bu performans düzeyleri uygulamanızın yanıt verme süresini etkileyebilir. Mimarinize uygun ağ ve depolama teknolojilerini seçmeniz, müşterilerinize en iyi deneyimi sağladığınızdan emin olmanıza yardım eder.
Hizmetler arasına bir mesajlaşma katmanı eklemenin performans ve ölçeklenebilirlik açısından avantajı olabilir. Mesajlaşma katmanı bir arabellek oluşturarak iletileri alan uygulamanın bu hıza yetişemiyor olması durumunda dahi isteklerin hatasız bir şekilde akmaya devam etmesini sağlar. Uygulama istekler üzerinde çalıştıkça, bu istekler alındıkları sırayla yanıtlanacaktır.
Depolama performansını iyileştirme
Birçok büyük ölçekli çözümde, veriler birbirinden ayrı yönetilebilen ve erişilebilen ayrı bölümler halinde bölünmüştür. Bölümleme stratejisi maksimum avantaj sağlayacak ve olumsuz etkileri en aza indirecek şekilde özenle seçilmelidir. Bölümleme ölçeklenebilirliği geliştirmeye, çekişmeyi azaltmaya ve performansı iyileştirmeye yardımcı olabilir.
Mimarinizde önbellek kullanmak performansın geliştirilmesine yardımcı olabilir. Önbelleğe alma, sık kullanılan verileri veya varlıkları (web sayfaları, resimler) daha hızlı almak için depolama mekanizmasıdır. Önbelleğe alma özelliğini uygulamanızın farklı katmanlarında kullanabilirsiniz. Veri alma sürelerini kısaltmak için uygulama sunucularınızla bir veritabanı arasında önbelleğe alma mekanizmasını kullanabilirsiniz.
Ayrıca, statik içeriği kullanıcının yakınına yerleştirerek kullanıcılarınızla web sunucularınız arasında da önbelleğe almayı kullanabilir ve web sayfalarını kullanıcıya döndürme süresini kısaltabilirsiniz. Bunun, istekleri veritabanınızdan veya web sunucularınızdan aktarıp, diğer isteklerin performansını artırma gibi ikincil bir etkisi de vardır.
Uygulamanızdaki performans sorunlarını tanımlama
Bulutta çalıştırılan dağıtılmış uygulamalar ve hizmetler, birçok hareketli parçadan oluşan karmaşık yazılımlardır. Üretim ortamında, kullanıcıların sisteminizi kullanma yöntemini, kaynak kullanımını ve genel olarak sisteminizin durumuyla performansını izlemek önemlidir. Bu bilgileri, sorunları algılar ve düzeltirken tanılama yardımcısı olarak kullanabilirsiniz. Ayrıca bu bilgiler olası sorunların saptanmasına ve sorun ortaya çıkmadan önlenmesine de yardımcı olabilir.
Performans iyileştirme, uygulamaların kendi performanslarını anlamayı içerecektir. Hatalar, düşük performanslı kod ve bağımlı sistemlerdeki performans sorunlarının tümü, bir uygulama performansı yönetim aracıyla ortaya çıkarılabilir. Bu sorunlar genellikle kullanıcılardan, geliştiricilerden ve yöneticilerden gizlenmiş veya örtülü olabilir. Ancak bunlar uygulamanızın genel performansını olumsuz etkileyebilir.
Uygulamanızla kimliğinizin tüm katmanlarına bakın ve performans sorunlarını belirleyip düzeltin. Bu performans sorunları uygulamanızda zayıf bellek işleme sorunu olabileceği gibi, veritabanınıza dizin ekleme işlemi bile olabilir. Bu yinelemeli bir süreç olabilir; şöyle ki, bir performans sorununu çözer ve ardından farkında olmadığınız bir başkasını ortaya çıkarırsınız.
Performans izlemeye kapsamlı bir yaklaşım benimseyerek mimarinizin yararlandığı desen ve yöntem türlerini saptayabilirsiniz.
Bilgilerinizi kontrol edin
Yardıma mı ihtiyacınız var? Sorun giderme kılavuzumuza gözatın veya sorun bildirerek belirli bir konuda geri bildiriminizi paylaşın.