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
FargateでService,RunTask,Cronを運用する/fargate-serv...
Search
Shohei Koyama
June 24, 2020
Programming
5
5.1k
FargateでService,RunTask,Cronを運用する/fargate-service-runtask-cron-operation-tips
https://jawsug-container.connpass.com/event/177732/
Shohei Koyama
June 24, 2020
Tweet
Share
More Decks by Shohei Koyama
See All by Shohei Koyama
成長をサポートするピープルマネジメントのやり方
sioncojp
11
2.9k
FOLIOのterraform運用tips/folio-terraform-operation-tips
sioncojp
2
4k
FOLIOモバイルアプリのインフラ構成/folio-mobile-infra-architecture
sioncojp
3
2.3k
SSM+yamlを使って開発別に 暗号化したDBパスワードを読み込む / yamlssm-sample
sioncojp
2
2.6k
私が最近Mackerelでやったこと
sioncojp
1
4.9k
Go開発環境と勉強方法
sioncojp
0
430
MackerelでGetWild
sioncojp
4
7.5k
Other Decks in Programming
See All in Programming
Understanding Ruby Grammar Through Conflicts
yui_knk
1
120
State of CSS 2025
benjaminkott
1
120
ライブ配信サービスの インフラのジレンマ -マルチクラウドに至ったワケ-
mirrativ
2
260
TDD 実践ミニトーク
contour_gara
0
140
物語を動かす行動"量" #エンジニアニメ
konifar
14
5.4k
AHC051解法紹介
eijirou
0
620
あのころの iPod を どうにか再生させたい
orumin
2
2.5k
オープンセミナー2025@広島「君はどこで動かすか?」アンケート結果
satoshi256kbyte
0
200
あなたとJIT, 今すぐアセンブ ル
sisshiki1969
1
720
[FEConf 2025] 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년
mmmaxkim
0
980
CSC305 Summer Lecture 12
javiergs
PRO
0
100
20250808_AIAgent勉強会_ClaudeCodeデータ分析の実運用〜競馬を題材に回収率100%の先を目指すメソッドとは〜
kkakeru
0
200
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
What's in a price? How to price your products and services
michaelherold
246
12k
Speed Design
sergeychernyshev
32
1.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.4k
Why Our Code Smells
bkeepers
PRO
338
57k
GitHub's CSS Performance
jonrohan
1031
460k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Transcript
@sion_cojp 'BSHBUFͰ4FSWJDF 3VO5BTL $SPOΛӡ༻͢Δ 4IPIFJ,PZBNB
自己紹介 Shohei Koyama / @sion_cojp Timee, Inc. SRE,DRE,ίʔϙϨʔτΤϯδχΞ ݩϓϩήʔϚʔͰΞδΞνϟϯϐΦϯ GetWildۦಈ։ൃ
λΠϛʔ ͙͢ಇ͚͙͓͕ͯۚ͢ Β͑Δ εΩϚόΠτΞϓϦ
目次 ͳͥk8s͡Όͳͯ͘ECS͔ʁ Service, RunTask, Cronͱʁ ΞʔΩςΫνϟ ࣮ࡍͷӡ༻ςΫχοΫ ཧํ๏ ڞ௨Խ Deploy
ϝϯςφϯε ϩΪϯά ϞχλϦϯά
なぜk8sじゃなくてECSか? ECSʢFargateʣͰे k8sΛΔΑΓɺSRE͕αʔόαΠυͷαϙʔτ৭Μͳ ͜ͱͬͨ΄͏͕ελʔτΞοϓతʹخ͍͠ FargateͩͱΫϥελཧෆཁͰخ͍͠ vs
Service,RunTask,Cronとは? Service...αʔόʔ RunTask…ҙͷλΠϛϯάͰ࣮ߦ Cron…ఆظ࣮ߦʢcloudwatch eventsͰ ࢦఆͨ࣌ؒ͠ʹRunTaskΛ࣮ߦʣ
Railsで例えるとこんな感じ Service...rails s RunTask...rake db:migrate Cron...ఆظ࣮ߦ͍ͨ͠rake task
ServiceとRunTaskについて FargateʹλεΫ։࢝ํ๏͕̎ͭ͋Γ·͢ ͦΕ͕ServiceͱRunTaskͰ͢ https://docs.aws.amazon.com/cli/latest/reference/ecs/index.html#cli-aws-ecs console上より
ͦΕͧΕͷΞʔΩςΫνϟ
Service
Cron
RunTask
࣮ࡍͷӡ༻ςΫχοΫ
管理方法: terraformの話 terraform ͏ج൫Λڞ௨Խ γϯϓϧͳઃܭ εέʔϧΛ؆୯ʹग़དྷΔΑ͏ʹ͢Δ Serviceでは、 大きなスパイクを予測してるときはこんな感じでコンテナを増します
管理方法: 図の話 ΞʔΩςΫνϟਤͷอଘ ৽͘͠ࢀೖ͢Δਓ͕ཧղ͍͢͠ͷͰਤඞͣ࡞Γ·͠ΐ͏ drawioͰॻ͍ͯ .drawio .pngϑΝΠϧΛอଘͯ͠·͢ ΞʔΩςΫνϟ͍͍ײ͡ʹվम͞Ε͍ͯ͘ͷͳͷͰɺ ඞཁͳͱ͖मਖ਼͠·͢
管理方法: チュートリアルの話 νϡʔτϦΞϧ sandboxͰ୭͕ؾܰʹ࡞ग़དྷΔΑ͏ʹͳͬͯ·͢ ࣮ࡍίʔυݟΔΑΓಈ͔ͯ͠ίϯιʔϧΛϙνϙν ͷํ͕ཧղ͍ͨ͢͠Ί 1つ15分くらいで出来上がります チュートリアルで使うコマンド類は Docker化 or
バイナリダウンロード terraformはmake経由で バイナリがダウンロードされるので makeさえ入ってればすぐ叩けます
共通化 terraform moduleͰڞ௨Խ มԽ͕ଟ͍ͱ͜ΖผͷιϦϡʔγϣϯΛߟ͑·͢ ʢྫ͑TaskDefinitionͷ࡞ͳͲʣ ʢฐࣾͩͱιϑτΣΞΛ࡞ͯ͠ղܾ͢Δ͜ͱ͕ଟ͍ʣ λΠϛʔڞ௨Խ͕ਐΜͰ͓Γɺ ৽نαʔϏεՃ͢ΔࡍͰDockerfile͑͋͞Ε ͙͢ग़དྷ·͢
共通化: Serviceの場合 ALBとfargateは切り離したmoduleで管理してる またclusterは変更が発生しない + 共通なので切り離し
共通化: 実際のcronのterraform clusterͱtaskͷ̎ͭͷmoduleߏ Լه͕clusterͷίʔυ RunTaskもほぼ同じmoduleを扱ってます Cloudwatch eventsがあるかないかなので。
ͪ͜Β͕λεΫՃ༻ جຊతʹmodule͚ͩͰ ࣄΓΔ͕ɺ IAMͷՃ͕͋Ε ը૾ͷ௨Γઃఆ 共通化: 実際のcronのterraform
Deploy ecs-deployͱ͍͏πʔϧʢGoʣ TaskDefinitionͷupdate Serviceͷupdate RunTaskͷ࣮ߦ Cronͷ࣌ؒมߋ ϩΪϯάͷͨΊɺfluent-bitΛαΠυΧʔͰཱͯΔ
Deploy αʔϏεଆͰ༻ҙ͞ΕͨMakefileʹecs-deployΛͬͨ deployϩδοΫ͕ॻ͔Εͯ·͢ ݖݶ͑͋͞ΕϩʔΧϧͰ࣮ߦՄೳͳMakefile ͦΕΛslack-deployͱ͍͏αʔόʢGoʣΛܦ༝ͯ͠ɺ slackܦ༝Ͱ࣮ߦͯ͠·͢
メンテナンス slack-deploy͔ΒϝϯςφϯεϞʔυʹͰ͖·͢ʢલड़ͷπʔϧʣ Service ALBʹର̎͠छྨͷlistenerϧʔϧΛΓସ͑ͯΔ͚ͩ ECSʹશ෦ߦ͘ϧʔϧ ϝϯς༻ͷಛఆͷhttp response + 503Λฦ͢ϧʔϧ Cron
ࢦఆͨ͠ͷ or શͯΛdisable/enableͰ͖·͢
ロギング Fargateʢfirelens) → fluent-bit → datadog logs → firehose →s3
moduleઃܭΛͩ͜Θͬͨ݁Ռɺs3ྑ͍ײ͡ʹอଘ͞Ε·͢
ロギング ecs-deployଆͰڥมΛ͍͍ײ͡ʹηοτͯ͘͠Ε·͢ datadog logsͷλάʹΑΔݕࡧੑ্ https://hub.docker.com/r/sioncojp/fluent-bit-datadog-firehose
モニタリング: Service ecs-update-notify ʢGoͷπʔϧʣ λεΫ͕શʹΓସΘͬͨ࣌ͷ௨ λεΫ͕ΓସΘΒͳ͔ͬͨ࣌ͷΤϥʔ௨ https://github.com/sioncojp/ecs-update-notify
モニタリング: Service ͦΕҎ֎DatadogͰࢹ
モニタリング: RunTask, Cron clusterʹඥ͍ͮͨlambdaͰɺexit 0Ҏ֎ͷ߹ࢦఆͨ͠ Slack Webhook URLʹ௨
モニタリング: RunTask, Cron lambda͔Βdatadogʹ࣮ߦʹ͔͔ͬͨ࣌ؒʢελʔτ ~ ετοϓʣ Λඈͯ͠·͢
最後に FargateͱͯศརͰɺ λΠϛʔͰͱͯศརʹ༗ޮ׆༻ͯ͠·͢ʂ Ͱ͕͢ɺ࣮ࡍʹޮΑ͘ӡ༻͢ΔͷେมͰ͢ɻ ͦͷͨΊͷઃܭͱͯηϯε͕͍Γ·͢͠ɺ ղܾ͢ΔͨΊͷιϑτΣΞ։ൃೳྗେࣄͰ͢ɻ
None