ミドルウェア
ミドルウェアとは
ミドルウェア(Middleware)は、OS とアプリケーションの間に位置するソフトウェアの総称である。OS がハードウェアの制御を担い、アプリケーションが業務ロジックを担うのに対し、ミドルウェアはその中間で「アプリケーションが動作するための基盤機能」を提供する。
ソフトウェアの階層構造:
┌────────────────────────┐
│ アプリケーション(業務システム) │ ← 開発者が作るプログラム
├────────────────────────┤
│ ミドルウェア(Apache, Tomcat 等)│ ← アプリの実行基盤
├────────────────────────┤
│ OS(Linux, Windows Server) │ ← ハードウェアの制御
├────────────────────────┤
│ ハードウェア(CPU, メモリ, ディスク)│
└────────────────────────┘
なぜ SIer で重要か
SIer が構築する業務システムでは、Web サーバー、AP サーバー、DB サーバーそれぞれにミドルウェアが導入されている。アプリケーション開発者であっても、ミドルウェアの設定変更(ポート番号、タイムアウト値、ログ設定等)やトラブルシューティングに関わる場面は多い。
また、設計書やインフラ構成図には必ずミドルウェアの種類とバージョンが記載されており、それを読み解くためにも各ミドルウェアの基本的な役割を理解しておく必要がある。
基本概念
Web サーバー
クライアント(ブラウザ)からの HTTP/HTTPS リクエストを受け付け、静的コンテンツの配信やリバースプロキシとして動作するミドルウェアである。
Apache HTTP Server
最も歴史のある Web サーバーであり、1995 年のリリース以来、長年にわたって世界で最も使われてきた。SIer の本番環境では非常に高い採用率を誇る。
- モジュール構成 --- 必要な機能をモジュールとして追加・削除できる柔軟な設計
.htaccess--- ディレクトリ単位でアクセス制御や URL 書き換えを設定可能- 豊富なドキュメントとノウハウ --- 長い歴史があるため、トラブル時の情報が豊富
- プロセス駆動型のアーキテクチャで、大量の同時接続には不向きな面がある
Nginx
2004 年にリリースされた高性能な Web サーバーである。イベント駆動型のアーキテクチャにより、大量の同時接続を効率的に処理できる。
- 高性能 --- 少ないリソースで多くの同時接続を処理できる
- リバースプロキシ --- 背後の AP サーバーへのリクエスト転送が得意
- ロードバランサー --- 複数の AP サーバーへの負荷分散機能を内蔵
- 近年は SIer の現場でも Apache に代わって採用されるケースが増えている
AP サーバー(アプリケーションサーバー)
ビジネスロジック(業務処理)を実行するためのミドルウェアである。SIer の業務システムは Java で開発されることが多いため、Java 系の AP サーバーが主流である。
Apache Tomcat
Java Servlet / JSP のコンテナ(実行環境)であり、SIer の Java 開発では事実上の標準である。
- 軽量 --- 必要最小限の機能に絞っており、起動が速い
- OSS --- Apache Software Foundation が開発。ライセンス費用が不要
- 広い普及率 --- Java Web アプリケーションの実行環境として最も使われている
- Jakarta EE のフル機能は持たないが、多くの業務システムでは Tomcat の機能で十分である
WildFly(旧 JBoss)
Red Hat が開発する Jakarta EE(旧 Java EE)準拠のアプリケーションサーバーである。
- Jakarta EE 準拠 --- EJB、JMS、JPA など Jakarta EE のフルスペックに対応
- OSS --- コミュニティ版は無償。商用版は JBoss EAP として Red Hat がサポート
- Jakarta EE のフル機能が必要な大規模システムで採用されることがある
WebLogic
Oracle が提供するエンタープライズ向けのアプリケーションサーバーである。
- 高い信頼性 --- ミッションクリティカルな大規模システムでの実績が豊富
- Oracle 製品との親和性 --- Oracle Database や Oracle Fusion Middleware との統合が容易
- 商用ライセンス --- ライセンス費用が高額だが、Oracle の手厚いサポートが受けられる
- 金融系や大企業の基幹システムで使用されることが多い
ミドルウェアの比較
| ミドルウェア | 種類 | ライセンス | 特徴 | SIer での利用場面 |
|---|---|---|---|---|
| Apache HTTP Server | Web サーバー | OSS | 歴史が長く安定、モジュール拡張 | 広く利用。本番環境の定番 |
| Nginx | Web サーバー | OSS | 高性能、リバースプロキシ | 近年採用増。高トラフィック向き |
| Tomcat | AP サーバー | OSS | 軽量、Servlet/JSP コンテナ | Java Web アプリの標準 |
| WildFly | AP サーバー | OSS | Jakarta EE フルスペック | EE 機能が必要な案件 |
| WebLogic | AP サーバー | 商用 | 高信頼、Oracle 連携 | 大規模・ミッションクリティカル |
リバースプロキシ構成
SIer のシステムでは、Web サーバー(Apache / Nginx)をリバースプロキシとして前段に配置し、AP サーバー(Tomcat 等)を後段に置く構成が一般的である。
リバースプロキシ構成:
ブラウザ → [Apache / Nginx] → [Tomcat]
(Web サーバー) (AP サーバー)
ポート 443 ポート 8080
SSL 終端 ビジネスロジック
静的コンテンツ配信 動的コンテンツ生成
負荷分散
この構成により、以下のメリットが得られる。
- SSL/TLS の処理 を Web サーバーに集約し、AP サーバーの負荷を軽減
- 静的コンテンツ は Web サーバーが直接返し、AP サーバーへのリクエストを減らす
- 複数の AP サーバー への負荷分散が可能
SIer での使われ方
設計書での記載
SIer のプロジェクトでは、インフラ設計書やミドルウェア一覧に以下の情報が記載される。
- ミドルウェアの製品名とバージョン(例: Apache HTTP Server 2.4.62)
- インストール先のディレクトリ(例:
/opt/apache) - 主要な設定値(ポート番号、タイムアウト値、ワーカー数等)
- ログの出力先と形式
設定変更の場面
開発中やテスト中に、ミドルウェアの設定を変更する場面は意外と多い。
- タイムアウト値の調整(外部連携の応答が遅い場合)
- ログレベルの変更(障害調査のためにデバッグログを出力する)
- ヒープサイズの変更(OutOfMemoryError が発生した場合)
- ポート番号の変更(複数環境の共存時)
まとめ
- ミドルウェアは OS とアプリケーションの間に位置し、アプリケーションの実行基盤を提供するソフトウェアである
- Web サーバー(Apache / Nginx)はリクエスト受付と静的コンテンツ配信、AP サーバー(Tomcat / WildFly / WebLogic)はビジネスロジックの実行を担う
- SIer の Java 開発では Apache + Tomcat のリバースプロキシ構成が最も一般的である
- 各ミドルウェアの基本的な役割と特徴を理解しておくと、設計書やインフラ構成図が読めるようになる
- 設定変更やトラブルシューティングは開発者にも求められるスキルである