はじめに
Java一年未満の方へ研修用
JavaでWEBアプリケーションを構築して行く際に、なくてはならない
Apache、Tomcatに関して少し掘り下げて紹介
対象
・Java一年未満
Apacheとは
・Webサーバ用のソフトウェア。
正式名称はApache HTTP Server。
世界中で最も使用されているWebサーバソフトウェア。
Webサーバとは
・ブラウザからのHTTPリクエストに対して、HTMLファイルなどをレスポンスとして返してくれるサーバのこと。
Tomcatとは
・アプリケーションサーバのこと。
・Java Servletを動かす時に使うソフトでWebコンテナのこと(サーブレットコンテナとも言う)
・簡易的なWebサーバとしての機能も持っている
・正式名称はApache Tomcatという
アプリケーションサーバとは
・Webシステムにアプリケーションプログラムを動作させるサーバのこと。
※Webシステムは、「Webサーバー」「アプリケーションサーバー」「データベースサーバー」の3層構造になっており、アプリケーションサーバーはWebサーバーから受け取ったリクエストに基づいてJavaやPHP、Rubyなどを実行し、Webサーバーに処理の結果を返す。
ApacheとTomcatは何が違うのか?
・ApacheはWebサーバだが、Tomcatも簡易的なWebサーバとしての機能を持っている。
Apacheって必要ないと思いませんか??
一般的なWebシステムを図で表すと
上記の図からわかること
・クライアントはWebサーバにリクエストを送るため、最初に受けるのはApache(ApacheとTomcatがある場合)
・リクエストに対してApacheからWebアプリケーションを動作させるための実行環境(アプリケーションサーバ)であるTomcatへ必要な処理を要求する
・DBとTomcatの間にjavaが有り、そのjavaがDBをたたきにいっている。(TomcatがDBを叩くわけではない)
飲食店で例えると。。。
・Apache:ホール担当のバイト。
・Tomcat:キッチン、ホールもできる店長。
・クライアント:お客さん
Apacheがない場合
・Tomcatさんがお客さんからの注文(クライアントからのリクエスト)を受けるホールもやりつつ、調理(クライアントへのレスポンス)もやることになる。
→クライアントからの少ない注文には対応できる。
たくさんのリクエストが来た場合
・当然、Tomcatに負荷がかかり、レスポンスが遅くなり、最悪ダウンしてしまう可能性がある。
・そういった場合、Apacheを入れることで、サーバの負荷を分散させ、Tomcatには処理に専念してもらえる。
→サーバの負荷を軽減することで、js、HTML、CSSなどの静的コンテンツの高速化ができる。
ApacheとTomcatの違いとは
★Apache
役割:リクエストを解析すること
・特定IPアドレスの場合フィルタ(リクエストを許可/拒否)する
・特定URLの場合リダイレクトさせる
・特定URLの拒否
・SSL化による通信の暗号化
・リクエストに応じて特定のサーバへ処理を振り分ける
など
★Tomcat
役割:リクエストを元に動的処理をする
・リクエスト情報を元にデータを登録する
・リクエスト情報を元に動的ページを作成しレスポンスを作成する
・リクエスト情報を元にユーザを判定し、ユーザごとに異なるレスポンスを作成する
など
まとめ
・ApacheとTomcatは役割がそれぞれある。
・リクエストが多くないシステムやツールを作る際はTomcatのみでもよい。
・大規模なものになるとApacheもあった方がよい。