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.2k
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.4k
SSM+yamlを使って開発別に 暗号化したDBパスワードを読み込む / yamlssm-sample
sioncojp
2
2.6k
私が最近Mackerelでやったこと
sioncojp
1
5k
Go開発環境と勉強方法
sioncojp
0
430
MackerelでGetWild
sioncojp
4
7.5k
Other Decks in Programming
See All in Programming
Devoxx BE - Local Development in the AI Era
kdubois
0
140
AI駆動で0→1をやって見えた光と伸びしろ
passion0102
1
780
Go言語の特性を活かした公式MCP SDKの設計
hond0413
1
450
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
imkaoru
4
890
技術的負債の正体を知って向き合う
irof
0
230
スマホから Youtube Shortsを見られないようにする
lemolatoon
27
33k
『毎日の移動』を支えるGoバックエンド内製開発
yutautsugi
2
280
Pythonに漸進的に型をつける
nealle
1
120
XP, Testing and ninja testing ZOZ5
m_seki
3
810
3年ぶりにコードを書いた元CTOが Claude Codeと30分でMVPを作った話
maikokojima
0
620
コードとあなたと私の距離 / The Distance Between Code, You, and I
hiro_y
0
190
Writing Better Go: Lessons from 10 Code Reviews
konradreiche
3
5.9k
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
185
22k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
For a Future-Friendly Web
brad_frost
180
10k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Making Projects Easy
brettharned
120
6.4k
Balancing Empowerment & Direction
lara
5
700
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Into the Great Unknown - MozCon
thekraken
40
2.1k
Mobile First: as difficult as doing things right
swwweet
225
10k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
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