データベースの話をする予定だったけど…
情報構造論は、先日のB木の説明をした所なので、 データベースの一般的な話をする予定だったが…
Webサービスとデータベースと負荷分散
でも、一般的なWebシステムでの負荷分散の話を知ってて 欲しかったので、 (1)大量のユーザの相手を負荷分散で処理するWebサーバ、 (2)そのWebサーバの裏でデータベースの処理をする スレーブ・データベース・サーバ、 (3)そのスレーブサーバの中核となるマスターデータベースサーバ の3段構成となっていることなどを説明する。
また、こういったWebシステムでは、早急なサービス提供開始が 必要となるから、安価なLAMP(Linux+Apache+MySQL+PHP)の コンピュータシステムで実現することが多いことを説明する。
LAMPシステムでサービスを開始すると、サービス提供の最初であったり、 システムが話題になったりと、インターネットでの情報によって、 サービス利用者は増減する。しかし、利用者が増えてサービス性能が 低下するのを防ぐ場合には、コンピュータの増設が必要となる。
仮想コンピュータ
しかし、物理的なコンピュータの増設は、管理の手間や導入費用、 さらに利用者が減った際に、遊休のコンピュータができるなど、 問題も多い。そこで、最近のコンピュータは1台の中に、 複数のCPUを持っていることから、仮想サーバ機能で、 必要な時に必要な量のコンピュータを一時的に借りるなどの 方法が取られる。
この際に、出来上がったソフトウェアを借りる(SaaS)、 プログラムを動かす基盤を借りる(PaaS)、 仮想コンピュータのCPU,MEM,HDD,NETを借りる(IaaS)などの 方式がある。
様々なプログラム言語
このWebサービスを動かすにあたり、 サーバ側であれば、PHPやPerlといったプログラム言語が使われたり、 Java等が使われる。そのデータ処理で、SQLなどの言語も使われる。
一方でクライアント側では、昔であれば静的なHTMLページを 記述したけど、ページ遷移は全画面同時に起こるため、 操作性が悪い。このため、以前であれば Java が使われた。 しかし、Java はブラウザの中の特定枠の中で動かされ、 ブラウザと連携するのは困難であった。そのため、JavaScriptなどが 開発され、画面の必要な部分だけ通信しながら処理を行う AJAX技術が発達してきた。それに合わせ、HTML5や画面レイアウト の記述であるCSSなどの考え方も重要となってきた。 そうすると、CSS,JavaScript,HTMLなどを自分で組合せて記述するのは 大変なので、jQueryなどのライブラリが普及してきた….