2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Web】システムの構築と運用について図を使って説明してみた

Posted at

提供するサービスの検討

  • サービスの内容→アプリケーションに必要な機能・デザイン→システム基盤に必要な機能を順に検討していく。

  • サービスの内容の検討:何を提供するか、どんな人が対象か、何を使ってアクセスするか、どんなときに使うか
    p165-1 .png

  • アプリケーションに必要な機能・デザイン:サービスの内容からどんな機能・デザインが必要か
    p165-2 .png
    p165-3 .png

  • システム基盤に求められる機能:データベースが必要ならDBサーバー、機密性が高いならセキュリティを高めるための機器が必要か

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

  • プログラミング言語:それぞれの言語には処理の不得意があり、対応しているフレームワークもそれぞれ異なる。
言語 説明
JavaScript ・ブラウザ上でも動作するため、クライアントサイドで利用可能
・サーバーサイドでも使われるケースが増えてきている
・機能がシンプルで動作が軽快
Java ・実行環境をインストールしないと動作させられない
・GUIも複雑な処理もできる
Visual Basic
C#
・MicrosoftのフレームワークであるASP.NETでよく用いられる
・GUIが得意
PHP ・HTML内に埋め込んで実行可能
・広く使われており、ノウハウが多い
Perl
Ruby
Python
・文字列処理が得意
・フレームワークが豊富
・Linuxでは実行環境が標準装備、Windowsでは別途環境の構築が必要
  • サーバーのオペレーティングシステム(OS):基本的にはWindowsかLinuxのどちらかを選択する。
OS 説明
Windows ・一般向けPCでも広く普及
・GUIでの操作が基本
・高価
・脆弱性を狙われやすい
Linux ・Windowsと操作感が異なる
・CUIでの操作が基本
・無償もしくは安価
・Microsoft系のソフトウェアは使えないことが多い
  • ミドルウェア:OSとアプリケーションの中間に位置する。(Webサーバー、APサーバー、DBMSなど)

Webサーバー

名前 説明
Apache ・無償
・Windows/Linuxで利用可
・最も利用されているWebサーバー
nginx ・有償でサポートを受けられる
・Windows/Linuxで利用可
・機能がシンプルで動作が軽快
IIS ・Windowsに標準装備
・Linuxでは使えない
・APサーバーの機能も持つ

APサーバー

名前 説明
Tomcat ・無償
・Windows/Linuxで利用可
・Apacheとの組み合わせでよく利用される
JBoss ・有償
・Windows/Linuxで利用可
IIS ・Windowsに標準装備
・Linuxでは使えない
・Webサーバーの機能も持つ

DBMS

名前 説明
Oracle ・高機能
・かなり高価
・Windows/Linuxで利用可
MySQL
PostgreSQL
SQLite
・シンプルな機能
・無償
・Windows/Linuxで利用可
SQL Server ・高機能
・高価
・Windowsで利用可

ネットワーク構成の検討

  • ネットワークの分割:大きく3種類に分割

    • ①インターネットに晒される外部ネットワーク
    • ②インターネットと隔離された内部ネットワーク
    • ③外部ネットワークと内部ネットワークの境界に位置し、外部ネットワークおよび内部ネットワーク両方からのアクセスを受け付けつつ、不正な通信を防ぐため内部ネットワークへの通信は最低限とする(DMZ(DeMilitarized Zone))
      p169-1 .png
  • ネットワーク機器の構成:耐障害性を高めるために機器を複数配置し、冗長化構成とする。
    p169-2 .png

サーバー構成の検討

  • ロードバランサー:Webサーバーを冗長化する際、システムに届くリクエストをどのWebサーバーに渡すかを考える際に、振り分け作業をおこなう。
    p171-1 .png

  • 構成するシステムの用途や要件によって、「コストを重視し、最低限のサーバー機器を配置する」「可用性を重視し、機器故障によるサービス停止を極力なくす」などの方針を決め、サーバー構成をする。

コストを抑えたサーバー構成の例
p171-2.png

可用性を重視したサーバー構成の例
p171-3.png

サーバー基盤の検討

  • オンプレミス:「自社運用」を表す。自分で機器を購入して利用する方法。設置場所の確保や機器の購入など、掛かる費用は大きいが、構成の自由度はかなり高い。安価でそれなりの自由度があるクラウドの登場により徐々に少なくなっているのが実情。
    p173-1.png

  • レンタルサーバー:費用が安く、運用の手間が少ないので個人での利用に向いている。反面、構成の自由度はほぼないため、企業で利用されることはあまりない。
    p173-2.png

  • クラウド:使った分利用料が掛かるという課金体系で気軽に使い始めることができ、企業・個人にかからず利用者が急増している。また、構成自由度が高いのも魅力。
    p173-3.png

