Blazor Server uygulamasını AWS Fargate üzerinde Amazon ECS'e dağıtmak
AWS .NET blogu, Blazor Server uygulamalarının Amazon ECS ve Fargate üzerinde nasıl çalıştırılacağını anlatıyor. Yazı, kalıcı WebSocket bağlantısı ve bellekteki devre yapısının yönlendirme, oturum yapışkanlığı ve dağıtım kesintileri üzerindeki etkisini ele alıyor. CDK ile kurulan örnek altyapı ve CloudFront girişi de yer alıyor.
Kilit noktalar
- Blazor Server her oturum için bellekte devre tuttuğu için istekler aynı görevе yapışkan biçimde yönlendirilmelidir.
- Uygulamada ForwardedHeaders ile X-Forwarded-For ve X-Forwarded-Proto başlıkları yapılandırılır.
- Birden fazla örnek çalışacaksa ASP.NET Core Data Protection anahtarları AddDataProtection ile paylaşılan bir depoya yazılmalıdır.
- Örnekteki Data Protection kullanımı için ECS görev rolüne ssm:GetParameter gibi izinler ve bir Systems Manager interface endpoint'i gerekir.
- Örnek 1 GiB'lik görev ve 8080 portu kullanır; bellek kullanımını gerçek yük testiyle ölçmek gerekir.
- Örnekteki tek AZ kurulumu maliyeti düşürür ama üretimde görevler ve endpoint'ler birden fazla AZ'ye yayılmalıdır.
Blazor Server, durumu sunucuda tutar ve her tarayıcı oturumu için bellekte bir devre oluşturur. Bu nedenle altyapının bir tarayıcıdan gelen her isteği aynı ECS görevine iletmesi gerekir. Yönlendirme bozulursa devre kaybolur ve kullanıcı yeniden bağlanma hatası görür. Yazı, bu kısıtların dağıtım mimarisini nasıl belirlediğini net biçimde ortaya koyuyor.
Örnek çözümde trafik CloudFront üzerinden girer, ardından özel alt ağlardaki iç bir Application Load Balancer, 8080 portundaki iki Fargate görevine yönlendirilir. CloudFront, yük dengeleyiciye VPC origin ile erişir ve TLS sonlandırmasını varsayılan CloudFront sertifikasıyla yapar. Uygulama tarafında X-Forwarded başlıkları yapılandırılır, Data Protection anahtarları ise Systems Manager Parameter Store'da paylaşılır. Yazıdaki örnek tek Availability Zone kullanır; üretimde birden fazla AZ önerilir.
Gerçek dünyada kullanımı
- ASP.NET Web Forms uygulamasını AWS Transform ile Blazor Server'a taşıyıp AWS'de çalıştırmak isteyen ekip.
- Kullanıcı oturumu başına durum tutan iç yönetim paneli veya form ağırlıklı kurumsal bir uygulama.
- CloudFront önünde, özel subnet'lerdeki bir Blazor Server servisini CDK ile kodla yönetmek isteyen platform ekibi.
Neden önemli
Blazor Server'ı konteyner ortamına taşırken yapışkan yönlendirme, Data Protection anahtarları ve dağıtım sırasında devrelerin kopması ayrı ayrı ele alınmalıdır. Yazıdaki adımlar bu üç konuda somut bir başlangıç noktası sunar.