EC運営に役立つミドルウェアの役割や種類について
インターネットを用いたサービスやwebページを構築する際、知っておいたほうが徳とされるのはそれらを支えるシステム面での知識です。
システム運用や保守に関しては各分野に応じたインフラエンジニアに任せきりというケースも少なくありませんが、それはひとえに知識が専門的であるがゆえに彼らへ頼らざるを得ないということが前提として考えられるでしょう。
エンジニアとの意思疎通を図るためにも、ある程度の前提知識は身につけておくと連携を取る上でも役に立つことは多いものです。
今回はサーバの運営には欠かせないミドルウェアについての一般的な知識や、実際の機能についてご紹介します。
【目次】
ミドルウェアがOSとアプリケーションの間に挟まってやることで、webブラウザ上におけるフォームの送信や、動的なNATOのページにおけるwebサーバーを通じた応答許可など、まさにインフラとしての重要な役割を果たしてくれるというわけです。
ハードウェアはいわゆるサーバやコンピュータ本体のことを指しており、ミドルウェア・ソフトウェアはその内部に含まれます。いわゆるコンピュータの身体そのものとも言えるでしょう。
また、実のところミドルウェアはソフトウェアに分類されます。ソフトウェアはミドルウェアとアプリケーションの両方を説明する際の大まかなくくりとしても用いられるキーワードで、ソフトウェアをさらに細かく見ていくときにミドルウェアとアプリケーションという区別が付けられます。
同じ「~ウェア」と名のつくワードですが、この点はしっかりと区別しておくとシステム運用の理解がしやすくなるでしょう。
ただ、オペレーティングシステムだけではアプリの複雑な動作を実現させることは難しく、あくまでアプリを解釈するための基本的な機能にとどまっています。そこでミドルウェアをOSとアプリの間に挟んでやることで、特定の処理や複雑な動作を支持することができるようになるというわけです。
このような関係性を取り持つ役割から、ミドルウェアがインフラとして重要な意味を持っていると言えるでしょう。
そしてミドルウェアは単体ではなく、サーバにインストールすることで初めてその機能を発揮します。
クライアントサーバシステムはポピュラーです。私たちが普段利用しているwebページもWebシステムと呼ばれるwebブラウザを通して閲覧することができていますが、これもクライアントサーバシステムによってもたらされる機能の一つです。
クライアントとなる端末に専用のアプリケーションをインストールしておかなくともサービスを利用できるようになるこのサーバシステムは非常に汎用性が高く、Webブラウザさえあれば誰でも閲覧できることを可能にした点は大きいと言えるでしょう。
そしてクライアントサーバシステムを支えているのがWeb3層構造と呼ばれる仕組みです。この層はWebサーバ、アプリケーション(AP)サーバ、データベース(DB)サーバの三つによって成立しており、どれだけ大規模なシステムになったとしてもこの三層構造がベースとなっていることが多いのも特徴です。
仮にWeb、アプリケーション、データベースを全て一台のサーバーで行なっている場合、一つのサーバにアクセスできてしまえばそのまま情報も抜き取ってしまうことができるようになるため、運用コストは小さく抑えられるかもしれませんが重大な脆弱性を抱えてしまうことになります。
一方、Web3層構造を採用した場合、DBサーバにたどり着くまで二つのサーバを経由する必要があり、仮に不正アクセスが行われても情報の抜き取りには厚いサーバ層を抜けていく必要があるため、その何度は格段に向上します。
なんでもないデータを扱う分にはわざわざ3層にする必要はありませんが、企業など組織でサーバを運用する際にはこちらの3層構造を活用することが賢明とされているのです。
セキュリティにも強く、災害にも強いからこそWeb3層構造は愛用されていると言うことができます。多少運用コストや導入には手間がかかりますが、大規模システム構築には欠かせないと言うのはこういったメリットを持っているからなのです。
次に各章でそれぞれのサーバについて説明していきます。
ただwebサーバはデータベースサーバなどに比べると優先順位が低いと見積もられることも多いため、アプリケーションサーバと併用でシステムが構築されることもあります。
APサーバはWebサーバのリクエストに可能な限り応えますが、複雑なリクエストが送られてきた場合に単体ではその要求に応えることが出来ないケースも存在します。その際にはデータベースサーバにAPサーバがさらにリクエストを行い、必要に応じた回答をそこから得るように設計されています。そこからAPサーバはWebサーバのリクエストの求める回答に返答を行うと言う手続きが行われています。
APサーバはWebサーバの処理要求に応えますが、場合によってはAPサーバが処理に必要なデータをDBサーバに要求するのが一般的な三層のシステムです。
もう一つはTomcatと呼ばれるアプリケーションサーバです。こちらもオープンソースとして公開されているもので、Apache Web Serverのプラグインとして利用される機会も多いサーバになります。
DBサーバがデータを操作する際、アプリケーションサーバからの要求に応答する形で行い、データベース言語のSQLを使用します。DBサーバが返すのはAPサーバから要求されたデータのみで、例えそのデータに関する情報が複数ストレージに存在しても、リクエスト以上の返答は行いません。
インフラエンジニアがサーバを扱う中でもっとも力を入れることになるのがこのDBサーバで、チューニングと呼ばれる効率の良いデータ抽出に向けた施策を様々講じることになります。
オープンソースとして公開されているDBサーバにはPostgreSQLと言うものもあります。LinuxやApache Web Serverと連携して用いられることが多く、商用システムの代わりとして採用されるケースも最近では目立ちます。
バックアップを取得しておくことで、障害が発生した時などでも迅速な復帰が行えるようになるでしょう。
システム運用や保守に関しては各分野に応じたインフラエンジニアに任せきりというケースも少なくありませんが、それはひとえに知識が専門的であるがゆえに彼らへ頼らざるを得ないということが前提として考えられるでしょう。
エンジニアとの意思疎通を図るためにも、ある程度の前提知識は身につけておくと連携を取る上でも役に立つことは多いものです。
今回はサーバの運営には欠かせないミドルウェアについての一般的な知識や、実際の機能についてご紹介します。
【目次】
ミドルウェアとは
ミドルウェアはミドル(中間、middle)という名が付けられている通り、オペレーティングシステム(OS)とアプリケーションの中間の役割を果たすソフトウェアのことを指しています。通常、OSが直接アプリケーションを動かす術を持っていないため、何らかの補助システムを導入することでOSがアプリケーションを動かすためのサポートをしてやる必要があります。ミドルウェアがOSとアプリケーションの間に挟まってやることで、webブラウザ上におけるフォームの送信や、動的なNATOのページにおけるwebサーバーを通じた応答許可など、まさにインフラとしての重要な役割を果たしてくれるというわけです。
ハードウェア・ソフトウェアとの違いは?
一般的によく耳にするのはハードウェア・ミドルウェア・ソフトウェアの三種類ですが、コンピュータシステムはハードウェア・ OS・ミドルウェア・アプリケーションの四層構造で動作すると説明されることが多いです。ハードウェアはいわゆるサーバやコンピュータ本体のことを指しており、ミドルウェア・ソフトウェアはその内部に含まれます。いわゆるコンピュータの身体そのものとも言えるでしょう。
また、実のところミドルウェアはソフトウェアに分類されます。ソフトウェアはミドルウェアとアプリケーションの両方を説明する際の大まかなくくりとしても用いられるキーワードで、ソフトウェアをさらに細かく見ていくときにミドルウェアとアプリケーションという区別が付けられます。
同じ「~ウェア」と名のつくワードですが、この点はしっかりと区別しておくとシステム運用の理解がしやすくなるでしょう。
OSについて
オペレーティングシステム・通称OSもまたソフトウェアの一種で、アプリケーションを動作させる際のベースとなることから基本ソフトウェアとも呼ばれます。アプリはそのままでは動作させることはできないため、OSによってアプリがどのような言語を用いているかを解釈し、そのハードウェアにおいてうまく機能するようにとりはからうために必要となるのです。ただ、オペレーティングシステムだけではアプリの複雑な動作を実現させることは難しく、あくまでアプリを解釈するための基本的な機能にとどまっています。そこでミドルウェアをOSとアプリの間に挟んでやることで、特定の処理や複雑な動作を支持することができるようになるというわけです。
このような関係性を取り持つ役割から、ミドルウェアがインフラとして重要な意味を持っていると言えるでしょう。
ミドルウェアの種類について
ミドルウェアはソフトウェアの一種とはいえ、役割に応じてそこからさらに複数のカテゴリへと枝分かれしていきます。そしてミドルウェアは単体ではなく、サーバにインストールすることで初めてその機能を発揮します。
クライアントサーバシステムの仕組みとミドルウェア
サーバシステムにもいくつか種類があるのですが、現在多くの企業で採用されているのが「クライアントサーバシステム」と呼ばれるシステム構成です。クライアントサーバシステムはポピュラーです。私たちが普段利用しているwebページもWebシステムと呼ばれるwebブラウザを通して閲覧することができていますが、これもクライアントサーバシステムによってもたらされる機能の一つです。
クライアントとなる端末に専用のアプリケーションをインストールしておかなくともサービスを利用できるようになるこのサーバシステムは非常に汎用性が高く、Webブラウザさえあれば誰でも閲覧できることを可能にした点は大きいと言えるでしょう。
そしてクライアントサーバシステムを支えているのがWeb3層構造と呼ばれる仕組みです。この層はWebサーバ、アプリケーション(AP)サーバ、データベース(DB)サーバの三つによって成立しており、どれだけ大規模なシステムになったとしてもこの三層構造がベースとなっていることが多いのも特徴です。
Web3層構造が採用される理由
Web3層構造が頻繁に用いられる理由はいくつか存在します。セキュリティレベルの高さ
一つはセキュリティレベルの高さにあります。3層構造の中でも、データベースサーバは重要なデータが格納されているストレージと直結しているため、個人情報など機密に関わるデータの出入りが直接行われます。仮にWeb、アプリケーション、データベースを全て一台のサーバーで行なっている場合、一つのサーバにアクセスできてしまえばそのまま情報も抜き取ってしまうことができるようになるため、運用コストは小さく抑えられるかもしれませんが重大な脆弱性を抱えてしまうことになります。
一方、Web3層構造を採用した場合、DBサーバにたどり着くまで二つのサーバを経由する必要があり、仮に不正アクセスが行われても情報の抜き取りには厚いサーバ層を抜けていく必要があるため、その何度は格段に向上します。
なんでもないデータを扱う分にはわざわざ3層にする必要はありませんが、企業など組織でサーバを運用する際にはこちらの3層構造を活用することが賢明とされているのです。
管理がしやすくリスクに強い
また、サーバを三つに分けることで管理がしやすく、リスクにも強いと言うメリットがあります。仮にサーバ機能が停止してしまった場合、一台で複数のサーバの役割を担っている場合には原因の究明と対処が遅れてしまう可能性も高まりますが、役割ごとでサーバを分けて運用する場合、Webサーバ、APサーバ、DBサーバのどれが不具合をきたしているかを瞬時に判別し、対処することができるようになります。セキュリティにも強く、災害にも強いからこそWeb3層構造は愛用されていると言うことができます。多少運用コストや導入には手間がかかりますが、大規模システム構築には欠かせないと言うのはこういったメリットを持っているからなのです。
次に各章でそれぞれのサーバについて説明していきます。
Webサーバについて
Webサーバの役割は二つあります。一つはクライアントからの要求に対して静的コンテンツを提示すること、そして二つ目にアプリケーションサーバに動的コンテンツを要求し、そこから返ってきた結果をクライアントに示すことが挙げられます。静的コンテンツとは
静的コンテンツは誰が見ても同じものを表示するコンテンツを指しています。webページのトップに現れる写真などはこれに当てはまり、このデータはwebサーバ内のディスクに保存されます。動的コンテンツとは
webクライアントや閲覧の時間帯などによって動的に変化するコンテンツは動的コンテンツに当てはまります。ECサイトのショッピングカートなどは動的コンテンツの典型的な例と言うことが出来、クライアントからの要求のたびに新たに生成されます。Webサーバの重要性
WebサーバでポピュラーなものとしてはオープンソースのApacheがその一つと言えます。日々世界中のプログラマによって開発が続けられており、世界のNATOのサーバの60%がApache webサーバ、あるいはその派生プロダクトであるとも言われています。ただwebサーバはデータベースサーバなどに比べると優先順位が低いと見積もられることも多いため、アプリケーションサーバと併用でシステムが構築されることもあります。
APサーバについて
アプリケーションサーバ、通称APサーバはWebサーバからのリクエストに応える役割を果たします。システム上ではJavaやPHPなどで生成されたアプリケーションを実行し、上述のように動的コンテンツをリクエストに応じて提供することが可能です。APサーバはWebサーバのリクエストに可能な限り応えますが、複雑なリクエストが送られてきた場合に単体ではその要求に応えることが出来ないケースも存在します。その際にはデータベースサーバにAPサーバがさらにリクエストを行い、必要に応じた回答をそこから得るように設計されています。そこからAPサーバはWebサーバのリクエストの求める回答に返答を行うと言う手続きが行われています。
APサーバはWebサーバの処理要求に応えますが、場合によってはAPサーバが処理に必要なデータをDBサーバに要求するのが一般的な三層のシステムです。
代表的なAPサーバ
代表的なサーバとしては、一つにJBossが挙げられます。これはJavaによって開発されたオープンソースソフトウェアの総称を指しており、40以上ある多様なプロジェクトの中からwebサイトを通じて自由にダウンロードすることが出来ます。もう一つはTomcatと呼ばれるアプリケーションサーバです。こちらもオープンソースとして公開されているもので、Apache Web Serverのプラグインとして利用される機会も多いサーバになります。
DBサーバについて
データベース(DB)サーバはデータベース管理システムが稼働しているサーバのことを言います。DBサーバは直接ストレージの役割を果たすわけでなく、ストレージから要求に応じた情報を引き出したり、ストレージに新たなデータを書き込んだりすることが主な役割です。DBサーバがデータを操作する際、アプリケーションサーバからの要求に応答する形で行い、データベース言語のSQLを使用します。DBサーバが返すのはAPサーバから要求されたデータのみで、例えそのデータに関する情報が複数ストレージに存在しても、リクエスト以上の返答は行いません。
インフラエンジニアがサーバを扱う中でもっとも力を入れることになるのがこのDBサーバで、チューニングと呼ばれる効率の良いデータ抽出に向けた施策を様々講じることになります。
代表的なデータベースサーバについて
私たちが最も目にする機会の多いデータベースサーバとしては、MySQLがまず挙げられます。オープンソースとして公開されていながらそのスピードと堅牢性は折り紙つきで、国内外を問わず導入実績は多いと言えます。オープンソースとして公開されているDBサーバにはPostgreSQLと言うものもあります。LinuxやApache Web Serverと連携して用いられることが多く、商用システムの代わりとして採用されるケースも最近では目立ちます。
運用ミドルウェアについて
ミドルウェアは上で紹介したものだけでなく、それ自体が運用アプリケーションとして機能する運用ミドルウェアと呼ばれるものも存在します。運用ミドルウェアの役割
運用ミドルウェアは主に4つの役割を担うとされています。バックアップ機能
一つはバックアップで、これはデータベースサーバがなんらかの理由で動かなくなったり、データが消失してしまった際に利用されます。バックアップを取得しておくことで、障害が発生した時などでも迅速な復帰が行えるようになるでしょう。
ジョブ運用
二つ目にジョブ運用です。システムを稼働させている間は定期的なルーティンワークが発生しますが、これらは細かい作業となるため、手作業でやるには手間がかかり過ぎてしまいます。そこでミドルウェアにこの役割を命じ、ジョブを自動で行わせることによって業務の効率化を実現します。監視機能
三つ目に監視機能です。障害は万が一の発生時に備え、いち早く検知し、原因を改名する必要がありますが、ノードやリソースなど、ミドルウェアを通じて様々なプロセスをモニタリングすることで障害の発生を察知するよう努めます。高可用性(HA)クラスタ
四つ目に高可用性(HA)クラスタです。システムは常に停止することなく稼働している必要がありますが、HAクラスタはサーバの停止を避けるために冗長化を未然に防ぎ、システムの二重化を防ぎます。最後に
ミドルウェアはこれらの機能を使い分けながら、私たちのWebサービスを支える重要な役割を果たしているのです。PR:「EC-ORANGE」のパッケージ販売に加え、多くの構築ノウハウを生かした受託開発をおこないます。
>>お問合せはこちらから