はじめに
JavaでWebアプリケーションを開発していると、
- 「Tomcatって何?」
- 「Spring Bootだとサーバーいらないの?」
- 「組み込みサーバーって何?」
といった疑問にぶつかることがあるかと思います。(私はぶつかりました...)
この記事では、
外部サーバーと組み込みサーバーの違いを解説します。
結論
- 外部サーバー → 「サーバーにアプリを置く」
- 組み込みサーバー → 「アプリの中にサーバーが入っている」
外部サーバーとは?
構成図
特徴
- サーバー(Tomcatなど)を事前にインストール
- WARファイルを配置して動かす
- サーバーとアプリが分離している
起動の流れ
- Tomcatを起動
- アプリが読み込まれる
- Webアプリとして動作
組み込みサーバーとは?
構成図(Mermaid)
特徴
- サーバーがアプリの中に含まれている
- JARファイル1つで動く
- サーバーのインストール不要
起動方法
java -jar app.jar
起動の流れ
- アプリ起動
- 内部でTomcat起動
- ポート開放
- Webサーバーとして動作
違いを比較
| 項目 | 外部サーバー | 組み込みサーバー |
|---|---|---|
| サーバーの場所 | 外部(別で存在) | アプリ内部 |
| デプロイ方法 | WARを配置 | JARを実行 |
| 起動方法 | サーバー起動 | アプリ起動 |
| 環境構築 | やや面倒 | 簡単 |
| 主流度 | レガシー | 現在の主流 |
Spring Bootの場合
build.gradle
implementation 'org.springframework.boot:spring-boot-starter-web'
この設定により、
- Tomcat(組み込み)
- Spring MVC
- JSON処理
などがまとめて追加されます。
つまり、
👉 Tomcatがライブラリとしてアプリに組み込まれる
内部のイメージ(もう一歩深く)
なぜ組み込みサーバーが主流になったのか?
① 環境構築が楽
- サーバーインストール不要
- バージョン差異がなくなる
② デプロイが簡単
- JARを実行するだけ
③ クラウドと相性が良い
- Docker化しやすい
- スケールしやすい
実務での構成例
まとめ
- 昔:サーバーにアプリを載せる
- 今:アプリがサーバーを持つ
👉 この違いが「組み込みサーバー」
おわりに
この考え方は、
- Docker
- AWS(EC2 / ECS)
- マイクロサービス
などの理解にもつながる重要なポイントです。
保守案件などで既存システムに触れる機会があると
サーバーをインストールすることも多いので
個人的にはどちらも触れおくのは無駄でないのかなと思います!