Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
あぁ…我らのECS…
Search
kensho
September 24, 2022
Technology
0
1.3k
あぁ…我らのECS…
PHPカンファレンス2022 スポンサーLT登壇資料
kensho
September 24, 2022
Tweet
Share
More Decks by kensho
See All by kensho
テーブル設計のよくある罠と それに対する処方箋
iwashi623
0
19
PHPerもIaCを使おう! 17年物のインフラをTerraformに大移行
iwashi623
2
1.4k
今ならわかるDirectConnect
iwashi623
0
50
Other Decks in Technology
See All in Technology
Recap: Kotlin Language Features in 2.0 and Beyond (Michail Zarečenskij)
dalinaum
0
190
Next.js の fetch 拡張とキャッシュ機構の違いを理解する
ryo_manba
3
540
Okioに愛を込めて
ryunen344
3
840
はてなのチーム開発一巡り / Hatena Engineer Seminar 30
daiksy
0
220
現場の失敗から学ぶ!プロダクトバックログアイテムの改善/Learn_from_On-Site_Failures!_Improving_Product_Backlog_Items
m_iyama
0
150
ベイジアンABテストってありなの? / Is Bayesian AB Testing Truly Effective?
ak_iyama
1
480
layerx-improve-development-productivity-of-product-engineers
shnjtk
0
190
超入門 SRE
ryuichi1208
5
3.2k
Refactoring to Expressive Kotlin
davidkwon7
0
200
BedrockUpdatesPost-GW Summary
hedgehog051
2
180
Lernen durch Schmerzen! Mit Reinforcement Learning selbstlernende Systeme entwickeln
joergneumann
0
210
スクラムチームの品質戦略 1年の歩み
hacomono
PRO
1
130
Featured
See All Featured
Web development in the modern age
philhawksworth
203
10k
Build The Right Thing And Hit Your Dates
maggiecrowley
27
2.1k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
128
32k
How GitHub Uses GitHub to Build GitHub
holman
471
290k
Visualization
eitanlees
137
14k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
275
13k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
19
7.1k
jQuery: Nuts, Bolts and Bling
dougneiner
60
7.3k
Why Our Code Smells
bkeepers
PRO
331
56k
The Cost Of JavaScript in 2023
addyosmani
25
4.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
15
8.6k
Transcript
あぁ... 我らのECS... 株式会社PR TIMES 岩下 拳勝
自己紹介 名前: 岩下 拳勝 年次: 21卒(新卒2年目) GitHub, Twitter: SardineTa23(iwashi) 主な担当業務:
PR TIMES STORYバックエンド開発・インフ ラ運用 趣味: AWS認定資格取得(SAA/SOA/DVA)
アジェンダ 本発表では、私が昨年PR TIMES STORYの開発リーダーに任命されてか ら学んだ、ECS/Fargateの知見や設定を 発表していきます。
はじめに 新卒入社2ヶ月、ある日のこと・・・
はじめに 偉い人「PR TIMES STORYの開発リーダーをほしいです」
はじめに 僕「は、はぁ・・・😓 (よくわからんけどとりあえずやってみるか)」
はじめに とりあえずインフラを見に行くと…
はじめに ECS, Fargate, Aurora, ElastiCache, DocumentDB... 何もわからん...
はじめに 完全に詰んだ👼
はじめに 一緒にPR TIMESで使用しているECSとその設定 について勉強しましょう。
コンテナ 皆さん、コンテナ使ってますか?
コンテナ コンテナのメリット • アプリケーションの依存関係をコンテナ内で完結できる。 • 一度Buildしたイメージをスケーリングの際に簡単に使い回せる。 • (サーバー仮想化と違って)ゲストOSをマシンで動作させるためのリソー スが不要。
コンテナ AWSでコンテナを使うには… ECSが便利!
ECSとは… AWSが開発したコンテナオーケストレーションサービス。 https://aws.amazon.com/jp/ecs/
ECSとは… 複数のホスト上で動作している無数のコンテナを、 (頭のいい)AWSの人が作ったレールに乗りながら管理できる。 ECSがあると嬉しいこと
ECSとは… • DDoSなどでコンテナが落ちても、コンテナの切り離し、再デプロイを自動的に やってくれる。 • コンテナを予め指定したAZに均等に配置管理してくれる。 • ALBと組み合わせることで、リクエストの負荷分散を自動的にしてくれる。 具体的なECSメリット
ECSとは… ECSには、EC2起動タイプとFargate起動タイプがある
ECSとは… Fargate起動タイプのメリット・デメリット メリット • ホストの管理が不要 デメリット • (EC2起動タイプと比べて)使い方次第で若干コストが割高
• ホストのOS管理ができない
PR TIMES STORY PR TIMES STORY (https://prtimes.jp/story) では、ECS/Fargateを使ってLaravelを 動作させて運用しています。
PR TIMES STORY
PR TIMES STORY ここからは、ECS/Fargateを運用していくにあたってのいくつ かの疑問点と、 その疑問に対してPR TIMES STORYが導入しているECSの 設定についてお話します。
疑問① sshおじさん ???「ホストがない?SSHできないなんてありえな い!デバックできないじゃん!」
疑問① 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`のようなことを実行で きる。
疑問① sshおじさん ECS Execの有効化 ECS Execはコンソール上から有効化できないため、 AWS CLIやTerraformなどで有効化する必要がある。
疑問② インフラ担当心配性おじさん ???「マイグレーション管理とかどうしてんの? まさか毎回、` php artisan migrate`を手打ちするの?」
疑問② インフラ担当心配性おじさん 回答例:「デプロイワークロードの中でMigration用の FargateTaskを実行しましょう!」
疑問② インフラ担当心配性おじさん PR TIMES STORYでは… CodeBuildのワークロード(buildspec.yml)の中でmigration用の ECSタスクを実行しています。
疑問③ サーバ運用監視おじさん ???「監視とか辛くない? ECSのコンソールってタスクごとのCPU使用率とか見れんし」
疑問③ サーバ運用監視おじさん たしかにデフォルトではECS Serviceごとにしか見れない😓
疑問③ サーバ運用監視おじさん 回答例1:「Container Insights使っていきましょう」 有効にすると、クラスター、サービス、タスク単位での詳細な メトリクスが取得できます。
謎の敵③ サーバ運用監視おじさん 回答例2:「タスクのサイドカーとして、 NewRelic、Mackerelなどのエージェントを起動しましょう。」
謎の敵③ サーバ運用監視おじさん 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) 公式ドキュメントを見ると、簡単に設定でき ます。
まとめ 今日発表した設定は、今後PR TIMES開発者ブログ (https://developers.prtimes.jp/) にて随時発信予定です。 お手すきの際にぜひ覗いてみてください!