Microsoftのクラウド移行ベストプラクティス集「reliable web app pattern」(RWA)で推奨されるアプリのコード変更とは?Azure Well-Architected Frameworkをベースに構築

Microsoftは既存アプリケーションのクラウド移行を始めるためのベストプラクティス集、「reliable web app pattern」(RWA)を発表した。

» 2023年03月30日 08時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 Microsoftは2023年3月7日、既存アプリケーションのクラウド移行を始めるためのベストプラクティス集、「reliable web app pattern」(RWA)を発表した。

 RWAは、Azure Well-Architected Frameworkをベースに構築されたベストプラクティス集だ。Microsoftによると、RWAは、低コストで価値の高い成果を得ることに焦点を当てた、幾つかのビジネスおよび技術的目標(セキュリティ、信頼性設計パターン、オペレーショナルエクセレンス、コスト最適化環境など)に関するガイダンスを提供するという。

(提供:Microsoft)

 Microsoftの公式ブログでは、アプリケーションの耐障害性とパフォーマンスを高めるために考慮すべきコード変更を以下のように紹介した。

耐障害性を高める

 クラウドのような分散システムで作業する場合、アプリケーションがエラーから確実に回復できるようにすることが重要だ。アプリケーションがサービスやネットワークリソースに接続しようとするときに発生する可能性のある過渡的な障害を予期する必要がある。

 障害には、ネットワーク接続の瞬間的な喪失、ネットワークサービスの一時的な利用不能、サービスがビジー状態のときに発生するタイムアウトなどがある。このような過渡的な障害を予測し、適切に処理することで、アプリケーションの安定性と回復力を向上できる。

 比較的簡単に実装できるパターンとしては、RetryパターンとCircuit-breakerパターンがある。

Retryパターン

 Retryパターンは、コードが呼び出そうとするサービスの一時的な中断を処理するための手法だ。このような中断、つまり一過性の障害は、数秒以内に解決することが期待できる。Retryパターンは、失敗したリクエストをサービスに再送することで、一過性の障害を処理する。再試行の間隔や、例外を発生させるまでの回数を設定することができる。

  • Azure SDK

 ほとんどのAzureサービスとそのクライアントSDKは、ビルトインのリトライメカニズムを備えている。このメカニズムを使用して、リトライパターンの実装を迅速化する必要がある。

 以下は、Azure SQL DatabaseへのリクエストでRetryパターンを適用するEntity Framework Coreのビルトインメカニズムの例だ。

services.AddDbContextPool<ConcertDataContext>(options => options.UseSqlServer(sqlDatabaseConnectionString,
    sqlServerOptionsAction: sqlOptions =>
    {
        sqlOptions.EnableRetryOnFailure(
          maxRetryCount: 5,
          maxRetryDelay: TimeSpan.FromSeconds(3),
          errorNumbersToAdd: null);
    }));

 Entity Framework CoreのDbContext(この場合はConcertDataContext)を継承するクラスをASP.NET Coreの依存性注入コンテナに追加する際に、このようなコードを記述することがある。初期化オプションには、一過性のデータベースエラーが発生した場合、最大5回(maxRetryCount)再試行し、各試行間で3秒待つ(maxRetryDelay)ことを指定する仕組みが組み込まれている。

Circuit-breakerパターン

 Circuit-breakerパターンはリトライパターンと併用する必要があります。Circuit-breakerパターンは、一過性でないエラーを処理する。このパターンを使用する目的は、アプリケーションがダウンしているサービスを繰り返し呼び出すのを防ぐことだ。

 Circuit-breakerパターンは、Pollyで実装することができる。

パフォーマンスの向上

 アプリケーションは、データストアに保持された情報への繰り返しアクセスを改善するためにキャッシュを使用する。データストアからキャッシュにオンデマンドでデータをロードすると、パフォーマンスが向上し、キャッシュに保持されているデータと基礎となるデータストアのデータとの間で一貫性を維持するのに役立つ。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。