Upgrade to Pro — share decks privately, control downloads, hide ads and more …

あぁ…我らのECS…

kensho
September 24, 2022

 あぁ…我らのECS…

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

kensho

September 24, 2022
Tweet

More Decks by kensho

Other Decks in Technology

Transcript

  1. あぁ... 我らのECS...

    株式会社PR TIMES 

    岩下 拳勝


    View full-size slide

  2. 自己紹介
    名前: 岩下 拳勝

    年次: 21卒(新卒2年目)

    GitHub, Twitter: SardineTa23(iwashi)

    主な担当業務: PR TIMES STORYバックエンド開発・インフ
    ラ運用

    趣味: AWS認定資格取得(SAA/SOA/DVA)


    View full-size slide

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


    View full-size slide

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


    View full-size slide

  5. はじめに

    偉い人「PR TIMES STORYの開発リーダーをほしいです」


    View full-size slide

  6. はじめに

    僕「は、はぁ・・・😓

    (よくわからんけどとりあえずやってみるか)」


    View full-size slide

  7. はじめに

    とりあえずインフラを見に行くと…


    View full-size slide

  8. はじめに

    ECS, Fargate, Aurora, ElastiCache, DocumentDB...

    何もわからん...


    View full-size slide

  9. はじめに

    完全に詰んだ👼


    View full-size slide

  10. はじめに

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


    View full-size slide

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


    View full-size slide

  12. コンテナ

    コンテナのメリット


    ● アプリケーションの依存関係をコンテナ内で完結できる。

    ● 一度Buildしたイメージをスケーリングの際に簡単に使い回せる。

    ● (サーバー仮想化と違って)ゲストOSをマシンで動作させるためのリソー
    スが不要。


    View full-size slide

  13. コンテナ

    AWSでコンテナを使うには…

    ECSが便利!


    View full-size slide

  14. ECSとは…
    AWSが開発したコンテナオーケストレーションサービス。

    https://aws.amazon.com/jp/ecs/


    View full-size slide

  15. ECSとは…
    複数のホスト上で動作している無数のコンテナを、

    (頭のいい)AWSの人が作ったレールに乗りながら管理できる。

    ECSがあると嬉しいこと


    View full-size slide

  16. ECSとは…
    ● DDoSなどでコンテナが落ちても、コンテナの切り離し、再デプロイを自動的に
    やってくれる。

    ● コンテナを予め指定したAZに均等に配置管理してくれる。

    ● ALBと組み合わせることで、リクエストの負荷分散を自動的にしてくれる。

    具体的なECSメリット


    View full-size slide

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


    View full-size slide

  18. ECSとは…
    Fargate起動タイプのメリット・デメリット

    メリット

    ● ホストの管理が不要



    デメリット

    ● (EC2起動タイプと比べて)使い方次第で若干コストが割高

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


    View full-size slide

  19. PR TIMES STORY
    PR TIMES STORY

    (https://prtimes.jp/story)

    では、ECS/Fargateを使ってLaravelを
    動作させて運用しています。


    View full-size slide

  20. PR TIMES STORY

    View full-size slide

  21. PR TIMES STORY
    ここからは、ECS/Fargateを運用していくにあたってのいくつ
    かの疑問点と、

    その疑問に対してPR TIMES STORYが導入しているECSの
    設定についてお話します。


    View full-size slide

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


    View full-size slide

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


    View full-size slide

  24. 疑問① sshおじさん
    ECS Execの有効化


    ECS Execはコンソール上から有効化できないため、

    AWS CLIやTerraformなどで有効化する必要がある。


    View full-size slide

  25. 疑問② インフラ担当心配性おじさん
    ???「マイグレーション管理とかどうしてんの?

    まさか毎回、` php artisan migrate`を手打ちするの?」


    View full-size slide

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


    View full-size slide

  27. 疑問② インフラ担当心配性おじさん
    PR TIMES STORYでは…


    CodeBuildのワークロード(buildspec.yml)の中でmigration用の
    ECSタスクを実行しています。


    View full-size slide

  28. 疑問③ サーバ運用監視おじさん
    ???「監視とか辛くない?

    ECSのコンソールってタスクごとのCPU使用率とか見れんし」


    View full-size slide

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


    View full-size slide

  30. 疑問③ サーバ運用監視おじさん
    回答例1:「Container Insights使っていきましょう」

    有効にすると、クラスター、サービス、タスク単位での詳細な
    メトリクスが取得できます。


    View full-size slide

  31. 謎の敵③ サーバ運用監視おじさん
    回答例2:「タスクのサイドカーとして、

    NewRelic、Mackerelなどのエージェントを起動しましょう。」


    View full-size slide

  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)


    公式ドキュメントを見ると、簡単に設定でき
    ます。


    View full-size slide

  33. まとめ
    今日発表した設定は、今後PR TIMES開発者ブログ
    (https://developers.prtimes.jp/)

    にて随時発信予定です。


    お手すきの際にぜひ覗いてみてください!


    View full-size slide