きっかけ
とある案件に携わった時に、APサーバーとDBサーバーは分けても分けなくても良いですねと話しているのを聞いて、「そうなんだ!?」と驚いたので調べてみようと思い立ちました。ネットで調べて情報をまとめました。
【前提】Web三層構造について
Webサーバ、APサーバ、DBサーバの3層の事。
(参考サイト:https://www.infraexpert.com/info/server17.html)
WEBサーバーの役割
静的ページのデータやAPサーバーから転送された動的ページのデータをWebクライアントに転送すること。
APサーバーの役割
Webサーバーから送られてきたユーザーからのデータを受け取り、サーバーサイド・プログラムを実行することでそのデータを加工したり、DB(データベース)のデータを検索・加工した後、Webサーバーにレスポンスを返す。
DBサーバーの役割
アプリケーションサーバーからの要求に従って処理を行い、結果をアプリケーションサーバーに返却すること。
サーバーを別立てするメリット
①負荷分散:1つのマシンに負荷がかかり過ぎないようにする
②リスクヘッジ:サーバーが動かなくなるリスクを分散
③セキュリティの高さ
DBサーバには多くの顧客情報が保存されており、万が一この情報が流出してしまうと大問題になります。Web、AP、DBがすべて1台にインストールされたシステムではクライアントから直接DBサーバにアクセスできてしまいますが、Web3層構造ではクライアントとDBサーバの間にWebサーバ、APサーバ、そしてセキュリティ製品を配置できるため、より堅牢になります。
④視認性の高さ
使用するハードウェアリソース(CPU、メモリ、ディスクI/O、ネットワークI/O)の論理的分割ができる。障害ポイント(APソフト的なのか、DBソフト的なのか)が区別しやすくなる。
サーバーを別立てするデメリット
①金銭的コストがかかる
(論理的な)ハード費用に加えて、AP、DBのソフト的な処理も考慮する必要があり、改修費用を見込む必要がある。ライセンスや保守のコスト増加。
②運用コストがかかる
③ネットワークのオーバーヘッドが発生する
まとめ
回収できるお金/サービスの重要性とコストを天秤にかけて判断する必要があるようです。
参考サイト
WebサーバとDBサーバを別立てにする意味 情報セキュリティ
https://edugineer.jp/2018/10/04/post-536/
Web技術の基本 ~Webアプリケーションの構造~
https://qiita.com/mk185/items/e914683410fd4ecaf0af