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/)
 にて随時発信予定です。
 
 お手すきの際にぜひ覗いてみてください!