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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
Flow 不死:AI 時代 DevOps 的不變本質
cheng_wei_chen
2
520
作る力から、見極める力へ — AI時代に広がるエンジニアの価値と役割
rince
0
340
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
140
從開發到部署全都交給 AI:實作 AI 驅動的自動化流程
appleboy
0
170
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
110
【Snowflake Summit 2026 Recap!!】Snowflake Summit Deep Dive: Security & Governance
civitaspo
1
320
「ビジネスがわかるエンジニア」とは何か?
ryooob
0
330
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
170
#エンジニアBooks 30分でわかる 「技術記事を書く技術」 / engineer-books 2026-06-30
jnchito
1
100
LayerX コーポレートエンジニアリング室におけるサプライチェーンセキュリティへの取り組み / Supply Chain Security at LayerX Corporate Engineering
yuyatakeyama
3
840
Oracle Cloud Infrastructure:2026年6月度サービス・アップデート
oracle4engineer
PRO
0
340
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
2
470
Featured
See All Featured
A designer walks into a library…
pauljervisheath
211
24k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
340
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
170
Measuring & Analyzing Core Web Vitals
bluesmoon
9
870
Everyday Curiosity
cassininazir
0
240
Being A Developer After 40
akosma
91
590k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
450
Utilizing Notion as your number one productivity tool
mfonobong
4
330
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
370
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
310
[SF Ruby Conf 2025] Rails X
palkan
2
1.1k
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