サーバーの種類について学ぼう

こんにちはマクロロです。今回はサーバーの種類について簡単に基礎を習得する記事を書こうと思います。

「〜サーバー」ってよく聞くけど正直どんものなのかピンとこないな〜。いろんな種類がありそうだし。。

そうだよね。最初の頃は、なんだか抽象的でわかんないし、色んな種類のサーバーがあるから混同しちゃうよね。

サーバーとは

簡単に言うとサーバーとは、何かしらのコンテンツやデータ、情報などを提供するコンピューターです。

サーバーのイメージとしては自動販売機みたいな形の機械で、命令を計算するCPUやデータを一時的にデータを保存するメモリ、長期的に保持するストレージなどの部品からなるハードウェアです。(私たちが使ってるパソコンもサーバーと同じような部品を含んでいるのでサーバーとしても使うことができます)

簡単な使用例で言うと、私たちが何らかしらのプログラミング言語で書いたソースコードをサーバーで起動させることで、アプリケーションサーバーになり、サーバーにMySQLなどのミドルウェアをインストールすれば、データベースサーバーになります。

ここで一番注意して欲しいのが物理的な面から捉えた「〜サーバー」はみんな同じ自動販売機みたいな機械で、ハードウェア自体はどれもほとんど変わりはありません。アプリを動かしてたら、アプリケーションサーバーだし、DBのミドルウェアをインストールしてたらデーターベースサーバーだし、バッチ処理をするスクリプトを動かしているサーバーならバッチサーバーって呼ばれてるだけです。

そこで今回は、色々なサーバーについて簡潔に概要を述べていきます。

