🎉

『イラスト図解式 この一冊で全部わかるWeb技術の基本』をまとめる:後編

2024/04/09に公開

記事の目的

イラスト図解式 この一冊で全部わかるWeb技術の基本』の内容についてまとめる記事の後半です。
前半はこちらの記事です。
https://zenn.dev/tomokumo/articles/70d0fbca9a0d06

Chapter5 Webアプリケーションの基本

01 Webアプリケーションの3層構造

ネットワークを介してWebブラウザ上で動作するアプリケーションをWebアプリケーションという。
Webアプリケーションは3層構造(3層アーキテクチャ)と呼ばれる階層構造となっている。

  • プレゼンテーション層
    ユーザーインターフェース。 WebブラウザとWebサーバーが役割を担う。クライアントサイド・スクリプトが動作する。
  • アプリケーション層
        アプリケーションサーバー(APサーバー)が業務処理を行う。サーバーサイド・スクリプトが動作する。
  • データ層
    データベースサーバー(DBサーバー)がデータ処理や保管を行う。

3層に分けることには、アクセスなどサーバーにかかる負荷を分散し、問題が発生した時の改修範囲を限定するなどのメリットがある。

02 MVCモデル

サーバーサード・スクリプトの設計方針としてMVCモデルというものがある。
これはアプリケーションの扱うデータと業務処理を指すModel、ユーザーへの出力処理を指すView、必要な処理をModelやViewに伝えるControllerの各要素がお互いに独立しながら連携する構造のこと。
3層構造のうちのアプリケーション層とデータ層でMVCモデルを適用することがあり、この場合プレゼンテーション層はMVCモデルとユーザーの仲介を行う。

https://zenn.dev/tya0116/articles/c2f4b75e060187

03 フレームワーク

起動処理やエラー処理、画面表示などWebシステムにおける一般的な処理の流れを雛形として準備しておき、Webアプリケーション固有の処理を開発者が作成することでプログラム開発ができるようにしたものをフレームワークという。一つの言語に対して、幾つもフレームワークが存在しており、例えばJavaScriptならReact,Vue,Angularなどがある。

https://udemy.benesse.co.jp/development/system/javascript-framework.html

04 Webサーバー

WebサーバーはWebクライアントに対する窓口の役割を果たすプログラムのこと。
Webクライアントからのリクエストによって、静的コンテンツを配信したり、サーバーサイド・プログラムと連携して処理の結果として生成されたHTMLを転送したりしている。
Webサーバーが動作しなくなると、サービスが提供できなくなるため、Webサーバーの機器台数を多くし一台当たりの負担を少なくする冗長化という構成にすることが殆ど。

静的ページのリクエストが多い場合は、ハードディスクの読み取り速度が速くメモリの容量が大きいことが求められる。動的ページのリクエストが多い場合はCPUの性能の高さが求められる。

05 Webクライアント

Webサーバーとのやりとりを行い、Webシステムを利用するためのプログラムをWebクライアントという。
Webサーバーへリクエストを送り、Webサーバーからのレスポンスを受け取ってそれを解釈する機能を持つ。
Webブラウザが最も代表的なものだが、Webブラウザでは十分に機能を活かせないものは専用のクライアントプログラムが用意される。
スマートフォン向けのアプリや掲示板専用ブラウザなどがそれにあたり、PC用を特にデスクトップアプリ、スマートフォン用を特にスマホアプリなどと呼ぶこともある。

06 アプリケーションサーバー

Webサーバーから転送されてきたユーザーからのデータを受け取り、サーバーサイド・プログラムを実行してそのデータを加工したり、データベースのデータを検索・加工した後にWebサーバーに応答を返すなど、アプリケーション層で重要な役割を担うサーバーのことをアプリケーションサーバー(APサーバー)という。
メモリ容量やCPU性能が重視される。

アプリケーションサーバーはクライアントごとに発行したセッションIDを通信データに含めることで、同じクライアントからの通信を一つのセッションと呼ばれる単位で判別し、各クライアントのログイン状況などを把握できる。セッションが終了するとセッションIDは破棄される。

セッション中に行われる一連の作業の最小単位をトランザクションという。
HTTPの通信は1リクエスト1レスポンスで成立しており、アプリケーションサーバーはそれら複数の通信を一つのトランザクションとしてまとめて管理する機能を持っている。

07 データベース管理システム

データベースを管理する役割を担うのが、データベース管理システム(DBMS:data base management system)という。DBMSを搭載したサーバーをデータベースサーバ(DBサーバー)という。
メモリやCPUの性能、ハードディスクの読み取り速度が重要となる。

