yujiroのプログラミング

勉強内容をアウトプットし、サボらないようにする為のブログ

<DAY153>仮装サーバー、アプリケーションサーバー、WEBサーバーの役割

\ Follow me!! /

●7/24(水)
●学習日数 153日
●学習時間(本日)3時間
●累計学習時間 737.5時間
●一日あたりの平均学習時間 4.82時間

はじめに

本番環境構築にてなぜnginxを導入するのか曖昧な部分があったり、
unicronが必要な理由であったり、EC2インスタンスがなにかざっくりでも良いので
答えられるようにする。

EC2インスタンスとは

クラウド上のパソコン。(仮装サーバーと呼ぶ)
必要な機能を入れ込む箱のような概念。
AWSの用語。
SSH接続でログインしてrubyやらhomebrewやらを入れていく

unicronとは?

アプリケーションサーバーの事。
アプリケーションサーバーはアプリを中に包括しており、
Rackを用いて、言語の異なるアプリとサーバーのやり取りを実施してくれる。
アプリ本体を設置するサーバーと の概念で捉えておく。

nginxとは(「エンジンエックス」)

WEBサーバをさす。
受付窓口の役割
クライアントからのリクエスト全てがWebサーバに送られる。
データベースと通信せずに、静的なコンテンツのみをリクエストとしてクライアントに返すものを処理できる。
Webサーバ内で処理が出来ないものとは、動的なコンテンツをさす。



アプリケーションサーバーとWEBサーバーを分離させるメリット、デメリット

Web3層アーキテクチャで調べると色々出てくると思いますが、サーバーを機能で分割することで、システムより柔軟性を得られ、それにより幾つかメリット享受できます。

性能の向上
静的コンテンツと動的コンテンツの負荷が分散される
ハードウェアリソースの最適化 (WebとAPだと必要なリソースが違ったりする)
セキュリティ施策が取れる
ネットワーク分離 (※)
不正アクセスによる被害のリスクが下がる(無くなるわけじゃない)
拡張性や保守性、耐障害性の向上
AP が落ちても かろうじてWebだけは動く(ソーリーページを表示させるなどできる)
Web と AP それぞれ単独にメンテナンスできる
デメリット

台数が増えるのでライセンスや保守のコストが増える。
ネットワークトラフィックが増える
それぞれを2重化しないと稼働率はより低くなる事が考えられる
柔軟な運用が求められる(より面倒になる)
※APにはDBの接続情報を持ってたりしますので、APが非公開NWにあるのはそれだけで十分なメリットのような気もします。1台の場合、せっかくDBを分離しても接続情報が分かれば芋づる式にヤラれてアウトです。

*参考資料

qiita.com

ja.stackoverflow.com