Güvenilir bir ölçeklendirme stratejisi tasarlama önerileri

Bu Azure İyi Tasarlanmış Çerçeve Güvenilirliği 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.

İ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

Süre 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ştirmesi gerektirir ve ölçeklendirilen kaynaklara bağlı olarak kapalı kalma 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'ye kadar etkin kullanıcı sayısı 100'ün altındadır ve uygulama sunucuları için CPU kullanımı tüm düğümlerde %90 düşer.

  • 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: Bir ürün lansmanı ayın ilk gününde gerçekleşir ve önceki lansmanlardan bu durumlarda trafiğin 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 18: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 genişletme zamanlanmış olur.

  • Dinamik, düzensiz ve öngörülebilir: Bir ürün lansmanının sabahı işlem ve veritabanı örneklerinizin tek seferlik zamanlanmış ölçeğini tanımlarsınız ve bir hafta sonra ölçeği yeniden azaltabilirsiniz.

  • 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şenlerinin ölçeklendirme uygulaması için 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ıza isabet 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ürerse ölçeklendirme eşiğini %90 yerine %65'e ayarlamak daha erken ölçeklendirmenize ve beklenen yük artışına hazırlanmanıza yardımcı olabilir.

  • Ölçek işlemlerinin sırası açısından akışın bileşenlerinin 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 tarafından kesintiye uğrayabilecek durum bilgisi olan tüm uygulama öğeleri ve uygulanan tüm oturum benekliği (veya oturum yapışkanlığı). Süreklilik, ölçeklendirme yeteneğinizi sınırlayabilir ve tek hata noktaları sağlar.

  • Olası performans sorunları. Ölçeği genişletme 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. Performans sorunlarının en olası nedenleri sistemde durum bilgisi olan bölümlerdir.

Dağıtım damgası tasarım desenini takip edin, 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.

Dengeleme: Ölçeği artırmanın maliyet açısından etkileri vardır, bu nedenle maliyetlerin kontrol altında tutulmasına yardımcı olmak için stratejinizi mümkün olan en kısa sürede ölçeği azaltacak şekilde iyileştirin. Ölçeği genişletmek için kullandığınız otomasyonun da ölçeği azaltma tetikleyicileri olduğundan emin olun.

Azure kolaylaştırma

Otomatik ölçeklendirme özelliği birçok Azure hizmetinde kullanılabilir. Örnekleri yatay olarak otomatik olarak ölçeklendirmek için koşulları kolayca yapılandırmanıza olanak tanır. Bazı hizmetlerin otomatik olarak ölçeklendirilecek yerleşik işlevleri vardır veya yoktur, bu nedenle bu durumları belgelemeye ve ölçeklendirmeyle başa çıkmak için işlemler tanımladığınızdan emin olun.

Birçok Azure hizmeti, Azure IoT Hub'ınızı Otomatik Ölçeklendirme'deki kod örnekleri gibi Azure Otomasyonu kullanarak özel otomatik ölçeklendirme işlemleri tasarlamak için kullanabileceğiniz API'ler sunar. Azure Kubernetes Service ve Azure Container Apps'te kullanılabilen olay temelli otomatik ölçeklendirme için KEDA gibi araçları kullanabilirsiniz.

Azure İzleyici otomatik ölçeklendirme, Azure Sanal Makine Ölçek Kümeleri, Azure Uygulaması Hizmeti, 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 bkz. Azure İzleyici kılavuzu.

Avantajlar ve Dezavantajlar

Otomatik ölçeklendirmeyle ilgili dikkat edilmesi gerekenler

Otomatik ölçeklendirme anlık bir çözüm değildir. Bir sisteme sadece kaynak eklemek veya bir işlem için daha fazla örnek çalıştırmak sistem performansının artacağını garanti etmez. Otomatik ölçeklendirme stratejinizi tasarlarken aşağıdaki noktaları göz önünde bulundurun:

Sistemin yatay ölçeklendirme için tasarlanmış olması gerekir. Örnek benzimi 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ı nedenden dolayı, bir dizi isteğin her zaman bir hizmetin aynı örneğine yönlendirilmesini önlemek için hizmetleri durum bilgisiz olarak tasarlayın. Bir kuyruktan ileti okuyan ve bu iletileri işleyen bir hizmet tasarlarken belirli bir iletiyi hizmetin hangi örneğinin işleyeceği hakkında varsayımda bulunmayın. Kuyruk uzunluğu arttıkça otomatik ölçeklendirme bir hizmetin daha fazla örneğini başlatabilir. Rakip Tüketiciler düzeni, bu senaryonun nasıl işleneceğini açıklar.

Çözüm, uzun süre çalışacak bir görev uygulayacaksa, bu görevi ölçeği hem genişletmeyi hem de daraltmayı destekleyecek şekilde tasarlayın. Bakım gerektirmeden, böyle bir görev sistem ölçeklendirildiğinde işlemin bir örneğinin temiz bir şekilde kapatılmasını engelleyebilir. Ya da işlem zorla sonlandırılırsa verileri kaybedebilir. İdeal olarak, uzun süre çalışan görevleri yeniden düzenleyin ve daha küçük, ayrık parçaları işleyecek hale getirin. Kanallar ve Filtreler düzeni, 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. Aralıkların Azure Service Bus'taki kuyruklardan gelen iletilerin işlenmesiyle hizalandığı durumu saydam bir şekilde kalıcı hale getirir.

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'tır.

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 düzgün 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. Bir hizmetin yeni örneklerini sağlamak ve başlatmak veya sisteme kaynak eklemek zaman alır ve bu ek kaynakların kullanılabilir olmasıyla yoğun talep geçebilir. 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. Örnekleri beklenen yük gelmeden önce maksimum yükü karşılayacak şekilde yeterli sayıda başlatacak zamanlanmış 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ğinden emin olun. Otomatik ölçeklendirme stratejisinin verimliliğini ölçmeye ve gerekirse ayarlamaya yardımcı olması için bu bilgileri analiz edin. Kullanım alışkanlıkları daha belirgin hale geldikçe işletmenin genişlemesine veya uygulamanın gereksinimlerindeki değişikliklere göre hem kısa vadede hem de uzun vadede ayarlamalar yapabilirsiniz. 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 başvuru mimarisi ölçeklendirme kılavuzuna bakın.

Güvenilirlik denetim listesi

Öneriler kümesinin tamamına bakın.