また、データ消失はユーザーに損害を与える可能性があるので、冗長化構成をとりデータ消失を対策する。
主な手法は下記の通り。

  • ミラーリング
    データの更新命令を受けたDBMSが複数のデータベースに対して同時に同じ更新を行う。
  • レプリケーション
        データの更新命令を受けたDBMSが更新内容を別のDBMSに連携し、連携を受けたDBMSが同じ内容の更新を自分の管理するデータベースに実施する。
  • シェアードディスク
    データベースを共有の機器にもち、複数のDBサーバーからそれを更新する。

08 キャッシュサーバー

WebサーバーやDBMSへの負担を減らすために、リクエストに対するレスポンスを覚えておく役割を実現するのがキャッシュサーバーというプログラム。
リクエストに対するレスポンスの記憶をキャッシュといい、文書や画像といったコンテンツのキャッシュをコンテンツキャッシュ、データの検索要求結果のキャッシュをクエリキャッシュという。

CDN(Contents Delivery Network)は、世界各地に設置されたコンテンツキャッシュサーバーで構成されるネットワークのこと。CDN全体として一台のキャッシュサーバーのように動作する。

09 Ajax

クライアントとサーバーが交互に通信を行うことを同期通信という。
同期通信を行っている際は、サーバーが処理を行っている際はクライアントは待つことしかできず、HTMLファイルを受け取ってから表示の処理を行うため、全体としてページの更新に時間がかかる。
この欠点を補うためにAjax(Asynchronous JavaScript + XML)という技術が登場した。
Webブラウザ上でクライアントサイド・スプリクトとして動くJavaScriptが直接サーバーと通信を行い、取得したデータを用いて、表示するHTMLを更新する。更新するデータのみをやり取りするため、同期通信の時よりも送信データ量が少なくなり、サーバーへの負担が減る。
また、JavaScriptの機能を使用した非同期通信が可能となり、サーバーからのレスポンスを待つ間もレスポンスに左右されないHTMLを更新するといったことができる。

※現在はAjaxに依存しない通信の方法も出てきている
https://zenn.dev/monicle/articles/the-end-of-the-ajax-heyday

10 Webプログラミング

プログラミング言語を使ってWebアプリケーションを開発することをWebプログラミングと呼ぶ。
サーバーサイドのプログラミング(リクエストの素早い処理やセキュリティの高さ、効率的なDB処理などが求められる)とクライアントサイドのプログラミング(ブラウザごとの動作の違いの吸収や非同期処理の実装などが求められる)に分けられる。

11 WebAPI

Webのクライアントがデータを送信して、サーバーからデータを返却してもらうという動作を利用して、Webを通じてユーザーではなくプログラムが直接サーバーを利用するための窓口をWebAPI(Web Application Programming Interface)という。クライアントとなるプログラムがWebAPIにWeb経由でデータを送信することで、データを受け取ったWebサーバーがデータを処理し、再びWebを経由してクライアントに処理結果のデータを返却する。
無料で使用できるAPIも多く存在している。
https://qiita.com/kazuki_tachikawa/items/7b2fead2a9698d1c15e8
https://qiita.com/danishi/items/42d8adf6291515e62284

12 マッシュアップ

プログラムが複数のWebサービスを利用し、それらの処理結果を組み合わせることで別のサービスを提供することをマッシュアップという。
例えば位置情報から取得した地図情報と天気予報情報を用いてその日着る服をお勧めするなど。
こういった提供されているWebサービスによるサービスは、提供されているWebサービスの公開が終了してしまったり公開範囲が変更したりすることで、提供できなくなることがある。

13 CGI

Webサーバーがクライアントから要求に応じてサーバーサイド・スクリプトを起動するための仕組みをCGI(Common Gateway Interface)という。あらかじめCGIプログラムとして定義されたコンテンツはそのままクライアントに返信せず、それをWebサーバーで実行した時の結果を返信する。

14 サーバー間の連携

CGIを利用せずにサーバーサイド・スクリプトを動作させる場合は、WebサーバーがAPサーバーにデータの処理を依頼し、APサーバーがサーバーサイド・スクリプトを動作させる。
サーバー同士の通信でもIPアドレスとポート番号を指定してTCP/IP通信を行う。

Chapter6 Webのセキュリティと認証

01 Webシステムのセキュリティ

