エンジニアバイトをしているところでAWSについて知る機会があったのでざっとまとめてみました。
EC2
AWS上の仮想コンピュータのことです。AWS上の仮想コンピュータの単位をインスタンスという。
ECS
EC2上にDocker化したアプリケーションをデプロイ、実行、管理することができる。
タスク定義
アプリケーションの設計図。動かしたいアプリが何のコンテナで構成されているのかをjson形式でかいたテキストファイル。
ECSサービス
タスク定義で指定した数だけのインスタンスを同時に実行し維持してくれる。もしタスクが何かしらの理由で停止したら、指定した数を維持しようと自動でタスクを立ち上げてくれる。
ECR
コンテナを保管、管理するところ。
ecs-agent
窓口の役割。ここをとおしてインスタンスないで稼働するコンテナを起動、停止などを管理する。
ALB
アプリケーションロードバランサーのこと。ここがクライアントからの通信を受け取ってどのサーバーにリクエストを送るのかを判断してくれる。
Lisner
ALBから受け取ったリクエストのプロトコルとポート番号をチェックし、設定されたものかを見てくれる。
target group
設定されているプロトコルとポート番号から、登録しているインスタンスまでリクエストを送ってくれる。
ざっと流れとして
GitHubからpushされたものがCircle CIに渡され、そこでデプロイされる。このときコンテナが立ち上がり、毎回ECRに保管される。立ち上げたコンテナはタスク定義をもとにEC2の仮想サーバー内のECS内で実行、管理される。
ユーザーはALBでリクエストを振り分けられ、リクエスト内のポート番号とプロトコルからどのサーバー内のアプリに送られるかがわかる。