負荷分散

  • Webシステムにおける負荷分散では、ロードバランサーでリクエストを各Webサーバーに分散し、個々のサーバー機器の負担を軽減する。1つのサーバーが故障しても、ほかのサーバーが稼働していれば全体としてサービスの継続が可能になる。

  • ラウンドロビン方式
    p175-1.png

  • 動的分散方式
    p175-2.png

  • パーシステンス
    p175-3.png

サーバー設計・構築

  • ディスク構成:ディスクとは、ハードディスク・SSDなどのサーバーの記憶領域。重要なデータはサーバのシステムデータと別のディスクに保管しておくで重要なデータを守れる。
    p177-1.png

  • セキュリティ:初期設定の機能やユーザーを見直す。
    p177-2.png

  • システム基盤テストサーバーの設定が正しく行われているかをテストする。
    p177-3.png

データベース設計

  • 論理設計:データベースに格納すべきデータの洗い出しとそのデータ同士の関連性を定義する。
    p179-1.png

  • 物理設計:論理設計で定義されたデータを実際のデータベース内にどのように格納するかを決める。
    p179-2.png

アプリケーション設計

  • 基本設計:提供したいサービスを実現するためにアプリケーションがどういった動作をするのかを設計。外部設計ともいう。
    p181-1.png

  • 詳細設計:基本設計の内容を実現するためには具体的にどのようなモジュールを作成すればよいかを検討し、設計する。内部設計ともいう。
    p181-3.png

  • テスト

    • 単体テスト:詳細設計のとおりにモジュールが作られているかを確認するため、モジュールごとに実施するテスト
    • 連結テスト:モジュール同士をうまく連携し、基本設計の通りに動くかを確認するテスト
      p181-3.png

バックアップ運用

  • システムを構成するデータを複製して保管(バックアップ)しておけば、問題が発生しても複製されたデータでサービスを再開できる。このときの複製データをバックアップデータ、バックアップデータの取得や不要なものを削除することなどをバックアップ運用と呼ぶ。
  • バックアップの対象は、アプリケーションやコンテンツのようなファイルとデータベースの中身。
    p183-1.png

p183-2.png

ログ運用

  • ログファイル:サーバーやネットワーク機器は動作中の状態の変化や自分の行った処理を記録したテキストファイル。

    • システムログ:OSが発生したイベントやエラーを記録
    • アプリケーションログ:ミドルウェアなどのアプリケーションが動作履歴を記録
    • アクセスログ:Webサーバーなどが受けたリクエストを記録
  • ログ運用、ログメンテナンス:ログファイルはどんどん追記されていくため、何もしないと膨大なサイズになってしまい、可読性が低下し、ハードディスクの容量を圧迫する。これを適当なタイミングで別ファイルに切り分けたり、古いものを削除したりすること。

  • ログローテーション:ログファイルを切り分け、別のファイルとして保持することでログの可読性を確保すること。
    p185 -2.png

  • アクセスログ解析:アクセスログを解析して参考となる情報を得ること。

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

  • パフォーマンス:Webシステムは利用者が多くなると受けるリクエストが増え、レスポンスの効率が低下する。リクエストが送られてから、ユーザーに対して画面に表示されるまでの時間などのこと。ユーザー満足度の1つ。
    p187-1.png
指標名 内容
応答時間 クライアントのリクエスト送信からレスポンス受信までの所要時間
表示完了時間 クライアントのリクエスト送信からコンテンツがすべて表示されるまでの所要時間
ページ読み込み時間 クライアントが最初のコンテンツを受信し始めてからコンテンツがすべて表示されるまでの所要時間
可用性 エラーなくWebサイトにアクセスできた確率
例:1年間(8760時間)で10時間だけサイトが障害で停止した
→(8760-10)÷8760×100≒99.886%
  • パフォーマンス監視:定期的にパフォーマンスを監視して、パフォーマンスの低下を検知した場合はその原因を調査して適切な処置を行い、システムを改善させる。
    p187-2.png

脆弱性診断

  • インターネットに公開されるWebシステムで、セキュリティ確保のために脆弱性対策をすることは重要。運用している間に使用しているOSやミドルウェアに新たな脆弱性が発見されることがある。この対策として、脆弱性情報データベースを定期的に確認し、利用している製品の脆弱性の有無を把握しておく必要がある。
    p189-1.png

  • ペネトレーションテスト:擬似的に攻撃を行うことで脆弱性の有無を確認するテスト
    p189-2.png

  • 脆弱性対策が予想外の障害をもたらすこともある。安易にシステムに変更を加えると想定外の障害が発生することがある。事前にテスト環境でサービスに影響がないかを確認することが大事。
    p189-3.png


参考:Web技術の基本

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?