はじめに
自分は普段、GCPの Cloud Run にDockerコンテナをデプロイ する形でサイトを運用しており、いわゆるサーバーレス環境 に慣れすぎていました。そのため、Webサーバーを意識することがほぼありませんでした。
しかし、ある案件で NGINX を使った環境 に触れる機会があり、Basic認証を設定する 必要が出てきました。そこで初めて 「Webサーバーってどうやって動いてるんだっけ?」 という疑問にぶつかり、試行錯誤することに。
これを機に、サーバーレス環境とWebサーバー(NGINX・Apache)の違い を整理し、記事にまとめました。
1. サーバーレス環境とは?
そもそも「サーバーレス」って?
「サーバーレス」とは、物理サーバーや仮想サーバーを意識せずにアプリを動かせる環境 のことです。ですが、「サーバーがない」わけではなく、GCPではクラウドの裏側でGoogleがサーバーを管理してくれている だけです。
GCPにおけるサーバーレスの例
GCPのサービス | サーバーの管理 | 使い方のイメージ |
---|---|---|
Cloud Run | サーバー管理不要 | Dockerコンテナをデプロイするだけ |
App Engine | サーバー管理不要 | コードをアップロードするだけ |
Cloud Functions | サーバー管理不要 | 特定のイベントで関数を実行 |
Cloud Run は Dockerコンテナをデプロイするだけで動くため、Nginx や Apache を意識しなくてもサイトを運用できる のが大きな特徴です。
2. Webサーバー(NGINX・Apache)を使う環境とは?
Webサーバーの役割
サーバーレスとは異なり、従来の環境では 「Webサーバー」 を使ってWebサイトを公開します。Webサーバーは、ブラウザからのリクエストを受け取り、適切なデータを返す役割 を持ちます。
代表的なWebサーバーとして、
- NGINX(エンジンエックス)
- Apache(アパッチ)
の2つがあります。
NGINXとApacheの違い
NGINX | Apache | |
---|---|---|
処理方式 | イベント駆動(軽量・高速) | スレッド駆動(1つ1つ処理) |
向いている環境 | 大規模サイト、負荷が高いAPIサーバー | 小規模なサイト、レンタルサーバー |
設定のしやすさ | 設定ファイルがシンプル |
.htaccess で柔軟な設定が可能 |
リバースプロキシ | ◎ 優秀(よく使われる) | △ そこまで得意ではない |
今はNGINXが主流で
Apatchを使うのは下記の時です
- .htaccessを使うとき
- WordPressを使用するとき(プラグインや設定がApache向けのものが多い)
- 古いシステムのサポートが必要
3. サーバーレス環境とWebサーバー環境の使い分け
サーバーレス(Cloud Run) | 仮想マシン + NGINX | |
---|---|---|
運用の手間 | ✅ サーバー管理不要 | ❌ 自分で管理が必要 |
スケール | ✅ 自動で増減 | ❌ 自分で設定が必要 |
細かい設定 | ❌ NGINXの細かい設定不可 | ✅ 設定自由 |
コスト | ✅ 使った分だけ課金 | ❌ ずっと起動していると高い |
例えば、
- 「サーバー管理をしたくない!」 → Cloud Run
- 「細かく設定したい、負荷分散したい!」 → Compute Engine + NGINX
というように使い分けることができます。
4. まとめ
✅ GCPのCloud Runを使うと、NGINXやApacheを意識しなくてもサイトをデプロイできる
✅ しかし、従来の環境(Compute Engineなど)ではNGINXやApacheを使うことが一般的
NGINXを使わずにデプロイすることが多かったので最初は戸惑いましたが、こういうものだと知っておけば対処しやすいかと思いました