あぁ…我らのECS…
by
kensho
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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/) にて随時発信予定です。 お手すきの際にぜひ覗いてみてください!