0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ハッカソン個人備忘録㉛:FastAPI + ALB 環境における Nginx の役割を再考してみた

Posted at

はじめに

FastAPIを用いたバックエンドAPIの構築において、Nginxを併用すべきかどうかは、利用する環境によって異なると思っています...。

個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。

本記事では、AWS環境でアプリケーションロードバランサー(ALB)を使用している場合に、Nginxの使用が必要かどうかを整理します。

※本内容は個人的な備忘録としての調査メモであり、今後さらに検証や調査を深めていく予定です。

結論

ALBを使っている場合、Nginxでリバースプロキシを構成する必要は基本的にないと考えています。ALB自体がNginxの主要な役割を担ってくれるのではないかと思っています。

FastAPI + ALB の構成イメージ

[Internet]
    ↓ (HTTPS)
[AWS ALB]  ← HTTPS終端・ルーティング・ヘルスチェックなど
    ↓ (HTTP)
[EC2 / ECS / Fargate などで動作する FastAPI + Uvicorn or Gunicorn]

ALBが担う主な機能(Nginxの代替)

機能 Nginxの場合 ALBで代替できるか
HTTPS終端(SSL証明書管理) 可能 可能(ACMと連携)
リバースプロキシ 可能 可能
負荷分散(ロードバランス) 可能 可能(ALBの標準機能)
ヘルスチェック 可能 可能
URLベースのルーティング 可能 対応
静的ファイル配信 可能 不可(別途S3推奨)

静的ファイルの配信について

Nginxでは静的ファイル(画像、CSS、JSなど)を高速に配信できますが、AWS環境ではCloudFront + S3の組み合わせを用いることで、より優れたパフォーマンスとスケーラビリティが得られるのではないかと思っています。

ベストプラクティス

目的 推奨構成
動的APIの提供 FastAPI + Uvicorn または Gunicorn + Uvicorn
リバースプロキシ、SSL終端 ALBの利用を想定しています
静的ファイル配信 S3 + CloudFrontが効果的だと思われます
高度なカスタム制御が必要な場合 必要に応じてNginxを追加する選択肢もあると思います

まとめ

  • ALBを利用している場合、基本的にNginxは不要ではないかと考えています。
  • HTTPS終端、負荷分散、ヘルスチェックなどはALBが担えると考えています。
  • 静的ファイルはS3 + CloudFrontで処理するのが効率的だと思います。
  • 独自の細かな制御を行いたい場合にのみ、Nginxの併用を検討する形になるのではと思います。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?