infrastructure
Overview
インフラ関連のためのセクション。
仮想化とコンテナーの違い
大前提 ipアドレス127.0.0.1(localhost)はは仮想環境外部からはアクセスできない。
仮想化
コンテナー
ホストOS →(コンテナーで区切られた)プロセス
コンテナーはコンテナー内のプロセスやライブラリを通してホストのOSのカーネルを使っている
エンタープライズアプリ
エンタープライズアプリとは、サーバ・DB・ネットワーク機器などを組み合わせて作られた、1つの大きなシステム 会社内で使われる業務システムや、LAMP(Linux/Apache/MySQL/PHP)などの比較的古い技術で作られたwebアプリなどが当てはまる
サーバーレスアプリ
アプリを動作させるインフラをAWSの機能ですべて管理する仕組みのこと。 サーバを安定させて稼働させたり、急な負荷に対する性能を向上させたりすることが自動で行われる。 このようなシステムは、大人気アーティストのライブチケット販売や、選挙期間中の期間限定サイトなど、短期間で大量のユーザに利用してもらうようなサービスを構築するときに使われる。
アプリケーションサーバーの前にWebサーバ(Apache or Nginx)を置く理由
Djangoなどのフレームワークなどはhttps接続が可能だが、一般的にはアプリケーションサーバを直接公開せずApacheやnginxなどのWebサーバを介して公開する。 これはアプリケーションサーバではCPU・メモリ効率が悪いため、画像・スタイルシート・スクリプトファイルなどの静的なファイル高速はWebサーバ(nginx or Apache)に任せるため、というのが大きな理由。 その他、アクセス制御などのインフラ周りの処理はアプリケーション側ではなくWebサーバに持たせたい、複数のアプリケーションサーバを利用する場合にも柔軟に対応できる、Webサーバが持つ高機能な仕組みを利用したい(アプリケーションサーバはWebサーバとして低機能なことが多い)などの理由もある。
Webサーバとアプリケーションサーバ
webサーバーとは
HTTPに則り、HTMLや画像の情報を返してくれるもの、イメージ的には静的なwebサイトで提供されるもの(HTML,CSS,JavaScriptなど)が、このwebサーバーで返されるイメージ。
アプリケーションサーバーとは
アプリケーションサーバーは送られてきたリクエストに対して、rubyやphpなどを実行して、動的な処理をした結果を静的な要素に変換してwebサーバーに返すためのもの。つまり、動的なサイトを動かす上で必要なもののうち、静的ではない部分を作ってくれるもののイメージ。
よって、静的な要素のみで作っているサイトだったら、内部的にdbをいじったりそれに合わせた処理をしてhtmlを作ったりする必要がないので、webサーバーのみで大丈夫。