Webシステムには悪意を持ったユーザーによる攻撃から守るために情報セキュリティ対策が欠かせない。
情報セキュリティは下記の情報セキュリティの三要素を維持することと定義されている。

  • 気密性
    アクセスを認められたもののみがその情報にアクセスできる状態を確保すること
  • 完全性
    情報が改竄、破壊、消去されていない状態を確保すること
  • 可用性
    必要な時はいつでもアクセスできる状態を確保すること

情報セキュリティが維持できず、何らかの損失が発生する可能性をリスクという。リスクを現実化させる要因を脅威、脅威に対する弱みを脆弱性という。

02 パスワードクラッキング、DoS攻撃

  • パスワードクラッキング
    IDとパスワードによる認証を行う会員制Webサイトからユーザーのパスワードを抜き出そうとする攻撃をパスワードクラッキングという。
    • 総当たり攻撃:英数字や記号、もしくはそれらをあわせたパスワードのすべてのパターンを入力し、解読する方法
    • 辞書攻撃:ユーザーがパスワードで使いそうな単語を辞書として登録し、その辞書を使い不正ログインを試みる方法
    • リバースブルートフォース:一つのパスワードでIDを次々と変え不正ログインを試みる方法
  • DoS攻撃
    短時間にサーバーが処理しきれない大量のアクセスを行うことで、サービスを停止させる攻撃をDoS攻撃(Denial of Service attack)という。複数のコンピューターから一斉にサイバー攻撃を仕掛けるDDoS攻撃(Distributed Denial of Service Attack)というものもある。
    • SYN Flood攻撃
      TCP接続のハンドシェイクプロセスを悪用して、サーバーを接続待ちにすることで別のユーザーからの新たな接続を確立できなくする方法
    • F5攻撃
      繰り返しアクセスし続けることで、リクエストへの反応ができないレベルまでサーバーの負荷を高める方法

03 Webシステムの特徴を利用した攻撃

  • セッションハイジャック
    第三者が何らかの手段で第三者がCookieの中身やセッションIDを取得して、ログイン済みのユーザーとしてシステムに接続してしまうことをセッションハイジャックという。
    通信を暗号化しておいたり、ユーザーが突然別のIPアドレスに切り替わった場合強制ログアウトをするなどの方法で攻撃を防ぐ。
  • ディレクトリトラバーサル
    Webで公開されていないディレクトリにアクセスすることで、Webサーバー自体のログインパスワードを取得してWebサーバーへの不正ログインなどの攻撃に繋げるディレクトリトラバーサルという手法がある。
    リクエストに含まれるURLのチェックを行い、公開していないディレクトリが指定されていないか確認することで防ぐことができる。

04 Webアプリケーションの脆弱性を狙う攻撃

  • クロスサイトスクリプティング(cross-site scripting:XSS)
    攻撃者が「脆弱性を持つWebサイトに対してスクリプトを書き込む」リンクを表示するWebページを公開し、そのリンクにアクセスしてしまうと、脆弱性のあるWEbページを介してスクリプトがユーザーのWebブラウザに送り込まれ、クライアントサイド・スクリプトとして実行されてしまう。
  • クロスサイトリクエストフォージェリ(Cross-Site Request Forgeries:CSRF)
    攻撃者が用意した「ログインが必要なサイトに対して操作を行う」リンクにユーザーがアクセスすることで被害を受ける。「本人になりすましてログインの必要なサイトを操作する」ことを目的としている。
  • SQLインジェクション
    送信する情報にDBが解釈できる内容を混ぜ込むことで、DBに意図しない動作を行わせる。

05 Webシステムの脆弱性

ソフトウェア製品の欠陥により、権限がないと本来できないはずの操作が権限を持たないユーザーにも実行できてしまったり、見えるべきでない情報が第三者に見えてしまうような不具合のことをセキュリティホールという。
セキュリティホールが発見されると、ソフトウェアの開発元はすぐに修正プログラムを開発して利用者に配布している。

※ソフトウェアの脆弱性は脆弱性情報データベースで管理され、一般に公開されている
https://jvndb.jvn.jp/index.html

発見されたセキュリティホールに対する修正プログラムが開発される前に、そのセキュリティホールを利用した攻撃をし仕掛けることをゼロデイ攻撃という。

06 ファイアーウォール

インターネットと内部ネットワークの間に設置し、送受信されるデータを監視して通信の許可・拒否を行うものがファイアーウォールと呼ばれる。
パケットフィルタ型ファイアーウォールでは、送受信されるデータ(パケット)のIPアドレスとポート番号をチェックして、通信の許可・拒否の判断を行っている。ただし、ファイアーウォールで許可してIPアドレスとポート番号を利用した通信を使っての攻撃は防げないため、他のセキュリティ対策も併せて行われることが多い。

