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
スキマ時間でもコードが書きたい
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
tututen
October 19, 2019
Technology
1.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
スキマ時間でもコードが書きたい
Spoke by Developers.IO 2019 in Sapporo.
tututen
October 19, 2019
More Decks by tututen
See All by tututen
今いるチームの紹介
tututen
0
230
Pythonを使ってターミナル上でアニメーションを動かそう
tututen
0
2.6k
Jupyterを触ろう
tututen
0
350
Other Decks in Technology
See All in Technology
穢れた技術選定について
watany
18
5.7k
AI時代のPlaywright活用(システムテストを自動化する ー 実行エンジンにPla ywrightを選んだ理由)
ynisqa1988
1
740
SoccerMaster: A Vision Foundation Model for Soccer Understanding
kzykmyzw
0
150
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
450
Kaggleで成長するために意識したこと
prgckwb
2
420
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
1k
AI時代の開発生産性は、個人技からチーム設計へ
moongift
PRO
4
2.4k
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
1
230
[2026-07-15] AI Ready なはずだったアーキテクチャと、見えてきた課題・次に目指す状態
wxyzzz
11
4k
しくみを学んで使いこなそう GitHub Copilot app
torumakabe
2
290
OpenTelemetryにおけるGoのゼロコード・コンパイル時計装について #fukuokago
quiver
0
130
AIレビューはどこまで任せられるのか?自動化と人が背負うレビューの境界
sansantech
PRO
3
1.1k
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.6k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
320
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
650
For a Future-Friendly Web
brad_frost
183
10k
Discover your Explorer Soul
emna__ayadi
2
1.2k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
460
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Transcript
εΩϚ࣌ؒͰίʔυ͕ॻ͖͍ͨ ࣄۀ։ൃ෦ɹ։ൃνʔϜ ొஃऀԣࢁจਓ
ࣗݾհ
ࣗݾհ wԣࢁจਓ !UVUVUFO wࣄۀ։ൃ෦։ൃνʔϜ w&$ɺ$3.͚ͷ CBDLFOENJDSPTFSWJDFT w+"7"ϓϩάϥϚ w͖ͳ৯αʔϞϯʂ
w࠷ۙڕհྨͷෆړͷχϡʔε͕ʜ
࠷ۙίʔυॻ͍ͯΔํʁ
ίʔυΛॻ͘ͷ͕͓ࣄͷํʁ
࠷ۙϓϩμΫτίʔυॻ͍ͯΔํʁ
࠷ۙͷ͓ࣄ wաڈ࡞ͨ͠αʔϏεͷҾ͖ܧ͗ࢿྉ࡞ wϚΠΫϩαʔϏεຊ൪Ξοϓσʔτ࡞ۀखॱॻ࡞ wϚΠΫϩαʔϏεʹରͯ͠ͷෛՙࢼݧ wϦϦʔε࡞ۀʢ࣋ͪճΓ੍ʣ wۃكʹCVHpY
จॻΛͨͨ͠ΊΔ͓ࣄଟΊ +BWBΛॻ͓͘ࣄ͕΄΅ͳ͠
࠷ۙͷ͓ࣄ wաڈ࡞ͨ͠αʔϏεͷҾ͖ܧ͗ࢿྉ࡞ wϚΠΫϩαʔϏεຊ൪Ξοϓσʔτ࡞ۀखॱॻ࡞ wϚΠΫϩαʔϏεʹରͯ͠ͷෛՙࢼݧ wϦϦʔε࡞ۀʢ࣋ͪճΓ੍ʣ wۃكʹCVHpY
\จॻ +BWB^Λॻ͘ࣄҎ֎
ຊൃදͷ͍ͭͯ wຊൃදొஃऀͷࠓ͋Δٕज़͔Β೧ग़ͨ͠ղ๏ wࠓճ͢༰ɺʮ࠷దղʯͰܾͯ͠ແ͍ wʮͬͱ͍͍ํ๏͕͋ΔΑʂʯͬͯͱ͖ϋογϡλάΛͭ ͚ͯπΠʔτ͍ͯͩ͘͠͞ʂʂʢݟ·͢ɺ࣌ʹฉ͖·͢ʣ
հࣄྫ w$BTFσʔλೖܦաΛݟ͍ͨ w$BTF&$4ͷλεΫͷࢮҼ͕͠Γ͍ͨ w$BTF*TTVFͷͬͯΔNJMFTUPOFΛ֬ೝ͍ͨ͠
Case 1 σʔλೖܦաΛݟ͍ͨ
$BTFσʔλೖܦաΛݟ͍ͨ wఆͨ݅͠Λ࿙Εͳ͘ొͰ͖Δ͔ͷ֬ೝ wೖ·Ͱͷ࣌ؒΛࢀߟͱͯ͠ܭଌ͍ͨ͠ w%#ͱ&4ͱͷԆ͕͋ΔͳΒଌఆ͍ͨ͠ wσʔλೖͷεϧʔϓοτ͕ೖ࠷தʹམͪͳ͍͔ɺͬ͘͟ Γ֬ೝ͍ͨ͠ wંΕઢάϥϑͰ֬ೝ͍ͨ͠ʂ
ߏਤ
ߏਤ DBͱESͷ͕݅ Ұக͢Δ͔ͷ֬ೝ
ίʔυͰΔ͜ͱɾΒͳ͍͜ͱ wCBTIͰఆظతʹ%#ͱ&4ΛQPMMJOH͢Δ wඵຖʹऔಘ͍ͨ͠ɻ͔͠͠ɺ݅૿͑Δ͝ͱʹ݅औಘ࣌ ʹ%#ɼ&4ڞʹԆ͕େ͖͘ͳΓɺඵຖ͔ΒͣΕΔɻ ΏΔ͘ʮTMFFQʯͰQPMMJOH͢ΔʹͱͲΊ͓ͯ͘ wશࣗಈԽΛࢦ͢Θ͚Ͱແ͍ͷͰɺ άϥϑΛ࡞ΔͷίʔυͰؤுΒͳ͍ wUTWͰϑΝΠϧʹॻ͖ग़ͤ(PPHMF4QSFBETIFFUͰάϥϑ Λ࡞Δ͜ͱ͕Ͱ͖Δ
EBUFίϚϯυͰ+45औಘ $ date +"%Y/%m/%d %H:%M:%S %Z" 2019/09/xx 02:44:38 UTC
$ TZ=JST-9 date +"%Y/%m/%d %H:%M:%S %Z" 2019/09/xx 11:44:54 JST w&$ͷλΠϜκʔϯΛมߋͤͣʹEBUFίϚϯυΛ+45Ͱ ֬ೝ͢ΔখٕEBUFίϚϯυͷ಄ʹҎԼΛ͚ͭΔ 5;+45PS5;"TJB5PLZP
%#ɺ&4ͷDPVOUΛऔಘ͢Δ 1 # DB 2 DB_COUNT=$(mysql -uroot -p${PASSWD} \
3 -h${AURORA_ENDPOINT} ${DB_NAME} \ 4 -N -e 'select count(*) from '${TABLE_NAME}) 5 6 # ES 7 ES_COUNT=$(curl -s -H"Content-Type:application/json" \ 8 "http://${ES_ENDPOINT}:9200/${ES_INDEX_NAME}/_search" \ 9 -XPOST -d'{}' | jq '.hits.total') 10
ඵ͓͖ʹQPMMJOH͢Δ 1 LOG_NAME=count.log 2 if [ -f ${LOG_NAME} ];
then 3 rm ${LOG_NAME} 4 fi 5 6 while :; do 7 8 # ͜͜ʹDBͱESͷcountΛऔಘ͢ΔॲཧΛೖΕΔ 9 10 printf "%s\t%s\t%s\n" \ 11 "$(TZ=JST-9 date +'%m/%d %H:%M:%S JST')" \ 12 "${DB_COUNT}" "${ES_COUNT}" | tee -a ${LOG_NAME} 13 sleep 5 14 done
࣮ߦ݁ՌʢTBNQMFʣ 09/xx 02:09:12 JST 14492481 7606726 09/xx 02:09:21 JST
14498630 7610508 09/xx 02:09:30 JST 14504525 7611873 09/xx 02:09:39 JST 14510488 7615665 09/xx 02:09:49 JST 14516415 7618484 09/xx 02:09:58 JST 14522609 7620923 09/xx 02:10:07 JST 14528732 7624223 09/xx 02:10:16 JST 14535006 7627025 09/xx 02:10:26 JST 14541305 7630306 09/xx 02:10:35 JST 14547499 7633213
࣮ߦ݁ՌʢTBNQMFʣ 09/xx 02:09:12 JST 14492481 7606726 09/xx 02:09:21 JST
14498630 7610508 09/xx 02:09:30 JST 14504525 7611873 09/xx 02:09:39 JST 14510488 7615665 09/xx 02:09:49 JST 14516415 7618484 09/xx 02:09:58 JST 14522609 7620923 09/xx 02:10:07 JST 14528732 7624223 09/xx 02:10:16 JST 14535006 7627025 09/xx 02:10:26 JST 14541305 7630306 09/xx 02:10:35 JST 14547499 7633213
࣮ߦ݁ՌʢTBNQMFʣ 09/xx 02:09:12 JST 14492481 7606726 09/xx 02:09:21 JST
14498630 7610508 09/xx 02:09:30 JST 14504525 7611873 09/xx 02:09:39 JST 14510488 7615665 09/xx 02:09:49 JST 14516415 7618484 09/xx 02:09:58 JST 14522609 7620923 09/xx 02:10:07 JST 14528732 7624223 09/xx 02:10:16 JST 14535006 7627025 09/xx 02:10:26 JST 14541305 7630306 09/xx 02:10:35 JST 14547499 7633213 σʔλͷಉظ͕શମతʹԆ͕େ͖͘ɺ ऴ൫&4ͷσʔλ͕ߥͿ͍ͬͯΔͷͰɺ &4ଆʹͳΜΒ͔ͷݪҼ͕͋Γͦ͏ ͬͯͷ͕ਪଌͰ͖ͨΓ͠·͢
࡞ͬͯΈͯ w&4ͷΠϯελϯελΠϓͰͷੑೳҧ͍ͰೖԆʹݟ͑ͯ ௐ͔ͬͨ͢͠ wදܭࢉΞϓϦͷάϥϑ࿑ͤͣݟ͍͢ wσʔλྔ͕૿͑ͯདྷΔͱඵຖʹͳΒͳ͍ wEBUFίϚϯυͷ5;͔Βྡྷ
Case 2 ECSͷλεΫͷࢮҼ͕Γ͍ͨ
$BTF&$4ͷλεΫͷࢮҼ͕͠Γ͍ͨ w&$4Ͱಈ͍ͯΔ&41045͢ΔαʔϏεͷλεΫ͕େྔʹࢮ͵ wதʹ࣌ؒෛՙݕূ͍ͯ͠ΔͨΊɺλεΫͷ4501ใ͕ ".$্͔Βফ͍͑ͯΔ wˢIܦա͢Δͱফ͍͑ͯΔ wʮݕূ͍ͨ݁͠Ռʯ͕ग़ͳ͍ݪҼ͕Θ͔Βͳ͍ͷͰɺௐࠪ͠ͳ ͍Θ͚ʹ͍͔ͳ͍ wத࣌ؒΓ͍ͭͯࢹͨ͘͠ͳ͍ʢ༡ͼ͍ͨʣ
ߏਤ ͜ͷαʔϏεͷλεΫ͕ Α͘མͪΔ
λεΫͷ4501ใ ݱࡏʣ ఀࢭݪҼͷใ͕1࣌ؒܦͭͱ ফ͑ͯɺ͑ͳ͘ͳΔ
ίʔυͰΔ͜ͱɾΒͳ͍͜ͱ wఆظ࣮ߦͷબࢶ৭ʑ͋ΔͩΖ͏͚Ͳɺख࣋ͪͷثͰҰ ൪ѻ͍͍҆"84-BNCEBʢ1ZUIPOʣ "NB[PO $MPVE8BUDI&WFOUT Ҏ߱$8&WFOUT w&YJUͨ͠λεΫͷϑΝΠϧϨετΞͰ͖ͨΒ͋ͱ͋ͱௐ ͍͚ࠪ͢͠ΕͲɺख࡞ۀ͔ͭͬͯͨΒͷӡ༻Ͱ
wϝʔϧݸਓతʹຒΕͤ͞Δࣗ৴͕͋ΔͷͰɺࣾνϟο τɺࠓճ4MBDL௨ͯ͠ϩάΛ͢ ※ड৴τϨΠͷΠϝʔδը૾Ͱ͢→
"84-BNCEBͬͯ௨͠Α͏ w"84$-*Ͱӈͷใ͕औΕΔ͔֬ೝ wMJTUUBTLT͔Β4UPQͨ͠UBTL"SOΛऔಘ wEFTDSJCFUBTLT͔Β4UPQͨ͠ใΛҾ͖ग़ͤΔͷΛ֬ೝ w"84$-*ͰͰ͖Δ͜ͱCPUPͰͰ͖Δ͜ͱ w௨*ODPNJOH8FCIPPLTΛ͍4MBDL wIͰফ͑ΔͳΒ͝ͱ$8&WFOUTͰఆظ࣮ߦ͠ɺલճ࣮ ߦ͠௨͓͑ͨ͠UBTL"SOΛ4ʹอଘ
"84$-*CPUP aws ecs list-tasks \ --cluster ${CLUSTER_NAME} \ --service-name
${SERVICE_NAME} \ --desired-status "STOPPED" ecs = boto3.client("ecs") resp = ecs.list_tasks( cluster=CLUSTER_NAME, serviceName=SERVICE_NAME, desiredStatus="STOPPED") wTVCDPNNBOEΛTOBLF DBTFʹมͨ͠ϝιου ໊ʹͳͬͯΔ wύϥϝʔλ໊ΛDBNFM DBTFʹมͨ͠Ҿʹ ͳ͍ͬͯΔ wSFTQʹKTPO͔ΒQZUIPO ͷEJDUMJTUʹม͞Ε ͨσʔλ͕ฦͬͯ͘Δ
࣮ߦ݁Ռ
࣮ߦ݁Ռ 4MBDLʹϩά͕ΔͷͰɺͲ͏ͯ͠λεΫ͕ࢮΜ͔ͩͲ͏͔͕Θ͔Δɻ ͜ΕΒͷใΛݩʹ࣍ճҎ߱ͷෛՙࢼݧͰىಈύϥϝʔλλεΫͷϝϞϦྔΛ ௐͨ͠ΓɺDPOUBJOFS*OTUBODF"SOΑΓDPSFEVNQΛճऩͰ͖ͨΓͨ͠ɻ
࡞ͬͯΈͯ wࢮΜͩλεΫͷௐ͕͍ࠪͩͿָʹͳͬͨ wಋೖલλεΫ͕ࢮΜͩ͜ͱʹؾ͍ͮͨͱ͖ʹ౿Έ͔Β &$4ͷϗετΠϯελϯεݸʹରͯ͠ɺ44)ϦϞʔτί ϚϯυΛୟ͍ͯϗετΛ୳ͨ͠ wಛఆͷαʔϏε͚ʹ࡞ͬͨͱ͜Ζɺ্ͷਓ͔ΒʮશαʔϏ ε༻ͷཉ͍͠ʯͱ͍͏͕Ͱͨ ʢ࣌ؒΛݟ͚ͭͯରԠ͍ͨ͠ͳʔʣ
Case 3 IssueͷͬͯΔmilestoneΛ֬ೝ͍ͨ͠
$BTF*TTVFͷͬͯΔNJMFTUPOFΛ֬ೝ͍ͨ͠ wຖिϦϦʔε࡞ۀ͕͋Δ w୲࣋ͪճΓɺೋਓͰ࡞ۀ͢Δ w࡞ۀͷதʹݸ͋ΔϦϙδτϦͷNJMFTUPOFΛ֬ೝ͠ɺ ͬͨ*TTVFΛҠಈ͠ɺNJMFTUPOFΛDMPTF͢Δ࡞ۀ͕͋Δ wʮ͑ɺͳʹͦΕ໘͍͘͞ɻ͏ͪͷ൪͕དྷΔલʹͬͯΔ NJMFTUPOF͚ͩݟΕ͍͍Α͏ʹ͍ͨ͠ʯ
ίʔυͰΔ͜ͱɾΒͳ͍͜ͱ w࠷ॳCBTIͷGPS PQFOίϚϯυͬͯϒϥβʹશ෦දࣔͯ͠ HSFQͯ͠୳ͦ͏ˠݸͷλϒΑΖ͘͠ͳ͍ w"84-BNCEB (JU)VC"1*WΛ͍ɺ֤ϦϙδτϦͷNJMFTUPOF ͱɺNJMFTUPOFʹͬͯΔ*TTVF13Λऔಘ wผͷCPUͷίʔυʢOPU࡞ऀʣ͕͋ΔͷͰೝূ෦ྲྀ༻ w͜ΕΒͷใΛ4MBDLʹ௨
w*ODPNJOH8FCIPPLTͷ63-$BTFͷΛྲྀ༻ wNJMFTUPOFʹ͍ͬͯΔ*TTVFͷҠಈɺNJMFTUPOFΛด͡Δॲཧ࣮͠ ͳ͍ʢʹ֬ೝϦϦʔε୲ऀ͕Δʣʢཧ༝ޙड़ʣ
ߏਤ w࣌Ͱಈ͔͢ͷͰ$8&WFOUT Ͱ࣮ߦ wखಈͰ࣮ߦ͍ͨ͠ཁʹԠ͑ TMBTIDPNNBOE "1* (BUFXBZͷ࿈ܞʢޙՃʣ wJDPOΛมߋͰ͖Δ͜ͱΛ͍͍ ͜ͱʹ̍MBNCEBෳͯ͠Δ
࣮ߦ݁Ռ
࣮ߦ݁Ռ ϦϦʔε*TTVF13ͷ "TTJOFFͷਓʹϦϓϥΠ͕ͭ͘Α
࣮ߦ݁Ռ ϦϦʔεNJMFTUPOFͷDMPTF ʹ͍ͭͯ֬ೝ͢ΔΑ
࡞ͬͯΈͯ wධ͕Α͔ͬͨ͠ɺࣗͰͬͯΈͯͱͯศརͩͬͨ wࣗͷϦϦʔεલʹཉ͍͠ػೳ͕Ͱ͖ͯͯͦͷͷ͏ͪʹ࣮ͨ͠Γ wࣗಈͰTFNWFS͚ͭΔػೳͱ͔ߦ͚ͦ͏ͩΑͶɺͱ͍͏ໝ͕͔ͲͬͨΓ w·͊ɺ՝ͨ͘͞Μ w༵Ҏ֎ʹϦϦʔε͕ൃੜ͢Δͱ৭ʑͱ่յ͢Δ wॲཧతʹʮ*TTVFʢ13ʣΛ࣍ͷNJMFTUPOFҠಈ͢Δʯͱ͍͏ॲཧ࣮ ͨ͠Γ͢Δ͕ɺۦ͚ࠐΈ*TTVFΛݟಀ͢Մೳੑ͕͋ͬͨͷͰɺॲཧʹΈ ࠐΜͰ͍ͳ͍
ۦ͚ࠐΈ͓ئ͍ʢ*TTVFʣ ΊΑ͏ʂ
·ͱΊ
·ͱΊ wෛՙࢼݧͷதʹίʔυॻ͚Δͱ͜ΖʢTIFMMɺCPUʣ͕ͨ ͘͞Μ͋Δ wશࣗಈԽޙʑָ͕͔͚ͩͲɺൃల్্ͰΓ͗͢Δͱ ӡ༻ʹࢧো͕ͰΔ͔ʁʹ΄Ͳ΄Ͳ͕େࣄ wίϐϖͩΖ͏͕ͳΜͩΖ͏ָ͕Λ͢Δ w࡞Εͦ͏ͳΒαΫοͱ࡞ͬͯΈΔ wҊ֎େͨ͠࡞ۀ͡Όͳͯ͘ଞͷਓʹ͞ΔՄೳੑ͕͋Δ
None