LASSIC Media らしくメディア
ミドルウェアとは|種類と役割をわかりやすく
「サーバ構成図や見積書に『Webサーバ』『APサーバ』『DBサーバ』という言葉が並んでいるが、それぞれが何を担っているのか、正直なところ判然としない」——IT事業部でベンダーからの提案書を確認する立場にいると、こうした場面に行き当たることが少なくないのではないでしょうか。エンジニアとの打ち合わせで「ミドルウェアのバージョンをどうするか」という話題が出ても、その言葉が指す範囲があいまいなまま、判断だけを求められることもあるでしょう。ミドルウェアは、アプリケーションのように画面や機能として目に見える存在ではなく、OSのように意識されることも少ないため、発注者やPMにとって理解しづらい領域になりがちです。しかし、この部分の選定や運用体制は、システムの応答速度や障害対応のしやすさ、将来の保守コストに直結する要素でもあります。提案されたインフラ構成の妥当性を見極めるには、個々の製品名を覚えるより先に、ミドルウェアという分類そのものの考え方を押さえておくほうが実務的といえるでしょう。本記事では、特定の製品を導入する手順ではなく、ミドルウェアという分類がそもそも何を指すのか、どのような種類と役割があるのか、発注や運用の場面で押さえておきたい観点を順に整理していきます。専門用語をすべて覚える必要はありませんが、構成図に出てくる言葉が「何を担っているか」という粒度で理解できていれば、ベンダーからの説明を聞くときの解像度は大きく変わってくるはずです。ベンダーとの会話や構成図を読み解くときの土台として、役立てていただければと思います。
ミドルウェアとは何か
ミドルウェアとは、OS(オペレーティングシステム)とアプリケーションの中間に位置し、多くのアプリケーションが共通して必要とする機能をまとめて提供するソフトウェアです。「ミドル」という言葉の通り、ハードウェアやOSという土台と、業務ロジックを担うアプリケーションという上物の、ちょうど間に挟まる層と捉えるとイメージしやすいでしょう。
たとえばWebシステムを例にすると、リクエストを受け付ける仕組み、データベースへの問い合わせを処理する仕組み、複数のアプリケーション間でメッセージをやり取りする仕組み、利用者が本人であることを確かめる仕組みなどは、業務ロジックそのものではないものの、ほとんどのシステムで必要になるものです。これらをアプリケーションごとに一から作り込むのは非効率で、共通する部分をあらかじめソフトウェアとして切り出しておいたものがミドルウェアだと考えると理解しやすいでしょう。仮にミドルウェアという層が存在しなければ、開発者は画面ひとつを作るたびに、通信の受け付けからデータの保存、複数ユーザーからの同時アクセスの捌き方までを個別に組み上げる必要に迫られます。共通機能を肩代わりする層があることで、開発者は業務ロジックの実装に注力できる、という関係性がここでの要点です。
OS・ミドルウェア・アプリケーションという3層で捉えると、OSはハードウェアを制御し計算資源を管理する基盤の層、ミドルウェアはその上でアプリケーション開発に共通する機能を肩代わりする層、アプリケーションは業務固有のロジックを実装する層、という役割分担になります。この3層構造を意識しておくと、ベンダーから提示される構成図の見え方も変わってくるはずです。「このアプリケーション特有の機能なのか、それとも多くのシステムで共通して使われる基盤の機能なのか」を切り分けて考える視点は、構成の妥当性を判断する手がかりになります。次の図は、この3層の位置関係を単純化したものです。
組織の中の役割分担にたとえると、OSは建物や電気・通信といった設備を維持する総務のような存在、ミドルウェアは複数の部署で共通して使う経理システムや人事システムを提供する管理部門、アプリケーションは各事業部が自分たちの業務のために使う個別のツール、という対応関係で捉えることもできるでしょう。管理部門が担っている業務を各事業部がそれぞれ抱え込めば、同じような仕組みを部署ごとに重複して抱えることになりかねません。ミドルウェアが担っているのは、こうした重複を避けるための「共通の下支え」だと考えると、実務の感覚に近づけて理解しやすくなります。
ミドルウェアの種類と役割
ミドルウェアと一口に言っても、担う役割によっていくつかの系統に分かれます。製品名から入ると混乱しやすいため、まずは役割の単位で捉えるのがおすすめです。代表的な種類と役割を表に整理しました。
| 種類 | 担う役割 |
|---|---|
| Webサーバ | ブラウザなどクライアントからのHTTPリクエストを受け付け、静的ファイルの応答や後段の処理への橋渡しを担う入り口です。 |
| アプリケーションサーバ | 業務ロジックを実行する環境を提供し、Webサーバから渡された処理を実際に動かす役割を担います。 |
| データベース管理システム(DBMS) | データの登録・検索・更新をまとめて管理し、複数のアプリケーションから一貫した手順でデータを共有できる仕組みです。 |
| メッセージング(メッセージキュー) | アプリケーション間でメッセージを非同期にやり取りする仕組みを提供し、処理タイミングのずれを吸収する役割を担います。 |
| キャッシュ | よく使われるデータを一時的に保持し、データベースなど後段への問い合わせ回数を減らして応答時間を短くする仕組みです。 |
| 認証基盤 | ユーザーやシステム間の認証・認可をまとめて処理し、各アプリケーションが個別に認証機能を実装する手間を引き受けます。 |
表に挙げた種類はいずれもシステムの一部として組み込まれることが多く、ひとつのシステムの中に複数の種類のミドルウェアが同時に稼働しているのが通例です。個々の製品名を覚えることよりも、自社のシステムがどの役割を、どのミドルウェアに任せているのかを把握しておくことのほうが、発注や運用の判断では意義を持つはずです。たとえば障害報告を受けたときに「これはDBMSの問題なのか、それともキャッシュ層の問題なのか」を切り分けられれば、対応窓口やベンダーへの連絡もスムーズになります。逆に役割の理解があいまいなままだと、報告された不具合の重大度や影響範囲を判断しにくくなり、対応の優先順位づけでつまずくことも起こり得るでしょう。なお、システムの規模が大きくなると、負荷分散を担うロードバランサーのように、ネットワーク機器とミドルウェアの境界にあたる要素が加わることもあります。すべてを厳密に分類しようとするより、役割の全体像をつかむことを優先するほうが、実務では扱いやすい姿勢といえるでしょう。
選定・運用で意識したい観点
ミドルウェアは一度導入すると長く使い続けるものであり、選定の段階で押さえておきたい観点がいくつかあります。特に発注や運用の意思決定に関わる立場からは、次の5つを確認しておくと判断がしやすくなるでしょう。
保守サポートとライセンス形態
ミドルウェアには、商用ベンダーがサポート契約とともに提供する製品と、コミュニティが開発を担うオープンソースの製品があります。商用製品はサポート窓口や障害対応の体制が契約として明確になっている一方、ライセンス費用が継続的に発生する点は見込んでおく必要があります。オープンソース製品は導入コストを抑えやすい半面、不具合対応や仕様の問い合わせを自社もしくは委託先のエンジニアが担う前提になりやすく、社内に対応できる人材がいるかどうかが運用のしやすさを左右するでしょう。発注の段階では、ライセンス費用だけでなく、障害発生時に誰が一次対応にあたるのかという体制面まで含めて確認しておく価値があります。契約書に「サポート対象範囲」として明記されているかどうかも、あわせて見ておきたいポイントです。特に複数のオープンソース製品を組み合わせて構築するシステムでは、どの製品の問い合わせ先が自社になるのかを見落としがちなので、導入前の一覧化をおすすめします。
バージョンアップとEOL(サポート終了)
ミドルウェアにもOSと同様に、サポート期限(EOL)が定められているのが通例です。サポートが切れた製品を使い続けると、脆弱性が見つかっても修正が提供されず、システム全体の弱点として残り続けることになりかねません。バージョンアップは機能追加だけでなく、既存のアプリケーションとの互換性検証やテスト工程を伴うため、計画的に進める必要があるでしょう。ベンダーやエンジニアと会話する際は、採用予定のミドルウェアのサポート期限がいつまでで、期限が来た際にどのような移行手順を想定しているかを、導入の時点で尋ねておきます。EOLを迎えた製品を放置している既存システムは案外多く、棚卸しの対象として定期的に確認する価値があるでしょう。とりわけ、開発時のメンバーが異動や退職で入れ替わったシステムほど、サポート期限の管理が誰の担当なのかがあいまいになりやすい傾向があります。
スケーラビリティ(拡張性)
利用者数やデータ量の増加に応じて、処理能力を拡張できるかどうかもミドルウェア選定を左右する観点です。台数を増やして負荷を分散する水平方向の拡張に対応しているか、それとも1台あたりの性能を引き上げる垂直方向の拡張が前提になるかによって、将来の増強の進め方やコスト構造が変わってきます。事業の成長に合わせてアクセス数が伸びていく見込みがある場合は、初期構築の段階から拡張の余地を確認しておくと、後々の作り直しを避けやすくなるでしょう。逆に、拡張の見込みが小さいシステムにまで過剰な拡張性を求めると、初期投資だけがふくらんでしまう場合もあります。想定される利用規模に見合った拡張性を選ぶ、というバランス感覚が求められるところです。将来の利用規模を正確に見通すのは容易ではありませんが、少なくとも「今後1〜2年でどの程度の増加を見込んでいるか」をベンダーと共有しておくだけでも、提案される構成の妥当性は判断しやすくなるでしょう。
可用性と監視
ミドルウェアの一部が停止すると、その上で動くアプリケーション全体が使えなくなることがあります。冗長構成を組んで一部の停止時にも処理を継続できるようにする設計や、稼働状況・応答時間・エラー発生率を常時把握する監視の仕組みは、ミドルウェア選定と切り離せない検討事項です。監視の仕組みが整っていないと障害の予兆に気づけず、利用者からの問い合わせで初めて不具合を把握するような事態にもつながりかねません。運用フェーズに入ってから監視体制を後付けするのは手間がかさむため、選定の段階から視野に入れておくことが望ましいでしょう。監視項目をどこまで自社で見るのか、どこから委託先に任せるのかも、この段階で整理しておきたい論点です。夜間や休日の障害検知をどちらが担うのかは特に見落とされやすく、契約段階で明文化しておくと後々のトラブルを避けやすくなります。
発注・受託における責任分界
複数のミドルウェアが絡むシステムでは、障害が起きたときにどの層に原因があるのかを切り分ける作業が発生します。発注者と受託側の間で、どこまでを開発会社が保守し、どこからを利用企業が担うのかという責任分界点を、契約や運用ドキュメントの形で言語化しておくことが望ましいでしょう。役割分担があいまいなままだと、障害発生時に「どちらが対応すべきか」を確認するところから始まってしまい、復旧までの時間が延びる原因になります。責任分界図のような形で、各ミドルウェアの管理主体を一覧化しておくと、平時の説明にも障害時の初動にも使える資料になるはずです。
ここまでの5つの観点は、それぞれ独立した話ではなく、互いに関係し合っています。たとえばサポート期限が近い製品を使い続けるという判断は、責任分界があいまいなままだと「誰がそのリスクを引き受けるのか」がはっきりしないまま先送りされがちです。逆に、ライセンス形態や拡張性を検討する段階から運用体制まで含めて話し合っておけば、後になって想定外のコストや作業が発生する事態は起こりにくくなります。発注側としては、この5つを一枚のチェックリストのような形で持っておき、提案を受けるたびに照らし合わせる、という運用が現実的な進め方です。
選定の注意点
ミドルウェアの選定で陥りやすいのが、「大手が使っているから」「有名だから」といった理由だけで製品を決めてしまう進め方です。知名度のある製品であっても、自社のシステム規模や求める性能要件、社内エンジニアの習熟度に合っていなければ、機能を持て余したり、逆に扱いきれずに運用負荷が増したりすることがあります。選定にあたっては、要件との適合度、保守を担う体制、既存システムとの連携のしやすさといった観点から比較検討する進め方が現実的でしょう。なお本記事は、特定のミドルウェア製品の導入・設定手順を解説するものではなく、ミドルウェアという分類の考え方と、それぞれが担う役割に焦点を当てています。個別製品の細かな設定を検討する段階では、公式ドキュメントや導入実績のあるベンダーへの確認が別途必要になるでしょう。要件定義の初期段階でこの分類の考え方を共有しておくと、ベンダー各社から提出される提案の比較もしやすくなるはずです。逆に、知名度だけを頼りに導入した結果、想定より高機能すぎる製品を持て余し、運用の複雑さだけが増してしまうというケースも見られます。規模や要件に見合わない過剰な機能は、コストだけでなく学習負担も押し上げる要因になり得る点は、留意しておきたいところです。
リクエストの流れで見る具体イメージ
ミドルウェアの役割は、実際のリクエストの流れに沿って追うとつかみやすくなるものです。利用者がブラウザで社内システムの画面を開いたときの一例を、簡略化して挙げてみましょう。
利用者のブラウザ
→ Webサーバが リクエストを受け付ける
→ アプリケーションサーバが 業務ロジックを実行する
→ DBMSに 問い合わせて必要なデータを取得する
(よく使われるデータであれば キャッシュから応答することもある)
→ アプリケーションサーバが 結果を組み立てる
→ Webサーバを経由して ブラウザに画面が表示される
この流れの中で、Webサーバ・アプリケーションサーバ・DBMS・キャッシュはいずれもミドルウェアであり、業務ロジックそのものを実装しているわけではありません。業務固有の処理はアプリケーションサーバ上で動くプログラムが担い、その前後を支える共通の仕組みをミドルウェアが引き受けている、という分担を意識すると、構成図の読み解きがしやすくなるでしょう。障害が起きた際にどの層で処理が止まっているのかを推測する手がかりにもなります。画面がまったく表示されないのか、表示は速いのに検索結果だけが遅いのかといった症状の違いからも、どの層に負荷がかかっているかをある程度絞り込めるものです。たとえば「入口の画面はすぐ開くが、検索を実行すると応答が遅い」という報告があれば、Webサーバ自体よりもDBMSやキャッシュ周りに目を向けるほうが早く原因にたどり着けることも多くあります。こうした切り分けの発想は、障害対応の一次報告を受ける立場の担当者にとっても、状況を整理するうえで助けになるはずです。
まとめ
- ミドルウェアは、OSとアプリケーションの中間に位置し、多くのアプリケーションが共通して必要とする機能を提供するソフトウェアです。
- Webサーバ、アプリケーションサーバ、DBMS、メッセージング、キャッシュ、認証基盤など、担う役割によっていくつかの種類に分かれます。
- 選定・運用では、保守サポートとライセンス形態、バージョンアップとEOL、スケーラビリティ、可用性と監視、発注・受託の責任分界といった観点を押さえておく必要があります。
- 知名度だけで製品を選ぶのではなく、要件や運用体制との適合度から検討する視点が求められるでしょう。
- 本記事は特定製品の導入・設定手順ではなく、ミドルウェアという分類の考え方と役割の整理を狙いとしています。
- リクエストの流れを追うと、Webサーバ・アプリケーションサーバ・DBMS・キャッシュが連携しながら1つの画面表示を支えていることが確認できます。
ミドルウェアの種類は多岐にわたり、自社のシステムにどの製品が適しているか、社内だけで比較検討するのは時間のかかる作業でしょう。LASSICでは、要件のヒアリングからミドルウェアの選定、既存システムの構成見直し、保守体制の設計まで、インフラ構成の検討段階からご相談を承っています。サポート期限が迫っている製品の移行や、責任分界があいまいなまま運用されているシステムの整理についても対応可能です。既存システムのどこにどのミドルウェアが使われているかを棚卸しするところから伴走することもできます。構成図を前にして判断に迷う段階からでも、お気軽にお声がけください。
よくある質問
ミドルウェアとOSやアプリケーションは、どのように区別すればよいですか。
OSはハードウェアを制御し計算資源を管理する層、アプリケーションは業務固有のロジックを実装する層です。ミドルウェアはその中間に位置し、多くのアプリケーションで共通して必要になる機能をあらかじめ提供する層と捉えると区別しやすいでしょう。ある機能が特定の業務にしか使われないのか、それとも多くのシステムで繰り返し必要になるものなのかを考えると、どちらの層に属するかの見当がつきやすくなります。迷ったときは「この機能を他のシステムにも流用できそうか」を自問してみると、判断の助けになるはずです。逆に「この画面でしか使わない特殊な計算処理」のようなものは、ミドルウェアではなくアプリケーション側の業務ロジックに分類されると考えれば整理しやすいでしょう。
中小規模のシステムでも、ミドルウェアの種類を意識する必要がありますか。
規模が小さいシステムでも、Webサーバやデータベースを利用していれば、ミドルウェアはすでに組み込まれています。将来的に利用者数が増えたり、他システムとの連携が必要になったりする場面では、初期に選んだミドルウェアの拡張性やサポート期限が制約になることもあるため、小規模な段階からある程度は意識しておいたほうが、後々の作り直しを避けやすいでしょう。立ち上げ期は費用面を優先しがちですが、数年後の利用規模もあわせて見込んでおくと、選定の後悔は減らせるものです。
オープンソースのミドルウェアと商用製品、どちらを選ぶべきですか。
一概にどちらが優れているとは言い切れず、社内やパートナー企業に対応できるエンジニアがいるか、障害発生時の一次対応をどこが担うかによって向き不向きが変わります。ライセンス費用を抑えたい場合はオープンソース、サポート体制を契約で明確にしたい場合は商用製品、というように、体制面と費用面の両方から検討する進め方が現実的でしょう。両者を組み合わせて、システムの部分ごとに使い分けている企業も少なくありません。判断に迷う場合は、まず自社の運用体制と照らし合わせ、障害時に誰がどこまで対応できるのかを具体的にイメージしてみると、選ぶべき方向性が見えやすくなります。
ミドルウェアのバージョンアップは、どのくらいの頻度で検討すればよいですか。
明確な頻度が定まっているわけではありませんが、採用しているミドルウェアのサポート期限を起点に、期限が到来する前から移行の検討を始めるのが基本的な進め方です。加えて、脆弱性情報が公開された際には、サポート期限内であってもパッチの適用を随時検討する運用が望ましいでしょう。年に一度など、定期棚卸しのタイミングを決めておくと、対応漏れは起こりにくくなります。担当者の異動があっても引き継げるよう、棚卸しの記録を残しておく運用も定着させておきたいところです。
著者:テレリモ総研編集部 鈴木 亮佑
LASSICでは、国内ニアショア開発体制を活かし、Webサーバやアプリケーションサーバ、データベースといった各種ミドルウェアの選定から構築、運用保守までを一貫して支援する体制です。既存システムの構成見直しやサポート期限切れ製品の移行、監視体制の整備など、インフラまわりの課題についてもご相談いただけます。要件定義の段階から実装、テスト、リリース後の運用・保守まで、工程を分けずに任せられる点も強みでしょう。ミドルウェアの選び方や役割分担に迷う段階からでも、ご相談ください。