サーバミドルウェアの種類と役割

インターネットではさまざまなプロトコルが利用されていますが、その背後には各プロトコルを実装したミドルウェアがあるわけです。
ここでは、Linuxベースのシステムにおける代表的なミドルウェアを紹介したいと思います。

Linuxディストリビューションについて

はじめにOSについて触れておきます。
Linuxのパッケージは『ディストリビューション』という単位で配布されています。
ディストリビューションには、そのコンセプトと用途に適したミドルウェアがセットになっています。
(WindowsやMacとは違い、Linuxには複数の選択肢があります。このセットを用途に応じて組み替えて、さまざまな目的にすぐ利用できるようにしているわけです)
最近のディストリビューションでは、デスクトップ用途ではubuntu。サーバ用途ではCENTOSが主流です。

○○サーバという単位について

私は初心者のころ、『1マシンに1つのミドルウェアが入っていて、WEBサーバならWEBサーバとして専門的に動作する』と思っていました。
実際は、1つのマシンに複数のミドルウェアをインストールすることもでき、『ApacheとMySQLとメールサーバを入れてオールインワン』などということもできます。
もちろん、セキュリティ性や管理上の観点から、目的ごとに特化させた方が好ましいです。

サーバミドルウェアのインストール方式

ディストリビューションによりますが、たとえばCENTOSの場合は、yumというコマンドで、ミドルウェアのインストールができます。
こういった、インターネット経由でパッケージのバイナリを取得するコマンドは、どのディストリビューションにも搭載されており、大変便利です。
一方、細かなカスタマイズができない、というデメリットがあります。
(インストール場所を変えたい、標準では使えない機能を有効にしたい、など)
そこで、ソースインストールという方法が必要になります。
この場合、どこからかミドルウェアのソースコードを取得してきて、手動でコンパイルを行う必要があります。
当然こちらは、それなりのスキルがないとイレギュラーな事態に対処できません。
実務ではどちらも使いますが、勉強の過程では、yumなどでインストールを行えれば十分です。
いずれにせよ、個人で試すレベルでしたら、googleでインストール手順を探してコマンドをコピペしていけば大抵なんとかなります。

WEBサーバ(HTTPサーバ)

Apacheが主流ですが目的に応じて使い分けます。(Apacheよりも機能が少なく動作が速い、Nginxが使われることがあります。このあたりは状況次第です)
サーバサイドのプログラムが実行される際は、WEBサーバ経由でプログラムが起動されます。
実務でもApacheを使いますし、基本的な設定くらいはできるのが望ましいです。

データベースサーバ(RDBMS)

メジャーなものに、MySQL、PostgreSQLなどがあります。
アプリケーションで利用するデータを保存するためのミドルウェアです。
SQLという専用の言語を使って命令を送り、データの更新や取り出しを行います。
SQLはWEBエンジニアにとって必須の技術のひとつです。
RDBMSの種類は幾つかありますが、SQL構文自体は、基本的には互換性があります。
なお近年では、MySQLの互換バージョンとして、MariaDBというデータベースも作られました。

DNSサーバ

代表的なものに、『bind』があります。
DNSは自前で用意せず、AWSのroute53などでアウトソーシングすることはできます。
とはいえ、DNSの仕組みは複雑なため、実際に構築してみないとなかなか本質的な理解ができません。
余力があれば構築してみることをお勧めします。
実務では、以下のようなケースでDNSの知識が必要になります。

  • 携帯電話へメール送信するためのSPFレコード設定
  • 名前解決で不具合があった際の原因切り分け
  • サーバ移転の際のIP変更など
  • 名前解決での負荷が発生した場合の対処

DNSの知識があれば、こんなときに活躍できるかも知れません。

KVSサーバ

通常のデータ管理ならデータベースサーバがあれば事足りますが、データベースサーバは一般に、多機能なだけに速度が課題になります。
KVS(Key Value Store)サーバを利用すると、『キーに対して特定の値を保存する』という限定した用途に限り高速に処理できるようになります。
キャッシュデータの管理や、セッション情報の管理など、シンプルな用途に適しています。
ミドルウェアとしては、『memcache』『TokyoCabinet/TokyoTyrant』などがあります。
初心者の勉強対象としては、優先度は低いでしょう。

メールサーバ

SMTPやPOPを実装したミドルウェアです。
送信メールサーバとしては、『sendmail』『postfix』『qmail』
受信メールサーバとしては、『qpopper』『dovecot』
などがあります。
送信メールサーバと受信メールサーバを組み合わせた、『vpopmail(実際はqmail)』などもあります。
バーチャル設定をすることで、1サーバで複数のメールドメインを管理することもできます。
また、WEBブラウザでメールアカウントの管理を行うためのGUIも提供されているので、必要に応じて設定すると便利です。
初心者の勉強対象としては、優先度は低いでしょう。
実務では、複数ドメインの管理をする場合はvpopmail(qmail)を使い、WebサーバのMTAとして使うレベルならpostfixになります。

クラウドサービスの利用

昨今はAWSなど、便利なクラウドサービスがいろいろと出てきました。
個人で試してみるには少々値段が張りますが、業務利用の選択肢としては優秀です。
特に、サーバをクラウド上で構築できる、AWSのEC2や、DNSの管理ができるroute53は重宝しています。
EC2については、国内で代替となるサービスが他にもありますが、国外のデータセンターを指定できる特徴があります。そのため、『国外にサービスを公開する場合は、ホップ数などを考える場合、比較的EC2が有効』と言えます。

自分でサーバ構築をする場合

WEBエンジニアとして就職を考えているようでしたら、自分でサーバを立ててアプリケーションを動かしてみることをお勧めします。
手持ちの空いたパソコンにLinuxをインストールするのが一番いいのですが、最近ではVPSを使うこともできます。
VPSを利用すると、『サーバのroot権限を取得してサーバ構築を行える』というメリットがあります。また、『専用サーバだと月間数万円レベルでかかるが、安価なVPSやクラウドサーバだと、1000円以内で運用できる』というメリットがあります。
以前はレスポンスが非常に悪かったのですが、昨今は大変よいサービスが出てきました。
今まで幾つか利用してきましたが、『ConoHa』が一番お勧めです。(このサイトもConoHaで動かしています)

ConoHaのメリット

  • 開始が手軽
  • 通信のレスポンスが良い
  • IPを複数持てる
  • サーバのテンプレートの種類が多い

『ConoHa』の次に『さくらインターネット』あたりでしょうか・・
以前使っていた某VPSでは、普通にページを表示する際に連日30秒などかかっていました。
(もちろんプログラム要因などを十分調査した上での原因特定をしました)
ですので、どのVPSを使うか迷っているようでしたら、『ConoHa』がお勧めです。
価格については900円/月~となっています。
500円/月~のプランを用意しているサービスが他社にありますので、検討してみるのもいいと思います。

このページをシェア Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn