$30 off During Our Annual Pro Sale. View Details »

あぁ…我らのECS…

iwashi
September 24, 2022

 あぁ…我らのECS…

PHPカンファレンス2022 スポンサーLT登壇資料

iwashi

September 24, 2022
Tweet

Other Decks in Technology

Transcript

  1. あぁ... 我らのECS...
 株式会社PR TIMES 
 岩下 拳勝


  2. 自己紹介 名前: 岩下 拳勝
 年次: 21卒(新卒2年目)
 GitHub, Twitter: SardineTa23(iwashi)
 主な担当業務:

    PR TIMES STORYバックエンド開発・インフ ラ運用
 趣味: AWS認定資格取得(SAA/SOA/DVA)

  3. アジェンダ 本発表では、私が昨年PR TIMES STORYの開発リーダーに任命されてか ら学んだ、ECS/Fargateの知見や設定を 発表していきます。


  4. はじめに 新卒入社2ヶ月、ある日のこと・・・


  5. はじめに
 偉い人「PR TIMES STORYの開発リーダーをほしいです」


  6. はじめに
 僕「は、はぁ・・・😓
 (よくわからんけどとりあえずやってみるか)」


  7. はじめに
 とりあえずインフラを見に行くと…


  8. はじめに
 ECS, Fargate, Aurora, ElastiCache, DocumentDB...
 何もわからん...


  9. はじめに
 完全に詰んだ👼


  10. はじめに
 一緒にPR TIMESで使用しているECSとその設定 について勉強しましょう。


  11. コンテナ 皆さん、コンテナ使ってますか?


  12. コンテナ
 コンテナのメリット
 
 • アプリケーションの依存関係をコンテナ内で完結できる。
 • 一度Buildしたイメージをスケーリングの際に簡単に使い回せる。
 • (サーバー仮想化と違って)ゲストOSをマシンで動作させるためのリソー スが不要。


  13. コンテナ
 AWSでコンテナを使うには…
 ECSが便利!


  14. ECSとは… AWSが開発したコンテナオーケストレーションサービス。
 https://aws.amazon.com/jp/ecs/


  15. ECSとは… 複数のホスト上で動作している無数のコンテナを、
 (頭のいい)AWSの人が作ったレールに乗りながら管理できる。
 ECSがあると嬉しいこと


  16. ECSとは… • DDoSなどでコンテナが落ちても、コンテナの切り離し、再デプロイを自動的に やってくれる。
 • コンテナを予め指定したAZに均等に配置管理してくれる。
 • ALBと組み合わせることで、リクエストの負荷分散を自動的にしてくれる。
 具体的なECSメリット


  17. ECSとは… ECSには、EC2起動タイプとFargate起動タイプがある


  18. ECSとは… Fargate起動タイプのメリット・デメリット
 メリット
 • ホストの管理が不要
 
 
 デメリット
 • (EC2起動タイプと比べて)使い方次第で若干コストが割高


    • ホストのOS管理ができない

  19. PR TIMES STORY PR TIMES STORY
 (https://prtimes.jp/story)
 では、ECS/Fargateを使ってLaravelを 動作させて運用しています。


  20. PR TIMES STORY

  21. PR TIMES STORY ここからは、ECS/Fargateを運用していくにあたってのいくつ かの疑問点と、
 その疑問に対してPR TIMES STORYが導入しているECSの 設定についてお話します。


  22. 疑問① sshおじさん ???「ホストがない?SSHできないなんてありえな い!デバックできないじゃん!」


  23. 疑問① 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`のようなことを実行で きる。

  24. 疑問① sshおじさん ECS Execの有効化
 
 ECS Execはコンソール上から有効化できないため、
 AWS CLIやTerraformなどで有効化する必要がある。


  25. 疑問② インフラ担当心配性おじさん ???「マイグレーション管理とかどうしてんの?
 まさか毎回、` php artisan migrate`を手打ちするの?」


  26. 疑問② インフラ担当心配性おじさん 回答例:「デプロイワークロードの中でMigration用の FargateTaskを実行しましょう!」


  27. 疑問② インフラ担当心配性おじさん PR TIMES STORYでは…
 
 CodeBuildのワークロード(buildspec.yml)の中でmigration用の ECSタスクを実行しています。


  28. 疑問③ サーバ運用監視おじさん ???「監視とか辛くない?
 ECSのコンソールってタスクごとのCPU使用率とか見れんし」


  29. 疑問③ サーバ運用監視おじさん たしかにデフォルトではECS Serviceごとにしか見れない😓


  30. 疑問③ サーバ運用監視おじさん 回答例1:「Container Insights使っていきましょう」
 有効にすると、クラスター、サービス、タスク単位での詳細な メトリクスが取得できます。


  31. 謎の敵③ サーバ運用監視おじさん 回答例2:「タスクのサイドカーとして、
 NewRelic、Mackerelなどのエージェントを起動しましょう。」


  32. 謎の敵③ サーバ運用監視おじさん 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)
 
 公式ドキュメントを見ると、簡単に設定でき ます。


  33. まとめ 今日発表した設定は、今後PR TIMES開発者ブログ (https://developers.prtimes.jp/)
 にて随時発信予定です。
 
 お手すきの際にぜひ覗いてみてください!