見出し画像

NLBの問題と解決方法

みなさまこんにちは!エアークローゼットでエンジニアをやっているマンです。

この記事はエアークローゼットのアドベントカレンダー2023の26日目の記事となってます。

背景

まず背景としては当初、弊社はALBからNLBに移行しました。理由については、別の担当メンバーが記載した記事をご参照ください。

これからまた別の問題が発生するかもしれないと思いますが解決できればまた新しい知識が勉強になりますので引き続きよろしくおねがいします。

担当者の予測通り、問題が発生しました。具体的な問題については、以下の記事で詳しく説明しています。

問題

現在のインフラ構築は以下のようになっています。

デプロイするスクリプトを実行した後に

準備本番環境が正常であることを確認した後、次のリリーススクリプトを実行した場合、以下のイメージです。

これまでは正常に動作しているように見えましたが、実際の問題は何でしょうか。実際には、新しいソースコードを反映させるために本番のターゲットグループを新しいインスタンスに移動します。この処理にはメリットとデメリットがあります。
メリットとしては、ダウンタイムがないことです。
デメリットとしては、差し替えには時間がかかります。特にアクセスが多いタイミングでは移動に30分ほどかかることがありました。

通常のリリース時には時間がかかることは大きな問題ではありませんが、リリース後に問題が発生し、すぐにリバートしても30分かかるとなると問題です。つまり、問題が見つかってすぐにリバートした場合でも、その影響が30分ほど続くのは厳しい状況です。

時間の問題を解決するため下記のような処理を考えました。

この方法は時間的に早いですが、1または2秒でダウンタイムが発生します。結局は使用できませんでした。

改善方法

CloudFrontを導入することで、上記の問題がすべて解決しました。時間的には約2〜3分かかりますが、ダウンタイムがない状態です。

このインフラ構築が検証した結果、展開可能であることが分かりました。実際の展開はこれから予定しており、その詳細な手順は別の記事で共有する予定です。

最後に

最後まで読んでいただいてありがとうございました。
今回のNLBの問題と解決方法に関する記事は以上となります。別の記事でお会いしましょう。

また、エアークローゼットはエンジニアやデザイナーの方も積極的に募集中です。興味がある方はぜひこちらの採用特設サイトであるエアクロクエストも見てみてください。


この記事が気に入ったらサポートをしてみませんか?