『プロになるためのWeb技術入門』の重要箇所をまとめた--Lesson5
皆様こんにちは、もしくははじめまして。IDEです。 今日の記事はLesson5についてです。 この章では、Webアプリケーションシステムの構成について学びました。 システムで使用するそれぞれの役割について理解することを目的とします。 書籍はこちらから。
「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか
- 作者:小森 裕介
- 発売日: 2010/04/10
- メディア: 大型本
目次
- データベースサーバについて
- なぜWebサーバとDBサーバを分けるのか?
- アプリケーションサーバについて
- Webサーバとアプリケーションサーバを連携するメリット
- Webシステムの三層構成
- オープンソースソフトウェア
- まとめ
データベースサーバについて
突然ですが、まず例え話から入ります。 あなたはパン屋🍞のオーナーです。店を大きくするには、商品の売れ行きの分析だったり、顧客情報だったりを詳しく分析して経営戦略に反映していかなければいけませんよね?(書籍ではピザ🍕だったのでこちらではパン🥖にしてみました。) 情報が紙ベースだった場合、集計・分析に膨大な時間と労力が割かれてしまいます。 それを一瞬で解決できるものがあります。それがコンピュータです。 情報の検索や集計を高速に行うデータベース管理システム(DBMS)を使うことで、情報の生成(Create)、読み取り(Read)、更新(Update)、削除(Delete)が可能になりました。 (ちなみにコンピュータ上で扱う情報の集合体をデータベース(DB)、アソシエーション的な、複数の表とそれらの関係を定義することで情報を管理するシステムをリレーショナルデータベース管理システム(RDBMS)といいます。一括りにデータベースと呼ぶことが多いので、どのデータベースシステムを指しているのかを把握することが大事です。)
データベースに対して欲しい情報を効率よく伝える言語をSQLと言います。 SQLについては、勉強会に参加した際の記事でアウトプットしたのでこちらをご覧ください。(記事内のリンクにある勉強会資料がわかりやすくて参考になります。)
programmingnuoh.hatenablog.com
SQL文は人が直接書く場合と、WebアプリケーションのプログラムがSQLを発行する場合があります。 後者のメリットは、HTMLに直接情報を書いた場合に起こりうる変更漏れなどを防ぐことができ、手間を省くことができます。
なぜWebサーバとDBサーバを分けるのか?
結論としては、以下2点のメリットがあるためサーバを分けます。
- 各コンピューターの仕事が分散され負荷が下がる
- 既存システムの結合が可能
1点目のメリットはそのままの意味です。1人で作業するより、2人、3人で作業した方が効率的ですよね。 2点目のメリットについてですが、そもそもデータベースそのものは、Webが広まるよりも前から利用されていました。Webの発展に伴い、インターネット経由で昔から使っていたデータベースを利用することが可能になったのです。
アプリケーションサーバについて
動的コンテンツの生成を実現していたCGI。これには性能面で問題があること、大規模システムの開発にはあまり向かないことの2点が弱点としてありました。 そこで登場したのがアプリケーションサーバです。 リクエストの度にプロセスの起動・終了を繰り返していたCGIと比べ、アプリケーションサーバは常にプロセスが実行されている「使い回しモデル」でした。 ざっくりWebサーバとアプリケーションサーバの役割を述べると…
- Webサーバ→通常のHTMLなど静的コンテンツのみで構成されるページを配置
- アプリケーションサーバ→動的コンテンツとなるWebアプリケーションを配置
一旦すべてのHTTPリクエストをWebサーバが引き受け、URLによってアプリケーションサーバが処理すべきもののみを送ることで、役割を分担しています。 この処理すべきものの判断基準は、私たち開発者が決めなければいけません。
Webサーバとアプリケーションサーバを連携するメリット
Webサーバとアプリケーションサーバは連携用のモジュールを用意して、そのモジュールをWebサーバへ組み込むことで互いの連携を可能にしています。 そのメリットは以下の2点。
- 別のノード(コンピュータ)でアプリケーションサーバを動かすことが可能(転送先のホストを変えるだけ)
- それぞれ処理内容、回数が違うため、分担する方が効率が良い(Webサーバ/静的コンテンツのリクエスト、処理は軽いがとにかく多い。アプリケーションサーバ/動的コンテンツのリクエスト、回数は少ないが一個の処理が重い)
複数のアプリケーションサーバを異なるノードに配置して役割分担をさせることも可能です。 また、ほとんどのアプリケーションサーバは最低限のWebサーバとしての機能も持っているため、連携せずとも単独で利用することが可能です。 また、その他にもアプリケーションサーバはセッション管理・トランザクション管理・データベース接続の管理・Webアプリケーションの管理とシステムの可用性・性能向上の機能などを提供しています。
Webシステムの三層構成
Webシステムは、Webサーバ・アプリケーションサーバ・データベースサーバを連携させる構成になっています。 この3つはどのノードに配置するか(まとめるのか、分散するのか)が異なるだけで開発規模の代償に関わらず、必ずこの要素が登場します。
オープンソースソフトウェア
「人類の共通財産」の考えのもと、ソフトウェアのソースコードを一般に公開しているものをオープンソースソフトウェアといいます。 逆にExcelなど、ソフトウェアを利用する権利を購入して使用するものをプロプライエタリ・ソフトウェアと言います。 オープンソースソフトウェアには一定制限(ライセンス)があります。 主にコピーレスト型、準コピーレスト型、悲コピーレスト型のカテゴリに分かれており、その範囲内で使用しなければいけません。
まとめ
今回は、Webアプリケーションを支える3つのシステムについて学んでいきました。 それぞれ役割を分担することで、負担を減らし処理の効率を上げていることがわかりました。 アプリケーションを開発していく上でどこの情報を取り出しているのかなど、イマイチ分かっていなかったことも多かったので、今回学んだシステム同士の関係性をしっかりと頭にいれていきたいと思います。 最後までお付き合いいただいた方、ありがとうございました。