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
DatadogのArchived LogsをSnowflakeで高速に検索する方法(Archive Searchでオワコンにならないことを祈って) / How to search Datadog Archived Logs quickly with Snowflake (hoping Datadog Archive Search doesn’t make this obsolete)
civitaspo
0
110
商品比較サービス「マイベスト」における パーソナライズレコメンドの第一歩
ucchiii43
0
270
構造化・自動化・ガードレール - Vibe Coding実践記 -
tonegawa07
0
170
CIを整備してメンテナンスを生成AIに任せる
hazumirr
0
510
Gemini CLIの"強み"を知る! Gemini CLIとClaude Codeを比較してみた!
kotahisafuru
3
910
대규모 트래픽을 처리하는 프론트 개발자의 전략
maryang
0
110
Flutterと Vibe Coding で個人開発!
hyshu
1
220
[DevinMeetupTokyo2025] コード書かせないDevinの使い方
takumiyoshikawa
2
250
構文解析器入門
ydah
7
2k
AIのメモリー
watany
12
1.2k
Jakarta EE Meets AI
ivargrimstad
0
570
QA x AIエコシステム段階構築作戦
osu
0
240
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
40
2k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
332
22k
Music & Morning Musume
bryan
46
6.7k
Thoughts on Productivity
jonyablonski
69
4.8k
A Tale of Four Properties
chriscoyier
160
23k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Practical Orchestrator
shlominoach
190
11k
BBQ
matthewcrist
89
9.8k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
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