はじめに
Webシステムの基礎を学習したのでざっくり簡単にまとめ。
学習内容
クライアント&サーバー
何らかの要求をする側/通信する側をクライアント、要求を受ける側/通信を受ける側をサーバーという。クライアントがサーバーに要求することをリクエスト、サーバーからクライアントに返答することをレスポンスという。
IPアドレス
サーバーにはIPアドレスが割り振られており、IPアドレス(123.456.7.8)とドメイン(aiue.com)は紐づけられている。紐づけはDNS(Domain Dame System)によって管理されている。
ドメインからIPアドレスを導き出すことを名前解決という。
ハードウェアの基本構成
・CPU:頭の回転の速さ
・メモリ:一時的なデータ保管領域
・ストレージ:長期的なデータ保管領域
・NIC:ネットワークに接続するための部品
OS
OSは物理機器の上にインストールされているもの。スマホだとiOSなど、PCだとWindowsやmacOSなど、サーバーだとWindows ServerやLinuxがある。
Windows ServerはGUIであることに対して、Linux OSはCUIである。
→サーバーとしての操作に特化するためにグラフィカルな処理を省いている。そのため処理速度が速い。
yamlコマンドでリポジトリとのやり取りも可能。
ソフトウェア
OS上にインストールされているもの。
→LINE、MS365、Google Chrome、RDP、Tera Term、Nginx、Apache、Tomcat、プログラミング言語
Apacheなどの常時起動するプログラムを常駐プログラム(デーモン)という。
HTMLだけだと、毎回同じサイトが表示される(静的コンテンツ/静的ウェブサイト)。
アクセスするごとに異なるコンテンツ(動きのあるコンテンツ)を表示させる(動的コンテンツ/動的ウェブサイト)。
プログラミング言語はレスポンスの前に必要なデータを取り出してWebページを作成する仕組み。
データベースはデータを保存する仕組み。
フレームワークはプログラミングの補助ツールである。djangoなどがある。SQLを直接記述することなく用意されたコードによってデータベースからデータを取得することも可能。
3層アーキテクチャ
Webサーバー、APサーバー、DBサーバーで構成されるものを3層アーキテクチャという。
WebサーバーとAPサーバーはAPIを通じてやり取りする。
Webサーバーは静的コンテンツを、APサーバーは動的コンテンツを、DBサーバーはデータを担当する。
処理の流れとしては
クライアント→Webサーバー→APサーバー→DBサーバー→APサーバー→Webサーバー→クライアントの順。
※WebサーバーとAPサーバは基本的にデータを持たせない。
HTTPリクエスト→APIリクエスト→データベースクエリ→データベースレスポンス→APIレスポンス→HTTPレスポンス
F5やFortinetなどのロードバランサ―ソフトウェアを導入することでサーバーを冗長化し、単一障害点の回避や可用性、スケーラビリティを保つことができる。WebサーバーやAPサーバーに必要以上のデータを持たせると、スケールするときにデータの整合性を持てなくなる。そのため、データはDBサーバーに持たせ、バックアップを取っておく。
その他
・スループット:単位時間あたりに処理できるデータ量を表す指標のこと。
→サーバー単体で求められる処理能力を測る指標
スペック見積もり(キャパシティプランニング):予測に基づいてリソースの計画を行い、リソースの不足や過剰配置を防ぐこと。
レイテンシー:データの送受信にかかる遅延時間のこと。
セキュリティパッチ:ソフトウェアの脆弱性を修正するための更新プログラムのこと。
→インターネット上でOSの管理団体などが配布している。
→リポジトリからyumコマンドで取得できる。
Firewall:ネットワークのセキュリティを守るための装置やソフトウェアのこと。
→通信の監視と制御でシステムの安全性を保っている。
DHCPサーバー:ネットワーク接続に必要な情報を自動管理してくれる。
内部DNSサーバー:システム内部で使うドメインを管理してくれる。
※その他にもログサーバー、認証サーバー、バックアップサーバー、監視サーバーなどがある。