【Web】Webシステムの構築時に考えること

どんなサービスを提供するか

サービスの内容

  • 何を提供するサービスか
    例)ショッピング、SNS、ブログ

  • どんな人を対象にしたサービスか
    例)男性、女性、学生、高齢者、特定の職業に就いている人、趣味(本、音楽、、)

  • どんな時に使用するサービスか
    例)24h365d、日中帯のみ、イベント時、、

アプリケーションに必要な機能、デザイン

サービスの内容から、それを実現するためにアプリケーションとして必要な機能、デザインを検討する。

  • データを保存する必要がある → DBへのデータ保存やデータ取得をする機能が必要。
  • 外部サービスとの連携が必要 → API実装が必要。
  • 高齢者向き → 文字が大きめでわかりやすいUIデザインが必要。

システム基盤に求められる機能

アプリケーションに必要な機能を実現するために、システム基盤に必要な機能を検討する。

  • データベースが必要なら、DBサーバーを準備する
  • 個人情報を保存するのであればセキュリティを高める
  • 24h365d稼働想定であれば、サーバーを冗長構成にして安定稼働を目指す

プログラム開発でどんな言語、ソフトウェアを使用するか

利用言語

言語ごとに処理の得手不得手や、実行環境の構築要否など特性がある。開発するアプリケーションに沿って選定が必要。

OS

アプリケーションを動作させるOS。基本的にはWindowsLinuxであるが、比較的安価に利用できるLinuxが選ばれる場合が多い。 ※ソフトウェアを載せる機器のOS?

ミドルウェア

サーバーソフトウェアのこと。OSとアプリケーションの中間に位置する。
使用するOSによって使用できるものが絞られることもある。

ネットワーク構成

ネットワークは3つに分割して、DBサーバーなど機密情報の保存先へはインターネットから直接アクセスできないようにすると安全。

  • 外部ネットワーク
    インターネットからアクセス可能な、ファイアウォールより外部のネットワーク。

  • 内部ネットワーク
    インターネットからアクセスできないネットワーク。

  • DMZ(DeMillitarizedZone)
    外部ネットワークと内部ネットワークの間に位置し、双方からのアクセスが可能なネットワーク。ファイアーウォールを通ることのできる通信のみを内部ネットワークに通す。

ネットワーク機器構成のボリューム

  • ファイアフォール
    インターネットから接続するようなシステムなら必須。
  • IDS, IPS, WAF
    高価であるため、求められるセキュリティ要件次第。

さらに、耐障害性を高める場合にはこれらの機器を複数配置して稼働が止まることがないようにする。

サーバー構成

各ネットワークに配置するサーバーの構成を検討する。

配置先のネットワーク

インターネットに接続する必要があるサーバーはDMZに、必要がなければ内部ネットワークに配置する。

サーバーの冗長構成

ある程度のリクエスト量が予想される場合は、Webサーバー、APサーバーを複数配置することも検討する。また、システム全体的として可用性を重視するのであれば、各サーバーを複数台とすることも考える。
Webサーバーを冗長構成とする場合、リクエストを各サーバー機器に振り分けるためにロードバランサーを設置する。ロードバランサーを設置すると、サーバーの負荷分散も実現できる。

サーバー基盤の検討

  • クラウド
    仮想サーバーを設置できる環境にサーバーを設置する。

  • オンプレミス
    自身(自社)で、機器を購入して設置する必要があるが、自由度が高い。

  • レンタルサーバ
    他者のサーバーに間借りさせてもらい、自分のWebアプリケーションを配置する。

近年は、自由度の高さや気軽な課金体系から、企業個人ともにクラウド利用者が急増している。(サーバーのディスク構成やセキュリティなどの設計は、各クラウドサーバーごとのベストプラクティスを確認する。)

DB設計

論理設計

DBに格納すべきデータの洗い出しとそのデータ同士の関連性を定義する。
関連がある場合は、1対1なのか、もしくは1対他(0以上)、1対他(1以上)なのかも考える。さらに、洗い出したデータに重複がないように整理する。

物理設計

論理設計で整理したデータを実際のDBにどう格納するかを定義する。
データ型や、文字数、整数なのか小数を含むのか、など、、

バックアップ

バックアップの対象は、アプリケーションやコンテンツのファイル、DBの中身。
基本的に別のサーバー機器(物理的に異なる場所)にバックアップのデータを保管しておく。復旧時にできるだけ障害地点の状態に戻すために、できる限り頻繁にバックアップをとっておく必要がある。過去のバックアップは何世代か残しておくのが望ましい。

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

応答時間などのパフォーマンスは、システムに対する利用者の満足度につながる。これはリクエスト数増加によるサーバーへの負荷によって影響を受ける。
パフォーマンスを維持するために、サーバー負荷状態を示すCPU使用率やメモリ利用率を監視しておき、異常があれば適切に処置しシステムを改善していくことが重要。

参考

イラスト図解式 この一冊で全部わかるWeb技術の基本 | NRIネットコム株式会社, 小林 恭平, 坂本 陽, 佐々木 拓郎 |本 | 通販 | Amazon

(Apache/Nginx/IIS)Webサーバー機能とは?よく使われるサーバーごとの違いについても解説 | クラウド導入・システム運用ならアールワークスへ