あぁ…我らのECS…
by
kensho
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
あぁ... 我らのECS... 株式会社PR TIMES 岩下 拳勝
Slide 2
Slide 2 text
自己紹介 名前: 岩下 拳勝 年次: 21卒(新卒2年目) GitHub, Twitter: SardineTa23(iwashi) 主な担当業務: PR TIMES STORYバックエンド開発・インフ ラ運用 趣味: AWS認定資格取得(SAA/SOA/DVA)
Slide 3
Slide 3 text
アジェンダ 本発表では、私が昨年PR TIMES STORYの開発リーダーに任命されてか ら学んだ、ECS/Fargateの知見や設定を 発表していきます。
Slide 4
Slide 4 text
はじめに 新卒入社2ヶ月、ある日のこと・・・
Slide 5
Slide 5 text
はじめに 偉い人「PR TIMES STORYの開発リーダーをほしいです」
Slide 6
Slide 6 text
はじめに 僕「は、はぁ・・・😓 (よくわからんけどとりあえずやってみるか)」
Slide 7
Slide 7 text
はじめに とりあえずインフラを見に行くと…
Slide 8
Slide 8 text
はじめに ECS, Fargate, Aurora, ElastiCache, DocumentDB... 何もわからん...
Slide 9
Slide 9 text
はじめに 完全に詰んだ👼
Slide 10
Slide 10 text
はじめに 一緒にPR TIMESで使用しているECSとその設定 について勉強しましょう。
Slide 11
Slide 11 text
コンテナ 皆さん、コンテナ使ってますか?
Slide 12
Slide 12 text
コンテナ コンテナのメリット ● アプリケーションの依存関係をコンテナ内で完結できる。 ● 一度Buildしたイメージをスケーリングの際に簡単に使い回せる。 ● (サーバー仮想化と違って)ゲストOSをマシンで動作させるためのリソー スが不要。
Slide 13
Slide 13 text
コンテナ AWSでコンテナを使うには… ECSが便利!
Slide 14
Slide 14 text
ECSとは… AWSが開発したコンテナオーケストレーションサービス。 https://aws.amazon.com/jp/ecs/
Slide 15
Slide 15 text
ECSとは… 複数のホスト上で動作している無数のコンテナを、 (頭のいい)AWSの人が作ったレールに乗りながら管理できる。 ECSがあると嬉しいこと
Slide 16
Slide 16 text
ECSとは… ● DDoSなどでコンテナが落ちても、コンテナの切り離し、再デプロイを自動的に やってくれる。 ● コンテナを予め指定したAZに均等に配置管理してくれる。 ● ALBと組み合わせることで、リクエストの負荷分散を自動的にしてくれる。 具体的なECSメリット
Slide 17
Slide 17 text
ECSとは… ECSには、EC2起動タイプとFargate起動タイプがある
Slide 18
Slide 18 text
ECSとは… Fargate起動タイプのメリット・デメリット メリット ● ホストの管理が不要 デメリット ● (EC2起動タイプと比べて)使い方次第で若干コストが割高 ● ホストのOS管理ができない
Slide 19
Slide 19 text
PR TIMES STORY PR TIMES STORY (https://prtimes.jp/story) では、ECS/Fargateを使ってLaravelを 動作させて運用しています。
Slide 20
Slide 20 text
PR TIMES STORY
Slide 21
Slide 21 text
PR TIMES STORY ここからは、ECS/Fargateを運用していくにあたってのいくつ かの疑問点と、 その疑問に対してPR TIMES STORYが導入しているECSの 設定についてお話します。
Slide 22
Slide 22 text
疑問① sshおじさん ???「ホストがない?SSHできないなんてありえな い!デバックできないじゃん!」
Slide 23
Slide 23 text
疑問① sshおじさん 回答:「ECS Execを使っていきましょう!」 > Amazon ECS Exec を使用すれば、最初にホストコンテナのオペレーティングシステムとやり取 りしたり、インバウンドポートを開いたり、SSH キーを管理したりすることなく、コンテナと直接やり取 りできます。ECS Exec を使用して、Amazon EC2 インスタンスまたは AWS Fargate で実行され ているコンテナでコマンドを実行したり、シェルを取得したりできます。 (https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/ecs-exec.html) → つまり、ECSで実行中のコンテナに`dokcer exec`のようなことを実行で きる。
Slide 24
Slide 24 text
疑問① sshおじさん ECS Execの有効化 ECS Execはコンソール上から有効化できないため、 AWS CLIやTerraformなどで有効化する必要がある。
Slide 25
Slide 25 text
疑問② インフラ担当心配性おじさん ???「マイグレーション管理とかどうしてんの? まさか毎回、` php artisan migrate`を手打ちするの?」
Slide 26
Slide 26 text
疑問② インフラ担当心配性おじさん 回答例:「デプロイワークロードの中でMigration用の FargateTaskを実行しましょう!」
Slide 27
Slide 27 text
疑問② インフラ担当心配性おじさん PR TIMES STORYでは… CodeBuildのワークロード(buildspec.yml)の中でmigration用の ECSタスクを実行しています。
Slide 28
Slide 28 text
疑問③ サーバ運用監視おじさん ???「監視とか辛くない? ECSのコンソールってタスクごとのCPU使用率とか見れんし」
Slide 29
Slide 29 text
疑問③ サーバ運用監視おじさん たしかにデフォルトではECS Serviceごとにしか見れない😓
Slide 30
Slide 30 text
疑問③ サーバ運用監視おじさん 回答例1:「Container Insights使っていきましょう」 有効にすると、クラスター、サービス、タスク単位での詳細な メトリクスが取得できます。
Slide 31
Slide 31 text
謎の敵③ サーバ運用監視おじさん 回答例2:「タスクのサイドカーとして、 NewRelic、Mackerelなどのエージェントを起動しましょう。」
Slide 32
Slide 32 text
謎の敵③ サーバ運用監視おじさん NewRelic(https://newrelic.com/jp/blog/best-practic es/get-container-metrics-on-ecs-fargate ) Mackerel(https://mackerel.io/ja/docs/entr y/howto/container-agent) 公式ドキュメントを見ると、簡単に設定でき ます。
Slide 33
Slide 33 text
まとめ 今日発表した設定は、今後PR TIMES開発者ブログ (https://developers.prtimes.jp/) にて随時発信予定です。 お手すきの際にぜひ覗いてみてください!