Webマーケティング2021.03.31
目次
Webサイト、Webサービスを構築するときに、アプリケーションサーバということばを聞いたことがある人は多いと思います。しかし、サーバ、Webサーバ、アプリケーションサーバなど様々なことばがあり、何を指しているのか分からないことも多いのではないでしょうか。
今回は、Webサーバとアプリケーションサーバについてまとめました。また、なぜWebサーバとアプリケーションサーバという切り分けが必要なのかについて「Web3層構成」という構成を基本に説明します。
サーバとは何か
サーバということばが、ハードウェアを示す場合とソフトウェアを示す場合があり、サーバの理解をしづらくしています。
今回の記事で「Webサーバ」と「アプリケーションサーバ」という言葉は、ハードウェアではなく、それぞれの機能を持つソフトウェアとして使います。
Webサーバとアプリケーションサーバの違い
Webアプリケーション(Webサイト、Webサービス)の動作の流れ
Webブラウザのリクエストに対して、Webサーバは動的な処理が必要なければデータ(HTML、CSS、JavaScript、画像など)を返します。動的な処理が必要な場合には、モジュールを通してプログラムを実行したり、アプリケーションサーバにリクエストを送り、返ってきた結果をWebブラウザに返します。
Webサーバは何をするのか
3層構成の場合には、動的な処理が必要な場合に、アプリケーションサーバへリクエストを送り、受け取った結果をWebブラウザに返します。
旧来の2層構造の場合には、モジュールなどを通して、Javaやphp、Rubyなどを実行し、結果をWebブラウザに返します。
アプリケーションサーバは何をするのか
アプリケーションサーバはWebサーバから受け取ったリクエストをもとに、Javaやphp、Rubyなどを実行し、Webサーバに結果を返します。
よく使われるWebサーバ、アプリケーションサーバ
Webサーバ
Apache、nginx 、IIS(Internet Information Services)の3つが有名です。
楽天市場ではapache、Yahoo Japanではnginx、MicrosoftではIISが利用されています。
アプリケーションサーバ
Javaのアプリケーションサーバ
Tomcat、GlassFishが有名です。
Ruby on Rails環境のアプリケーションサーバ
Unicorn、Thin、Rainbows、Pumaが有名です。
Web3層構成とは
現在、多くのWebサービスは「Web3層構成」という設計で作られていることが多いです。
Web3層構成は、次の3つの層で構成されています。
Webサーバ層
Webブラウザからのアクセス要求を処理する層を示します。必要に応じて、Webアプリケーション層へリクエストを要求します。
ウェブアプリケーション層
Webサーバから受けたリクエストをもとに、バックエンドで動作するJavaやphp、Rubyなどを実行したり、データベースへのアクセスを行ない、処理を行ないます。
データベース層
入力したデータや、アプリケーションで参照するデータを保管する役割を持ちます。
なぜ3層の構成で設計されるのか
コスト面のメリット
それぞれの層が1つのソフトウェアである場合、システムを更新する場合に、いずれかの層のみに問題があった場合でも、全てを変更する必要があり、莫大なコストがかかってしまいます。3層構成にすることで、それぞれの機能を分離し、変更できるため、更新のコストを削減することが可能になります。
パフォーマンス面のメリット
サービスの安全性を保つ上でのメリットもあります。例えば、ECサイトでは、商品の情報を表示、ユーザが商品を選択、決済して注文を確定するといったフローがあります。これらを処理するには、Webサイトを表示するための処理の安定性、認証や個人情報の保護などのセキュリティ面の確保が必要となります。
かつては、全てをWebサーバに処理させていました(2層構成)が、それでは負荷がかかりすぎてしまうため、Webサーバとアプリケーションサーバの2つに分離することで、大量の処理が可能となりました。
例えば、Javaの場合はアプリケーションサーバであるtomcatのWebサーバの機能を使って、apacheなどのWebサーバと連携しない構成を取ることも可能です。しかし、Javaでの処理が不要なものもtomcatで管理してしまうと、レスポンスが遅くなってしまいます。
HTMLや画像などの静的なものはtomcatを通さずにWebサーバが処理し、動的なコンテンツのみtomcatが処理を行なうことで、処理を分離し安定させることが可能になります。
まとめ
現在では主流となっている3層構造は、1つのソフトウェアが処理するのではなく、2つに切り分けられる処理をそれぞれ異なるソフトウェアで実行することでパフォーマン向上を目指しています。また、改修の際、それぞれの層ごとに対応できるとのもコスト面でのメリットが大きく、3層構成が主流となっている理由のひとつです。
2層構成におけるWebサーバは、3層構成におけるWebサーバ+アプリケーションサーバと同じ役割をします。
エンジニア以外でも、Webサーバがどのような処理を行なっているのか大枠を知ることで、外注する際のコミュニケーションがスムーズにとれるようになります。
Webサービス開発やWebデザインなどを学びたい方におすすめのスクール
【TECH::CAMP(エンジニアスクール)】
Webサービスやアプリの開発について一から学びたい方は、TECH::CAMP(エンジニアスクール)で体系的に学ぶのもおすすめです。未経験の方向けにも学習コースが用意されており、受講をきっかけに様々な業界で活躍する方が多くいます。
学習できるカテゴリは「Webサービス開発」「iPhoneアプリ開発」のほかに、「VR・3Dゲーム開発」「オリジナルサービス開発」「デザイン」「AI(人工知能)」などがあります。
関東や中部、近畿には学習用の教室があり、モチベーションを維持しやすいよう配慮されています。
未経験の方向けの説明会・体験会が無料で開催されていますので、興味のある方は上のリンクから詳細を確認するとよいでしょう。