まず、その前に「〜サーバー」は以下の4つの捉え方があることを理解してください。

  • サーバーの機能・役割種類
  • サーバーの提供体系種類
  • サーバー提供技術種類
  • サーバーの物理的な種類
  • ここがごっちゃになってると、どの概念のサーバーの説明をしているのかわからなくなるので、ここの理解は大切です。

    おそらくサーバーの概念が上手く掴めていない人はここの4つの棲み分けがごっちゃになっているので、サーバーを何だかフワフワした物に捉えてしまうのだと思います。

    それでは細かくそれぞれのサーバーをみていきましょう。

    サーバーの機能・役割別

    まずは「機能・役割の種類」の側面からみたサーバーの種類を見ていきましょう。

    機能・役割とはそのサーバーが何らかしらのサービスやシステムの中でどのような機能や役割を提供しているサーバーなのかという側面でのお話しです。

    webサーバー

    まずは、アプケーションには欠かせないwebサーバーです。こちらのサーバーはユーザーからのリクエストを受け取り、バックエンド側にその処理を渡します。そして、裏側でアプリケーションサーバーのなどがデータの加工などの処理をした結果を再び受け取り、ユーザー側にその情報を返すサーバーです。

    イメージで言うとユーザーとアプリケーションの窓口に当たるようなサーバーです。ApatchやNginxなどのミドルウェアをインストール・セットアップしたサーバーをwebサーバーと呼ぶことが多いです。

    アプリケーションサーバー

    アプリケーションサーバーはみなさんがrubyやpython、javaなどのコードで作成したアプリケーションが動作するサーバーです。webサーバーから送られてきた、リクエストデータをパース(解析)してDBへデータを格納したり、取り出したりの操作をし、そのデータをまたwebサーバーに返したりします。

    データベースサーバー

    データベースサーバーはMySqlやPostgreSqlなどのミドルウェアをインストールして、データを厳格に管理するためのサーバーです。何かしらのサービスでは、アプリケーションサーバーから発行されたSQLを元にして、データを加工して格納したり、データを抜き出したりを効率的・正確にするためにデータを保存しておくところです。

    メールサーバー

    続いてはメールサーバー。メールサーバーは主にメール送信用のSMTPサーバーと受信用のPOP3サーバー。そして後述で説明するDNSサーバーの3つで主に構成されているサーバー郡をまとめて指すことが多いです。

    基本的なメール送信手順として、「AさんがSMTPサーバーにメールを送信」→「SMTPサーバーがDNSサーバーに送り先のPOP3サーバーのIPアドレスを問い合わせる」→「再びSMTPサーバーがその情報を元にPOP3サーバーにメールを送信」→「POP3サーバーからBさんがメールを引っ張ってきて閲覧」。実際はもっと複雑ですが、イメージ的にはこんな感じです。

    ファイルサーバー

    ファイルサーバーは名前の通りファイルや何かしらのデータを複数台のパソコンから共有できるようにするためのファイル管理サーバーです。最近ではよくNAS(Network Attached Storage)と比較されています。どちらもファイルを保存、共有する点では同じ物ですが、カスタマイズ性や用途によって若干機能が異なります。

    ファイルサーバーと言うと聴き慣れないですが、Google Driveなどもファイルサーバーの一種と考えていいと思います。ネットワーク越しにファイルやドキュメントなどを共通できる物だと考えれば良いでしょう。

    FTPサーバー

    FTPサーバーは今まで紹介したサーバーとは少し違って一段抽象的なサーバーです。まずFTPとは(File Transfer Protocol)です。プロトコルなので、一種の通信ルールのことです。具体的な使用例として、ブログを公開する際にこのFTPを使うことがあります。

    まず、記事を公開する際に自分が書いた文章やPHPなどのリソースはブログサーバーにおいてあります。そこで例えば、何かの証明書やファイルなどをそのブログサーバーに送信する際にこのFTPという通信を使ってファイルを送信します。この際よくFTPクライアントとして「FileZilla」などのFTPクライアントを使い、ファイルを受信する側、つまりブログサーバーの方をFTPサーバーといいます。つまりこの例では、FTP通信される際にブログサーバーがFTPサーバーであるということです。ちょっとややこしいですね。

    ディレクトリーサーバー

    ディレクトリサービスを提供しているサーバーをディレクトリサーバーと呼びます。ファイルを格納する「あのディレクトリ」とは別物なので注意してください。ディレクトリサービスとはLDAP(Lightweight Directory Access Protocol)という通信ルールを利用して、同一ネットワーク内の複数のコンピューター情報(IPアドレスなど)を一元管理するサービスです。マイクロソフトの「Active Directory」などが有名ですね。

    DNSサーバー

    DNSサーバーは名前解決をしてくれるサーバーです。名前解決とは様々な意味で使われることが多いですが、ここではIPアドレスとドメイン名を相互に結び付けて管理することだと解釈してください。

    例えばブログだと、ブログに関連するリソースが置いてあるブログサーバーのIPアドレスとユーザーがブラウザで検索する際に利用するドメイン名とを管理しているみたいなイメージです。IPアドレスとドメイン名が一対一で関連づけられている表みたいなものを保持しているサーバーと考えれば理解しやすいです。

    キャッシュサーバー

    キャッシュサーバーは、CDN(Content Delivery Network)という技術と一緒に勉強すると分かりやすいと思います。(CDNの細かい説明は省きます)キャッシュとは一時的にデータを保持して置くことです。

    例えば、テレビの通販でタイムセールを行った際にその時間だけ応募サイトが混雑して繋がりにくくなると思います。そこで、元々コンテンツを提供しているサーバー(オリジンサーバー)の前にその時間だけキャッシュサーバーを複数台用意して、オリジンサーバーと同じコンテンツをすぐにユーザーに返却したりして、負荷軽減や高速レスポンスを可能にしてくれる存在です。

    バッチサーバー

    バッチサーバーはその名の通り、バッチ処理を行うためのサーバーです。一日おき、数日おきに一回何らかしらのまとまった処理を実行するためのスクリプトなどを動作させるために用意するサーバーです。

    バッチ処理は定期的に重たい処理を実行することが多いため、webアプリなどではよくメインサーバーと切り離して用意することが多いです。メインサーバーとバッチ処理を一緒にするとお互いが干渉しあってしまう可能性などもあります。

    DHCPサーバー

    DHCP(Dynamic Host Configuration Protocol)を利用して、同じネットワーク内に存在するコンピューターに、ネットワーク利用で必要な設定を自動的にしてくれるサーバーです。新しく同じネットワークの仲間になる新人コンピューターさんにインターネット接続できるよう、いろいろ設定してくれる親切なサーバーだと思ってください。

    認証サーバー

    認証サーバーも名前の通り、認証を専用にするサーバーです。一般的なwebサービスなどはユーザーのパスワードやメールアドレスなどを使い、バックエンドで認証処理をすることが多いと思います。しかし、複雑で大規模なシステムなどは認証情報管理・処理を認証サーバー専用で設けて一元管理したり、外部からアクセスされた際にいたずらされないようセキュアなネットワーク領域に置かれることが多いです。

    SSHサーバー

    SSHサーバーはSSH接続される側のサーバーです。最近だと、AWSでEC2を立てて、そこにSSH接続することがあると思います。その際、その対象のEC2インスタンスをSSHサーバーと呼びます。

    SSHとは(Secure Shell)という通信ルール、すなわちプロトコルの一種であり、通信を暗号化してセキュリティを高めた通信です。SSH以前はtelnetという通信プロトコルがよく使用されていましたが、SSHが登場するとその使い道はだんだんと無くなってきてしまいました。telnetがセキュリティの面でより技術向上したのがSSHとういうプロトコルです。

    プロキシサーバー

    ブロキシサーバーとはネットワークの出入り口に設置するサーバーのことです。プロキシサーバーを設置するメリットとしては、外部からの接続を解析して特定の制限を設けたり、逆に自分のコンピュータのIPなどを隠して外部にアクセスするためにも使われます。そのほかにもキャッシやロードバランサーとしての機能も持ち合わせています。

    ちなみにプロキシとは「代理」という意味で、サーバの前において色々代理で処理してくれるサーバーというイメージからきているのでしょう。(たぶん)

    サーバーの提供体系

    続いてはサーバーの提供体系についてです。上記では、サーバーに色々なミドルウェアやアプリケーションを設置することで様々なサービスや機能を享受できることが分かりました。

    では実際に自分がサーバーを使って何かしたい際にどのようにサーバーを利用すればいいのでしょうか?

    サーバーに限らずですが、主に以下の二つの方法があります。

  • サーバーを借りる
  • サーバーを買う
  • まずは借りる方のレンタルサーバーから説明します。

    レンタルサーバー

    まずはレンタルサーバーです。その名の通りサーバーをレンタルする、DVDなどと一緒で借りるということです。

    契約するプロバイダーによると思いますが、サーバーマシンのCPUやメモリなどのスペックに従って月額いくらか払うような料金体型が多いでしょう。

    さらに、レンタルサーバーの中でさらに種類があります。

    専用サーバー

    専用サーバーはプロバイダーからサーバ機器、すなわち自動販売機を一人で、丸ごと使わせてもらうことができます。メリットとしては、自分専用なのでサーバーを好きなようにカスタマイズできたり、サーバー機器全てのリソースを全て使えるので、大量のリクエストを捌いたりなど、とにかく安定的に稼働させることができます。一方、後述する共有サーバーなどと比較するとその分費用がかさみます。

    共有サーバー

    共有サーバーは専用サーバーとは対で、一つのサーバーを複数人で共有して使用する形態です。普段個人でアプリケーションやブログなどを運営する分にはあまり気にすることがないですが、やはり一つのサーバーを複数で共有しているので、他の人のアプリケーションの影響を受けたり、機密性の高いデータなどを扱う場合はセキュリティ的にも脆弱になりやすいので、利用する際は用件に合わせて選択するべきです。

    クラウドサーバー

    クラウドサーバーは名前の通り、AWS、GCP、Azureなどのクラウドサービスから利用するサーバーです。クラウドサーバーを今回ここの区域に分類するのに少し迷いましたが、こちらもレンタルサーバーの一種と考えていいでしょう。クラウドでは、コンソール画面やAPIから、専用サーバーにするのか共有サーバーにするのか選択できることが多いです。

    保有サーバー

    保有サーバーという言葉はあまり使わないと思いますが、、今回は説明のため、物理的に保有しているサーバーという意味で使います。そのままですが、こちらはレンタルと違って、自分の完璧な所有物にする利用体系です。従来のオンプレミスサーバーなどはこの形態で、自社のデータセンター内にサーバー機器を設置して運用していくというかたちです。また、各個人でもサーバーを買っておうちに設置することもできます。

    自社サーバー

    クラウドが登場するまでは、多くの企業が自社にデータセンターを保持して、自社独自のアプリケーションを稼働させていました。現在の多くの企業がこのように自社サーバーを保持しています。(中小企業や大企業、web系はほとんどクラウドです。)

    自宅サーバー

    自宅サーバーは個人で保有するサーバーです。最初の方に少し述べましたが、自分のPCもサーバーとしての役割を持たせることは可能です。しかし、スペック的にも用途的にもサーバーに適したコンピューターではないのであまりそのような使い方はしないと思います。自宅サーバーとして代表的なのはワークステーションと呼ばれる高性能コンピューターや、ラズベリーパイなのどの安価な小型コンピューターですね。

    サーバー提供技術種類

    続いて、サーバーの提供技術です。大きく分けて以下の2つの形態があります。

    ベアメタルサーバー

    ベアメタルサーバーとは何もソフトウェアなどがインストールされていない物理サーバーのことです。実際ベンダーや使用されるコンテキストなどによっては若干意味が違うことがありますが、基本的な概念としては上記のように認識して問題ないでしょう。

    ベアメタルとは「むき出しの金属」という意味があるらしいですが、よくわからないですね。。現在ではクラウドからもこのベアメタルサーバーを使用できます。(提供してないベンダーもあります。)基本的にベアメタルサーバー はスペックが高いコンピュターリソースが使われているので、ミッションクリティカルな重要なアプリの稼働に向いている物理的なサーバーです。

    仮想サーバー

    仮想サーバーは最近流行のサーバー利用体系です。複数のサーバーをハイパーバイザなどので一つの仮想的なサーバーに見立てて、コンピュータリソースを無駄なく効率的に使用できるような技術です。逆に一つの物理的なサーバーを複数のサーバーに見立てて、論理的な区画で切り分けたりすることも可能です。

    現在では、コンテナなどの仮想化技術も流行ってきているのでこちらのワードと一緒に覚えておくのが良いと思います。ベアメタルとは対で、名前の通り仮想的なサーバーです。

    サーバーの物理的な種類

    最後に物理的なサーバー機器の種類の説明です。

    タワーサーバー

    タワーサーバーは最も基本的な業務用サーバーです。形状はデスクトップパソコよりひとまわり大きいぐらいです。中小企業などの業務用ワークロードを処理する際に、社内に1、2個設置します。デスクに乗るぐらいの大きさなのでそこまでスペースをとるような大きさではいです。

    ラックサーバー

    ラックと呼ばれる棚にサーバーを積んで運用するサーバーです。私たちが想像する自動販売機みたいなサーバーがラックサーバーです。またサーバーだけでなく、ネットワーク機器、ストレージ機器なども一つのラックで管理できるので物理的な保守性にも優れています。

    ブレードサーバー

    ブレードサーバーはブレードと呼ばれる、薄っぺらいサーバーが何層も集合して設置してあるサーバーです。小さいサーバーが互いに分離しているので不具合なのどで故障した際に原因追及がしやすいなどのメリットがあります。

    まとめ

    今回は様々な角度からサーバーの概要を描いてみました。ざっくりとした説明しかしていないので、余力がある方は上記のワードでより深くリサーチするとさらにしっくりくると思います!

    今回説明した以外にもまだ「〜サーバー」はあると思います。その際もどの層のサーバーの話しをしているのかをしっかり見極めることが大事だと思います。

    Saas, Paas, Iaasとは前のページ

    RailsからGolangを習得する際の壁次のページ

    関連記事

    1. プログラミング

      jQueryの基本を学ぼう

      こんにちは、まくロロです。アニメーションを実装する際によく使…

    2. プログラミング

      railsにreactを導入してみよう

      最近、自分で作っているポートフォリオがあるのですが、フロントをオシャ…

    3. プログラミング

      react-reduxの基礎

      こんにちは、マクロロです!季節も巡り、もうすぐ夏がきますね。。…

    4. プログラミング

      これから伸びる言語Golangを習得しよう。

      こんにちは、まくロロです。私は現在、主にrailsを使用した…

    5. プログラミング

      Gitとは?Gitの概念を理解しよう

      こんにちは、まくロロです。今回は、Gitの概念を説明していき…

    6. プログラミング

      GCPの基本概要

      今回はGCP(Google cloud platform)について基…

    コメント

    1. この記事へのコメントはありません。

    1. この記事へのトラックバックはありません。

    最近の記事

    PAGE TOP