Güvenilir bir ölçeklendirme stratejisi tasarlama önerileri
Bu Azure Well-Architected Framework Güvenilirlik denetim listesi önerisi için geçerlidir:
RE:06 | Uygulama, veri ve altyapı düzeylerinde zamanında ve güvenilir bir ölçeklendirme stratejisi uygulayın. Ölçeklendirme stratejisini gerçek veya tahmin edilen kullanım desenlerine dayandırın ve el ile müdahaleyi en aza indirin. |
---|
İlgili kılavuz:Veri bölümleme
Bu kılavuzda, güvenilir bir ölçeklendirme stratejisi tasarlamaya yönelik öneriler açıklanmaktadır.
Tanımları
Terim | Tanım |
---|---|
Dikey ölçeklendirme | Mevcut kaynaklara işlem kapasitesi ekleyen bir ölçeklendirme yaklaşımı. |
Yatay ölçeklendirme | Belirli bir kaynak türünün örneklerini ekleyen bir ölçeklendirme yaklaşımı. |
Otomatik ölçeklendirme | Bir dizi koşul karşılandığında kaynakları otomatik olarak ekleyen veya kaldıran bir ölçeklendirme yaklaşımı. |
Not
Ölçeklendirme işlemleri statik (normal yük desenlerini karşılamak için düzenli olarak zamanlanan günlük ölçeklendirme), otomatik (karşılanan koşullara yanıt olarak otomatik bir işlem) veya el ile (operatör, beklenmeyen bir yük değişikliğine tepki olarak tek seferlik ölçeklendirme işlemi gerçekleştirir) olabilir. Bu yöntemlerden herhangi biri aracılığıyla hem dikey hem de yatay ölçeklendirme gerçekleştirilebilir. Ancak otomatik dikey ölçeklendirme, ek özel otomasyon geliştirme gerektirir ve ölçeklendirilen kaynaklara bağlı olarak kesinti süresine neden olabilir.
Temel tasarım stratejileri
Yük desenlerine göre tasarlama
İş yükleriniz için güvenilir bir ölçeklendirme stratejisi tasarlamak için, kullanıcı ve her iş yükü için ölçeklendirme işlemine yol açan sistem akışları için yük desenlerini belirlemeye odaklanın. Aşağıda farklı yük desenlerine örnekler verilmiştir:
Statik: Her gece saat 23:00 EST itibarıyla, etkin kullanıcı sayısı 100'ün altındadır ve uygulama sunucuları için CPU kullanımı tüm düğümlerde yüzde 90% azalır.
Dinamik, düzenli ve öngörülebilir: Her Pazartesi sabahı, birden çok bölgede 1000 çalışan ERP sisteminde oturum açar.
Dinamik, düzensiz ve öngörülebilir: Ürünün lansmanı ayın ilk gününde gerçekleşir ve önceki lansmanlarda trafiğin bu gibi durumlarda nasıl arttığına ilişkin geçmiş veriler bulunur.
Dinamik, düzensiz ve öngörülemeyen: Büyük ölçekli bir olay, bir ürüne yönelik talepte ani artışa neden olur. Örneğin, nem alma cihazı üreten ve satan şirketler, etkilenen bölgelerdeki insanların evlerindeki odaları kurutmaları gerektiğinde kasırga veya başka bir sel olayı sonrasında trafikte ani bir artışla karşılaşabilir.
Bu tür yük desenlerini belirledikten sonra şunları yapabilirsiniz:
Her desenle ilişkili yük değişikliğinin altyapınızı nasıl etkilediğini belirleyin.
Ölçeklendirmeyi güvenilir bir şekilde ele almak için otomasyon oluşturun.
Önceki örnekler için ölçeklendirme stratejileriniz şunlar olabilir:
statik : İşlem düğümlerinizin zamanlanmış ölçeğini 23:00 ile 06:00 (EST) arasında en düşük sayıya (2) ayarlayın.
dinamik, normal ve öngörülebilir : İlk bölge çalışmaya başlamadan önce işlem düğümlerinizin ölçeğini normal günlük kapasiteye göre zamanlanmış olarak genişletebilirsiniz.
Dinamik, düzensiz ve öngörülebilir: Ürün lansmanının olduğu sabah, işlem ve veritabanı örneklerinizin tek seferlik zamanlanmış bir artışını tanımlarsınız ve bir hafta sonra ölçeği geri küçültürsünüz.
Dinamik, düzensiz ve öngörülemeyen: Planlanmamış trafik artışlarını hesaba katmak için tanımlanan otomatik ölçeklendirme eşikleriniz vardır.
Ölçeklendirme stratejilerini otomatikleştirme
Ölçeklendirme otomasyonunuzu tasarlarken şu sorunları hesaba eklediğinizden emin olun:
İş yükünüzün tüm bileşenlerininuygulama ölçeklendirme adayı olması gerekir. Çoğu durumda, Microsoft Entra ID gibi genel hizmetler sizin ve müşterileriniz için otomatik ve şeffaf bir şekilde ölçeklendirilir. Ağ girişi ve çıkış denetleyicilerinizin ölçeklendirme özelliklerini ve yük dengeleme çözümünüzü anladığınızdan emin olun.
ölçeği genişletilemeyen bileşenler. Parçalama etkinleştirilmemiş ve önemli bir etki olmadan yeniden düzenlenemeyecek büyük, ilişkisel veritabanları buna örnek olabilir. Bulut sağlayıcınız tarafından yayımlanan kaynak sınırlarını belgeleyip bu kaynakları yakından izleyin. Bu belirli kaynakları, ölçeklenebilir hizmetlere geçiş için gelecekteki planlamanıza dahil edin.
Ek yük altyapınızaisabet etmeden önce işlemi düzgün bir şekilde zamanlamak için ölçeklendirme işlemini gerçekleştirme süresi. Örneğin, API Management gibi bir bileşenin ölçeklendirilmesi 45 dakika sürüyorsa, ölçeklendirme eşiğini 90% yerine 65% ayarlamak daha erken ölçeklendirmenize ve beklenen yük artışına hazırlanmanıza yardımcı olabilir.
Akış bileşenlerinin, ölçeklendirme işlemlerinin sırası açısından ilişkisi. Önce yukarı akış bileşenini ölçeklendirerek yanlışlıkla aşağı akış bileşenini aşırı yüklemediğinizden emin olun.
Ölçeklendirme işlemi sırasında kesintiye uğrayabilecek olan durumlu tüm uygulama öğeleri veuygulanan tüm oturum bağlılığı (veya oturum yapışkanlığı). Süreklilik, ölçeklendirme yeteneğinizi sınırlayabilir ve tek hata noktaları sağlar.
Potansiyel tıkanıklıklar. Yatayda ölçekleme her performans sorununu çözmez. Örneğin, arka uç veritabanınız performans sorunuysa, daha fazla web sunucusu eklemenize yardımcı olmaz. Daha fazla örnek eklemeden önce sistemdeki performans sorunlarını belirleyin ve çözün. Sistem durum bilgisi içeren parçalar, darboğazların en olası nedenidir.
dağıtım damgasının tasarım deseninin takiplenmesi, genel altyapı yönetiminize yardımcı olur. Ölçek birimi olarak ölçeklendirme tasarımınızı damga pullarına dayandırmak da faydalıdır. Ayrıca, birden çok iş yükü ve iş yükü alt kümesi genelinde ölçeklendirme işlemlerinizi sıkı bir şekilde denetlemenize yardımcı olur. Birçok farklı kaynağın ölçeklendirme zamanlamalarını ve otomatik ölçeklendirme eşiklerini yönetmek yerine, bir dağıtım damgasına sınırlı bir ölçeklendirme tanımları kümesi uygulayabilir ve sonra bunu gerektiği gibi damgalar arasında yansıtabilirsiniz.
Tradeoff: Ölçeği artırmanın maliyet etkileri vardır, bu nedenle, maliyetleri kontrol altında tutmaya yardımcı olmak için stratejinizi mümkün olan en kısa sürede ölçeği azaltacak şekilde optimize edin. Ölçeği artırmak için kullandığınız otomasyonun aynı zamanda ölçeği küçültme tetikleyicileri olduğundan emin olun.
Azure kolaylaştırma
Otomatik ölçeklendirme özelliği, birçok Azure hizmetindekullanılabilir. Örnekleri yatay olarak otomatik olarak ölçeklendirmek için koşulları kolayca yapılandırmanıza olanak tanır. Bazı hizmetlerin otomatik olarak küçültme yapabilecek yerleşik işlevleri sınırlı veya hiç yoktur, bu nedenle bu durumları belgelediğinizden ve küçültmeyle başa çıkmak için işlemleri tanımladığınızdan emin olun.
Birçok Azure hizmeti, Azure Otomasyonu kullanarak, Azure IoT Hub'ınızı otomatik ölçeklendirmek için örnek kodlar içeren gibi, özel otomatik ölçeklendirme işlemleri tasarlayabileceğiniz API'ler sunar. Azure Kubernetes Service ve Azure Container Apps'da kullanılabilen olay temelli otomatik ölçeklendirme için KEDA gibi araçları kullanabilirsiniz.
Azure Monitor otomatik ölçeklendirme Azure Sanal Makine Ölçek Kümeleri, Azure App Service, Azure Spring Apps ve daha fazlası için ortak bir otomatik ölçeklendirme işlevi kümesi sağlar. Ölçeklendirme bir zamanlamaya göre veya CPU veya bellek kullanımı gibi bir çalışma zamanı ölçümüne göre gerçekleştirilebilir. En iyi yöntemler için Azure İzleyici kılavuzu bakın.
Tavizler
Otomatik ölçeklendirmeyle ilgili dikkat edilmesi gerekenler
Otomatik ölçeklendirme anlık bir çözüm değildir. Yalnızca sisteme kaynak eklemek veya işlemin daha fazla örneğini çalıştırmak, sistemin performansının artacağını garanti etmez. Otomatik ölçeklendirme stratejisi tasarlarken aşağıdaki noktaları göz önünde bulundurun:
Sistem yatay olarak ölçeklenebilir olacak şekilde tasarlanmalıdır. Örnek bağlılığı hakkında varsayımlarda bulunmaktan kaçının. Kodun her zaman işlemin belirli bir örneğinde çalışmasını gerektiren çözümler tasarlamayın. Bir bulut hizmetini veya web sitesini yatay olarak ölçeklendirdiğinizde, aynı kaynaktan gelen bir dizi isteğin her zaman aynı örneğe yönlendirildiğini varsaymayın. Aynı nedenle, bir uygulamadan gelen bir dizi isteğin her zaman aynı hizmet örneğine yönlendirilmesine gerek kalmaması için hizmetleri durum bilgisiz olarak tasarlayın. Kuyruktan iletileri okuyan ve işleyen bir hizmet tasarlarken, hizmetin hangi örneğinin belirli bir iletiyi işlediğine ilişkin hiçbir varsayımda bulunmayın. Kuyruk uzunluğu arttıkça otomatik ölçeklendirme bir hizmetin daha fazla örneğini başlatabilir. Rakip Tüketiciler deseni bu senaryonun nasıl işleneceğini açıklar.
Çözüm uzun süre çalışan bir görev uyguluyorsa, bu görevi hem ölçeği genişletmeyi hem de ölçeği küçültmeyi destekleyecek şekilde tasarlayın. Özen gösterilmezse, sistem küçültüldüğünde böyle bir görev, bir işlemin örneğinin temiz bir şekilde kapatılmasını engelleyebilir. Ya da işlem zorla sonlandırılırsa verileri kaybedebilir. İdeal olan, uzun süre çalışan bir görevi yeniden düzenlemek ve gerçekleştirdiği işlemeyi daha küçük, ayrık öbeklere ayırmaktır. Kanallar ve Filtreler deseni bu çözümü nasıl başarabileceğinize ilişkin bir örnek sağlar.
Alternatif olarak, görevle ilgili durum bilgilerini düzenli aralıklarla kaydeden bir denetim noktası mekanizması uygulayabilirsiniz. Daha sonra bu durumu, görevi çalıştıran işlemin herhangi bir örneği tarafından erişilebilen dayanıklı depolama alanına kaydedebilirsiniz. Bu şekilde, işlem kapatılırsa, gerçekleştirdiği çalışma başka bir örnek tarafından son denetim noktasından sürdürülebilir. NServiceBus ve MassTransit gibi bu işlevselliği sağlayan kitaplıklar vardır. Bunlar, aralıkların Azure Service Bus'deki kuyruklardan gelen iletilerin işlenmesine göre hizalandığı durum verilerini şeffaf bir şekilde saklar.
Arka plan görevleri, bulut hizmetleri tarafından barındırılan bir uygulamanın çalışan rollerinde olduğu gibi ayrı işlem örneklerinde çalıştırıldığında, farklı ölçeklendirme ilkeleri kullanarak uygulamanın farklı bölümlerini ölçeklendirmeniz gerekebilir. Örneğin, arka plan işlem örneği sayısını artırmadan (veya tam tersi) fazladan kullanıcı arabirimi (UI) işlem örnekleri dağıtmanız gerekebilir. Temel ve premium hizmet paketleri gibi farklı hizmet düzeyleri sunuyorsanız, temel hizmet paketlerinin hizmet düzeyi sözleşmelerini (SLA) karşılamasına kıyasla premium hizmet paketleri için işlem kaynaklarının ölçeğini daha agresif bir şekilde genişletmeniz gerekebilir.
Kullanıcı arabirimi ve arka plan işlem örneklerinin iletişim kurdığı kuyruğun uzunluğunu göz önünde bulundurun. Bunu otomatik ölçeklendirme stratejiniz için ölçüt olarak kullanın. Bu sorun, geçerli yük ile arka plan görevinin işleme kapasitesi arasındaki dengesizlik veya farkların olası bir göstergesidir. Ölçeklendirme kararlarını temel alan biraz daha karmaşık ama daha iyi bir öznitelik, iletinin gönderildiği zaman ile işlenmesinin tamamlandığı zaman arasındaki süreyi kullanmaktır. Bu aralık, kritik saat olarak bilinir. Bu kritik zaman değeri anlamlı bir iş eşiğinin altındaysa, kuyruk uzunluğu uzun olsa bile ölçeklendirmek gereksizdir.
Örneğin, kuyrukta 50.000 ileti olabilir. Ancak en eski iletinin kritik süresi 500 ms'dir ve uç nokta, e-posta göndermek için üçüncü taraf bir web hizmetiyle tümleştirmeyle ilgilenir. İşletme paydaşları bunu büyük olasılıkla ölçeklendirme için fazladan para harcamayı haklı çıkarmayan bir süre olarak değerlendirebilir.
Öte yandan, bir kuyrukta aynı 500 ms kritik süreye sahip 500 ileti olabilir, ancak uç nokta, işletme paydaşlarının 100 ms veya daha kısa bir yanıt süresi tanımladığı gerçek zamanlı bir çevrimiçi oyunda kritik yolun bir parçasıdır. Bu durumda ölçeği genişletme mantıklı olacaktır.
Otomatik ölçeklendirme kararlarında kritik süreyi kullanmak için, bir kitaplığın gönderilen ve işlenen iletilerin üst bilgilerine otomatik olarak ilgili bilgileri eklemesi yararlı olur. Bu işlevi sağlayan kitaplıklardan biri NServiceBus.
Otomatik ölçeklendirme stratejinizi, saatlik sipariş sayısı veya karmaşık bir işlemin ortalama çalışma süresi gibi iş süreçlerini ölçen sayaçlara dayandırıyorsanız, bu tür sayaçlardan elde edilen sonuçlarla gerçek işlem kapasitesi gereksinimleri arasındaki ilişkiyi tam olarak anladığınızdan emin olun. İş süreci sayaçlarındaki değişikliklere yanıt olarak birden fazla bileşenin veya işlem biriminin ölçeklendirilmesi gerekebilir.
Bir sistemin ölçeği aşırı genişletmeye çalışmasını önlemek ve binlerce örneğin çalıştırılmasıyla ilişkili maliyetlerden kaçınmak için, otomatik olarak eklenen en fazla örnek sayısını sınırlamayı göz önünde bulundurun. Çoğu otomatik ölçeklendirme mekanizması, bir kural için en az ve en fazla örnek sayısını belirtmenize olanak tanır. Ayrıca, en fazla örnek sayısı dağıtılmışsa ve sistem yine de aşırı yüklenmişse, sistemin sağladığı işlevselliği zarif bir şekilde düşürmeyi göz önünde bulundurun.
Otomatik ölçeklendirmenin bir iş yükündeki ani artışları işlemek için en uygun mekanizma olmayabileceğini unutmayın. Yeni bir hizmet örneği sağlamak ve başlatmak veya bir sisteme kaynak eklemek zaman alır; bu ek kaynaklar kullanılabilir hale geldiğinde ise yoğun talep zamanı geçmiş olabilir. Bu senaryoda, hizmeti kısıtlamak daha iyi olabilir. Daha fazla bilgi için bkz. Azaltma düzeni.
Buna karşılık, birim hızla dalgalandığında ve maliyet önemli bir faktör değilse tüm istekleri işlemek için kapasiteye ihtiyacınız varsa, daha fazla örneği daha hızlı başlatan agresif bir otomatik ölçeklendirme stratejisi kullanmayı göz önünde bulundurun. Ayrıca, beklenen yükten önce maksimum yükü karşılamak için yeterli sayıda örneği başlatan planlı bir ilke de kullanabilirsiniz.
Otomatik ölçeklendirme mekanizması otomatik ölçeklendirme işlemini izlemeli ve her otomatik ölçeklendirme olayının ayrıntılarını günlüğe kaydetmelidir (bunu tetikleyen, eklenen veya kaldırılan kaynaklar ve ne zaman). Özel bir otomatik ölçeklendirme mekanizması oluşturursanız, bu özelliği içerdiğine emin olun. Otomatik ölçeklendirme stratejisinin etkinliğini ölçmeye yardımcı olmak için bilgileri analiz edin ve gerekirse ayarlayın. Kullanım desenleri daha belirgin hale geldikçe ve iş genişledikçe veya uygulamanın gereksinimleri geliştikçe hem kısa vadede hem de uzun vadede ayarlayabilirsiniz. Bir uygulama otomatik ölçeklendirme için tanımlanan üst sınıra ulaşırsa, mekanizma gerektiğinde el ile daha fazla kaynak başlatabilecek bir operatörü de uyarabilir. Bu koşullar altında, iş yükü kolaylaştırıldıktan sonra operatör bu kaynakları el ile kaldırmakla da sorumlu olabilir.
Örnek
AKS temel referans mimarisinin ölçütünüölçeklendirme kılavuzuna bakarak kontrol edin.
İlgili bağlantılar
- Performans verimliliği ölçeklendirme
- Otomatik ölçeklendirme için en iyi yöntemler
Güvenilirlik denetim listesi
Öneriler kümesinin tamamına bakın.