WEBページが表示される仕組みってどうなっているの?(Part.2) 〜負荷分散とキャッシュ サイトダウンを防ぐ方法〜

DDS匠ブログ
Web

WEB

WEBページが表示される仕組みってどうなっているの?(Part.2) 〜負荷分散とキャッシュ サイトダウンを防ぐ方法〜

WEBページが表示される仕組みってどうなっているの?(Part.2) 〜負荷分散とキャッシュ サイトダウンを防ぐ方法〜

前回は、WEBページが表示されるまでの過程と「DNS」「IPアドレス」について説明をしました。これで表示される仕組みについては、ある程度イメージできたと思います。
では次のステップに移ります。安定的な運用をするためにはどんなことが必要なのか?それはサイトがダウンしないことです。
サイトがダウンする主な原因として、機器の故障やアクセス過多によるものがあります。これを回避するために考案されたものが、「負荷分散システム」や「キャッシュ」になります。この2つについては、制作現場でもよく耳にするものになりますので、今回はこれらについて説明していきたいと思います。

負荷分散の手段

WEBサイトには、企業サイトや採用サイトなど さまざまな種類が存在します。サービスサイトなどは、特に膨大な数のリクエストに対応しなければなりません。これを安全に対処するひとつの方法として、WEBサーバーを増強しアクセスを分散させることがあります。
ここでは、代表的な2つを見ていきたいと思います。

ロードバランサー
WEBサーバーを複数設置し、ロードバランサーでアクセスする場所を振り分ける方法。
ロードバランサー
DNSラウンドロビン
DNSサーバーに複数のIPアドレスを設定し、アクセスされた順番に振り分ける方法。
DNSラウンドロビン

DNSラウンドロビンは、ロードバランサーのような機器を使用せず複数のIPアドレスをDNS設定するだけで良いので、導入時のハードルは低く抑えられます。しかしこちらの場合アクセスの順番で機械的に振り分けられるだけなので、障害が発生しても関係なくアクセスしようと試み、結果「Not Found」となることがあります。

それに対しロードバランサーは、障害や滞留の状況などを検知し、異常にも柔軟に対応でき、極力システムダウンを避けるための対処をすることができます。しかしその分導入コストは高価で、設定にも知識が必要で少々難易度が高めでもあります。

キャッシュの種類と役割

制作後の表示確認で、「ファイルを更新したのにページの表示が更新されない!」ということはよくあります。原因は、おおむね「キャッシュ」によるものです。「キャッシュ」とは、表示の際に取得した画像やCSSファイルなどをある場所に一時保管し、極力通信を抑えることで素早く表示させるための手段のことを言います。
サーバーの負担を減らしページを素早く表示させるために大変有効な「キャッシュ」には、2つの種類があります。

ローカルキャッシュ(ブラウザキャッシュ)
ブラウザの機能の一部で、PC内部に取得したファイルを一時的に保存します。
※一定量のファイルが溜まると古いものから自動的に削除されます(されているはずです)。
サーバーキャッシュ(CDN※キャッシュ)
ファイルが保存されているオリジンサーバー(オリジナルサーバー)とは別に、オリジンサーバーよりファイルをコピーして保存している(サーバー)。

ローカルキャッシュは、プライベートモードを除く全てのブラウザでこの機能があり、一度訪れたページを素早く表示することができます。表示が変わらない原因は、このキャッシュ機能が強いためで、ブラウザのキャッシュを強制的に削除することで表示を更新することができます。

またサーバーキャッシュは、オリジンサーバーのアクセス負荷を軽減しキャッシュより必要なファイルを素早く返すことができます。

こちらのデメリットとして、オリジンを更新したあとにキャッシュされるまでのタイムラグがあることと、削除するにも時間がかかるということがあります。これは世界中に張り巡らされた膨大なネットワーク内にキャッシュが存在しており、全てに浸透するまで時間がかかるためです。サーバーキャッシュを使用する場合は、更新する内容が本当に正しいものか念入りに確認して対応するようにしましょう。

※…Content Delivery Network(コンテンツデリバリーネットワーク)の略。過去にリクエストされたファイルをキャッシュ化し配信するネットワークシステム。

WEBサイトの特性に合わせ最適な方法を考える

WEBサイトを安全かつ効率よく運用するための「負荷分散」や「キャッシュ」ですが、必ずしも全てのサイトに対して必要ということではありません。導入するためには費用や知識が必要なので、まずは下記3つの観点から考え、必要なものだけを取り入れると良いと思います。

  1. どのくらいの通信量が見込まれるか(平常時、MAX時)
    同時接続数について平常時とMAX時でどのくらいあるか、過去のデータから予測し対策が必要かどうかを検討します。MAX時だけサーバーを強化することもできるので、レンタルサーバーのプランや許容限界値を確認し見込みの予測値と比較し検討するようにしましょう。
  2. 負荷分散が必要か
    サービスサイトなど常時アクセス数が多いサイトや一時的に多くなることが見込まれる場合は、負荷分散をすることでパフォーマンスが不安定にならないようにします。サイトを停止させないための導入コストが妥当か、判断をしなければなりません。
  3. キャッシュを取るべきか
    CMSなど動的にページを生成するものは、生成後のHTMLなどをキャッシュしておくことで、オリジンサーバーの負荷を軽減し表示スピードのアップも期待することができます。

まとめ

前回、今回と2回にわたり説明した内容は概略で基本的な部分のみですが、ひとまずこのくらいの知識があれば問題ないかと思います。

DDSの業務はフロントエンド側の作業がメインですが、裏側の仕組みを知ることで視野が広がり、システム全体を俯瞰して見られるようになることも大事なことだと考えております。それにより、サイトで現在何が起きていて何が課題になっているのか、問題を解決するためにフロントエンド側では何ができるのか、より良いサイトにするために何が必要か、各自で考え改善の提案につなげることができるからです。
OJTでは、コーディングや業務知識の向上を中心に行っていますが、クライアントからのさまざまな要望や問い合わせに答えるためにも、今回のような補完的な知識も必要に応じて先輩達がフォローしています。
各々が蓄積してきたさまざまな知識を共有し、お互いが切磋琢磨できる組織を理想とし、これからも日々精進していきたいと思っています。


デザイン&デベロップメントスタジオについて「もっと詳しく知りたい!」という方は、Wantedlyのページにより詳しい情報が載っていますので、ぜひ覗いてみてください。また、直接社員と話せる『カジュアル面談』のお申し込みも可能です。お気軽にご連絡ください。

株式会社デジタルスケープの会社情報 - Wantedly

株式会社デジタルスケープ デザイン&デベロップメントスタジオ 高杉 充
株式会社デジタルスケープ
デザイン&デベロップメントスタジオ
高杉 充

2005年よりWEB業界に入り、未経験ながらOJTで1年ほど数社のサイト更新を経験した後、以降はグローバルメーカーやWEB証券会社のサイト運用など大手から中小企業まで様々な案件にWEBコーダー・フロントエンドエンジニアとして携わる。現在は、フロントエンドエンジニア・ディレクターとして、サイトリニューアルやお客様先常駐案件などの提案から制作・運用までを担当。
コミュニケーションを通して信頼関係を構築し、安心して働ける環境でメンバーと共に成長することが何よりの喜びです。