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
tututen
October 19, 2019
Technology
1
1.4k
スキマ時間でもコードが書きたい
Spoke by Developers.IO 2019 in Sapporo.
tututen
October 19, 2019
Tweet
Share
More Decks by tututen
See All by tututen
今いるチームの紹介
tututen
0
220
Pythonを使ってターミナル上でアニメーションを動かそう
tututen
0
2.4k
Jupyterを触ろう
tututen
0
330
Other Decks in Technology
See All in Technology
重厚長大企業で、顧客価値をスケールさせるためのプロダクトづくりとプロダクト開発チームづくりの裏側 / Developers X Summit 2025
mongolyy
0
180
AS59105におけるFreeBSD EtherIPの運用と課題
x86taka
0
260
【M3】攻めのセキュリティの実践!プロアクティブなセキュリティ対策の実践事例
axelmizu
0
180
adk-samples に学ぶデータ分析 LLM エージェント開発
na0
3
520
グローバルなコンパウンド戦略を支えるモジュラーモノリスとドメイン駆動設計
kawauso
3
8.1k
JJUG CCC 2025 Fall バッチ性能!!劇的ビフォーアフター
hayashiyuu1
1
410
なぜブラウザで帳票を生成したいのか どのようにブラウザで帳票を生成するのか
yagisanreports
1
190
ABEMAのCM配信を支えるスケーラブルな分散カウンタの実装
hono0130
4
1.1k
LINEスキマニ/LINEバイトにおけるバックエンド開発
lycorptech_jp
PRO
0
370
AI エージェントを評価するための温故知新と Spec Driven Evaluation
icoxfog417
PRO
2
680
今すぐGoogle Antigravityを触りましょう
rfdnxbro
0
150
雲勉LT_Amazon Bedrock AgentCoreを知りAIエージェントに入門しよう!
ymae
2
200
Featured
See All Featured
Become a Pro
speakerdeck
PRO
29
5.6k
Bash Introduction
62gerente
615
210k
A Tale of Four Properties
chriscoyier
162
23k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
680
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
118
20k
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