07 IDS、IPS

IPS(Intrusion Prevention System)/IDS(Intrusion Detection System)は、どちらもファイアーウォールで防ぎきれない攻撃を防ぐ手段。
 IDSは異常があったらシステム管理者にメールで通知するが、IPSは通知だけでなく即座に該当する通信の遮断を行う。IPSの方が強固なセキュリティを実現できるが、誤検知などで正常な通信も遮断してしまうことがある。
IDSとIPSの不正アクセスの検知方法には二種類ある。

  • シグネチャ型(不正検知型)
    既知の攻撃手法における通信パターンが登録されたデータベース(シグネチャ)と監視対象の通信を比較して、シグネチャに登録されたパターンと一致する通信を不正アクセスと判断する。
  • アノマリー型(異常検知型)
    普段の通信と大きく異なる通信や、通常は発生しないような通信を不正アクセスと判断する。

08 WAF

やり取りされるパケットの中身を見て悪意のあるデータが含まれていないかをチェックするWAF(Web Application Firewal)という装置/サービスがある。
高機能である分セキュリティ効果も高いが機器やサービスの料金も効果で、運用にも手間やコストがかかる。

  • ブラックリスト型
    IDSのシグネチャ型と同じように、特定のパターン(ブラックリスト)のデータをもつ通信を遮断する。
  • ホワイトリスト型
    正常なデータのパターン(ホワイトリスト)を登録しておき、それに適合する通信のみを通しておく。高いセキュリティが期待できるが、正確なホワイトリストの作成には専門的な知識が必要。

09 暗号化

通信の盗聴不正侵入のリスクの対策として、暗号化を行う。
平文(元のデータ)を暗号化アルゴリズム(暗号化の手段)で第三者が読み取れない暗号文にするということ。受け取った暗号文を利用するために平文に戻すことを復号という。
通信経路自体も暗号化しておくと第三者に通信を盗聴されても内容が読み取られない。

パスワードのように復号しなくとも、正しいかどうかの比較に利用できれば良いものであれば、ハッシュ化して保存しておくことも一つの対策。
ハッシュ化とは、ハッシュ関数と呼ばれる計算式によって任意の長さの文字列を固定長のハッシュ値に変換する。

10 公開鍵証明書

アクセスしているWebサイトが本物であるかどうかを証明するものが公開鍵証明書というもの。SSL通信の公開鍵の証明に使われることが多いため、一般にSSL証明書とも呼ばれる。
公開鍵証明書の役割はHTTPS通信に使うための公開鍵の持ち主が誰なのかを証明すること公開鍵の持ち主が実在することを証明することである。

11 認証

会員制サイトを利用する際は、あらかじめ与えられたIDを使ってログインを行い、本人確認ができればサービスを利用することができる。この本人確認処理を認証と呼ぶ。
認証処理を提供する側は、処理の仕組みをAPIとして提供する。 認証APIを利用するサイトは、認証を行うWebアプリケーションがユーザーを認証APIに誘導し、認証APIなによら印象結果の通知をもらうことで、ユーザーのログイン情報を扱うことなく認証処理を行うことができる。
しかし、ユーザーが対象の認証API側にアカウントを持っていないとこの方式で認証することができない。
この問題を解決するために、認証処理を標準化したプロトコルがOpenIDというサービスである。

※OpenIDのサイト
https://www.openid.or.jp/

12 認可

認証によって確認した結果により、ユーザーごとの権限に従って利用できるサービスの許可を行うことを認可という。
OAuthはサイトを跨いだ認可を実現するために標準化されたプロトコルのこと。機能としては認可のみであり、認証は行わない。
クライアントがサービス(リソース)を利用するときは、リソースオーナーに許可を要求し、許可が得られればリソースサーバーに許可が得られたことの報告と、リソースを利用するときのトークン(合言葉)の発行を依頼する。リソースサーバーは許可の正当性を確認した上でトークンを発行し、クライアントは発行されたトークンを用いることでリソースを利用できるようになる。

OpenID ConnectはOAuth2.0をベースに認証機能が追加されたプロトコルのこと。現在多くのサイトで移行が進められている。

https://qiita.com/TakahikoKawasaki/items/498ca08bbfcc341691fe

13 CAPTCHA

