こんにちは、サトハルです。
以前ご紹介した Azure Load Testing ではクラウドのマシンを使って普通のPC一台では考えられないような大きな負荷をWebアプリに対してかけることができます。
一方、度々ご紹介している Azure Static Web Apps はエッジ負荷分散をはじめ多くの技術により「待機時間を大幅に短縮」と謳っております。
どちらもここ数年にできたばかりの「今が旬」なサービスです。
そんなわけで(?) 突然ですが、始まりました Azure ほこ×たて。
絶対に落とす(とは言ってないけど)負荷をかける Azure Load Testing
vs
絶対に落ちない(とは言ってないけど)高可用性の Azure Static Web Apps
ヤラセなしでやっていきましょう
レギュレーション
- 表示するのはvueのデフォルトサイト
- APIへのアクセスなども一切なし
- Load TestingサイドのJMeterの設定は以下の通り
- スレッド数(ユーザー数):250人
- Ramp-Up期間(何秒かけて指定ユーザー数まで増やすか):25秒
- ループ回数(1ユーザーが何回実行するか):500回
- Load Testingのインスタンス数は1,10,45の三段階を候補とし、敗北した場合に数を増やして再挑戦する
- Static Web Apps サイドは、最初はフリープランで挑むが敗北した場合はスタンダードプランにして再挑戦する
- 勝敗はエラー率などを元にレフリー(僕)が判断する
1試合目
Load Testing:インスタンス数1
Static Web Apps:フリープラン
結果
429エラーが発生、初戦はLoad Testingの勝利となりました。
(1分半の間に12万件のアクセスが来たのに75%は捌けてる時点ですごい気もするけど……)
2試合目
Load Testing:インスタンス数1
Static Web Apps:スタンダードプラン
エラー件数0、Static Web Appsの勝利です!!
フリープランとスタンダードプランでクォータ制限に差があるんですね。
公式の違いをまとめた表だと載ってないので知らない方も多いのはないでしょうか。
参考:Azure Static Web Apps ホスティング プラン | Microsoft Docs
3試合目
Load Testing:インスタンス数10
Static Web Apps:スタンダードプラン
結果
3分20秒の間に123万件のアクセスを行ってるのですが、捌けてますね……
3試合目はStatic Web Appsの勝利です!!
1,230,000件/200秒 = 6150件/秒
これ以上は先にバックエンドやDBが死ぬと思うので十分以上な性能な気がしますね。
4試合目
Load Testing:インスタンス数45
Static Web Apps:スタンダードプラン
最終戦です。
お互い上限いっぱいの力を出し切っての戦いの結果は……
エラー率54%…… Load Testingの勝利です!!
1万ユーザー以上の過剰なアクセスには流石に耐えられなかったようです。
まとめ
結果としては2勝2敗の激戦となりました。
簡単な操作で1万ユーザー分の負荷を作成できたAzure Load Testingと、秒間6000件のリクエストを捌けることが判明したStatic Web Appsの両者に拍手を送りたいと思います。
今回の例は現実には即してないので、一つのエンタメとして楽しんでもらえれば幸いです。