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.3k
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
4.1k
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
440
MackerelでGetWild
sioncojp
4
7.6k
Other Decks in Programming
See All in Programming
チームをチームにするEM
hitode909
0
430
Graviton と Nitro と私
maroon1st
0
160
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.5k
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
4.9k
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
330
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
620
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
510
Deno Tunnel を使ってみた話
kamekyame
0
300
Cap'n Webについて
yusukebe
0
160
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
130
CSC307 Lecture 03
javiergs
PRO
1
460
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
1
470
Featured
See All Featured
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
140
Discover your Explorer Soul
emna__ayadi
2
1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Highjacked: Video Game Concept Design
rkendrick25
PRO
0
260
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
First, design no harm
axbom
PRO
1
1.1k
RailsConf 2023
tenderlove
30
1.3k
A designer walks into a library…
pauljervisheath
210
24k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
0
37
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
BBQ
matthewcrist
89
9.9k
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