プログラムを用いたWebサービスの悪用を防ぐために考案されたものがCAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)というテスト。
「複数の画像から犬の画像のみ選択する」「歪んだ文字を読み取る」「簡単なパズルを解く」など様々なバリエーションが用意されている。

Chapter7 Webシステムの構築と運用

01 提供するサービスの検討

  • サービスの内容
    何を提供するサービスか、どんな人を対象としたサービスか、何を使ってアクセスするサービスか、どんな時に使うサービスかなどを検討し、サービス内容を具体化する。
  • アプリケーションに必要な機能・デザイン
    サービス内容から、必要となる機能を検討する。また、利用者やアクセスする端末によってどのようなデザインにするか検討する。
  • システム基盤に求められる機能
    機能を具体化したら、システム基盤に求める機能を検討する。データベースが必要であればDBサーバーを用意し、個人情報のような機密性の高いデータを扱う場合は、セキュリティを高める機器の導入を検討するなど。

02 利用言語、ソフトウェアの検討

  • プログラミング言語
    JavaScript、Python、PHP、Rubyなど様々な言語があるが、言語によって得意不得意があるので、開発するアプリケーションの特徴にあった言語を選定する必要がある。
  • サーバーのオペレーティングシステム
     WindowsかLinuxのどちらかが基本。Windowsは普及率が高くセキュリティホールが狙われやすい、またライセンス料が高価であるため、無償で入手できるLinuxを使うことも多い。
  • ミドルウェア
    WebサーバーやAPサーバー、DBMSなどOSとアプリケーションの中間に位置するプログラムをミドルウェアという。

03 ネットワーク構成の検討

Webシステムの用途や要求されるセキュリティレベル、投入できるコストなどのよってネットワークの構成を決定する。
Webシステムを構成するネットワークは大きく3種類に分割される。

  • インターネットに晒される外部ネットワーク
  • インターネットと隔離された内部ネットワーク
  • 外部および内部ネットワーク両方からのアクセスを受けつつ、不正な通信を防ぐため内部への通信は最低限とするDMZ(DeMilitarized Zone)

ネットワーク機器を構成する場合、高機能な機材ほど高価でメンテナンスも難しくなるので、システムに合わせて機材を選定する必要がある。

04 サーバー構成の検討

ネットワーク構成を決定したら、各ネットワークに配置するサーバーの構成の検討を行う。
「コストを重視し、最低限のサーバー機器を配置する」「可用性を重視し、機器故障によるサービス停止を極力なくす」などの方針によって、サーバー構成は変化してくる。
サーバー機器は、インターネットとの通信が発生しないサーバー機器は内部ネットワークに配置し、インターネットとの通信が必要なものはDMZに配置すると、セキュリティが高まる。

Webサーバー冗長化する際、システムに届くリクエストをどのWebサーバーに渡すかという振り分け作業を行うロードバランサーという機器が必要になる。

05 サーバー基盤の検討

サーバーなどの機器をどのように調達するかという点も検討する必要がある。

  • オンプレミス
       自分で機器を購入して利用する方法のこと。自分で好きなように機器の構成を組むことができ、構成の自由度が高くなる。個人情報など機密性の高いデータも自分の所有するサーバー内に存在するため、セキュリティも高まる。一方で、機器管理の手間がかかり機器に対する知識も必要となる。またサーバー機器は高額であり、配置場所も必要となるのでコストがかかる。
  • レンタルサーバー
    他者が構築して貸し出しているサーバーを利用する方法のこと。構築や運用の手間がないが、構成の自由度もない。
  • クラウド
    他者が提供する仮想的なサーバーを設置できる環境︎(クラウド)野中にサーバーを設置して利用する方法のこと。機器の購入や設置場所が不要であり、レンタルサーバーと異なり自分のサーバーとして利用することができるので、自由な構成も可能。基本的に従量課金制を取るので、コスト面でも抑えることができる。

06 負荷分散

サーバーを複数台並列に設置し、リクエストを振り分けて並行で実行させることで各サーバーの負荷を軽減する方法を負荷分散という。
負荷分散によりサーバーごとの処理量が減るため、各サーバーの性能が低くてもシステム全体で多くのアクセスを処理できるようになる、複数のサーバーで同じ処理を実行するため冗長化できるなどの効果がある。

  • ラウンドロビン方式
    各サーバーに順番にリクエストを割り振る方式
  • 動的分散方式
    サーバーの負荷を監視し、負荷が少ないサーバーに優先してリクエストを振り分ける方式
  • パーシステンス
    同一クライアントからのアクセスを判別し、常に同じサーバーへ転送する方式

07 サーバー設計・構築

  • ディスク構成
     ディスクとはハードディスクやSSDといったサーバーの記憶領域を指す。データベースやバックアップ用のデータなど重要なデータはサーバーのシステムデータと別のディスクに保管しておくことでデータを守ることができる。ディスクを複数確保できない場合は、一つのディスクを内部で分割するパーティショニングという方法も用いられる。
  • セキュリティ
     OSをインストールすつろ、基本的な機能が初期設定として設定されているが、使用しない機能は削除しないと悪用される可能性がある。
  • システム基盤テスト
    設定ファイルが正しく記載されていることや、ミドルウェアの動作確認、再起動時に必要なプログラムが正しく起動するかという内容を確認する。

08 データベース設計

  • 論理設計
    データベースに格納すべきデータの洗い出しとそのデータ同士の関連性を定義する。
    データの洗い出し → データの関連(リレーション)と多重度の検討 → 詳細な情報の洗い出し → データの整理(正規化)を行う。
  • 物理設計
    論理設計で絵定義されたデータを実際のデータベース内にどのように格納するのかを決める。データの型を定義したり、文字列型なら何文字までを許容するか、数値なら整数か小数かなどについて設計する。

09 アプリケーション設計

  • 基本設計(外部設計)
    提供したいサービスを実現するためにアプリケーションがどういった動作をするのか設計する。アプリケーションの持つ機能の一覧や画面レイアウトなど。
  • 詳細設計(内部設計)
    基本設計の内容を実現するために具体的にどのようなモジュールを作成すれば良いかを検討し設計する。この詳細設計をもとにプログラミングが行われる。
  • テスト
    モジュールごとのテストを単体テストと呼び、モジュール同士が連携し基本設計通りに動くか確認するテストを連結テストという。

10 バックアップ運用

システムを構成するデータを複製してバックアップしておくと、データの消失などの問題が発生した際に、複製した時点のものにはなってしまうもののデータの完全な消失を防ぐことができる。
複製したデータのことをバックアップデータと呼び、バックアップデータの取得や不要となった古いバックアップデータの削除などの作業をバックアップ運用という。

ファイルはそのままコピーしておくことでバックアップでき、データベースの中身はDBMSの機能を使ってバックアップできる。
頻繁にデータの更新がかかる際は、バックアップも頻繁に取るようにし、いくつかの時点のデータを保存しておくほうがよい。

11 ログ運用

サーバーやネットワーク機器は動作中の状態の変化や、自分の行った処理をテキストファイルに記録している。このテキストファイルのことをログファイルという。
OSが発生したイベントやエラーを記録するシステムログ、ミドルウェアなどのアプリケーションが動作履歴を記録するアプリケーションログ、Webサーバーなどが受けたリクエストを記録するアクセスログなどがある。
適当なタイミングで別のファイルに切り分けたり、古いものを削除したりするログファイルのメンテナンスをログ運用ログメンテナンスという。

生成される不要なファイルや古いデータを、定期的に削除したり、別の機器に移したりすることをログローテーションまたはハウスキープという。基本的に1日や1週間など、キリの良い時間単位で切り分けることが多い。

アクセスログ解析を行うと、ユーザーのアクセスしてきた日時やどのページにアクセスしてきたかといった情報が記録されるため、サービスの向上や利用者増加に繋げることができる。

12 Webサイトのパフォーマンス

リクエストの送られてからユーザーに対して画面が表示されるまでの時間をパフォーマンスという。

  • パフォーマンスの指標
    • 応答時間
          リクエスト送信から何らかのHTTP応答が帰ってくるまでの時間
          - 表示完了時間
      リクエスト送信からWebページの表示が完了するまでの時間
          - ページ読み込み時間
      ページ読み込み開始から読み込み完了までの時間
          - 可用性
      エラーなくWebサイトにアクセスできた確率

サーバーごとのCPU使用率やメモリ利用率といったサーバーの負荷状態を監視して、問題が発生した際にすぐに対処することで、パフォーマンスを維持することができる。

13 脆弱性診断

セキュリティ確保のためには脆弱性診断が重要となる。定期的に脆弱性情報データベースを確認して、利用している製品の脆弱性を把握しておく。
擬似的にサイバー攻撃を行い脆弱性の有無を確認するぺネトレーションテストを行うことも検討する。

脆弱性が発見されたら、プログラミングはコードを修正する、OSは修正プログラムの適用やバージョンのアップグレードによって対策する。

Discussion