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
golang.tokyo #12 LT, Kushi
Search
cnosuke
January 30, 2018
Technology
2.4k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
golang.tokyo #12 LT, Kushi
cnosuke
January 30, 2018
More Decks by cnosuke
See All by cnosuke
FintechとRailsとgRPCと
cnosuke
15
6.2k
Other Decks in Technology
See All in Technology
dbt と Snowflake と tag
kevinrobot34
1
140
AWS Blocks が楽しい #ゆるWeb札幌
tacck
PRO
0
110
AIに持続⼒を与える 判断の⻑期記憶設計
eiei114
1
660
平文パスワードはログに“残り” ── 肝心の侵入は“痕跡すら残らない”
kuroneko13
0
120
【Aiming】共通基盤なのに「共通化しない」課金・認証基盤「LINK」が選び取ったシングルテナント戦略と運用の秘訣
saikeda
0
160
Head First モブプログラミング / Head First Mobprogramming
takaking22
10
12k
8bit CPU 2026
koba789
6
2.7k
トークンマネジメントでAIにとって働きやすい環境を実現する
hikaruegashira
0
140
AIに狂うスタートアップが、あえて「人との協働」に全振りした新卒エンジニア研修 / New Graduate Engineer Training at a Startup Accelerating AI Adoption
ohnoeight
0
180
FDEの心得
noriakioji
5
6.4k
Kiro Crew で始める マルチエージェント開発
miu_crescent
PRO
0
160
도구에서 동료까지: 10년차 AI 스타트업의 AI 적응기
inureyes
PRO
1
330
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
380
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Code Reviewing Like a Champion
maltzj
528
40k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
780
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
340
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
The Language of Interfaces
destraynor
162
27k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Designing for Timeless Needs
cassininazir
1
450
Prompt Engineering for Job Search
mfonobong
0
410
Transcript
golang.tokyo #12 LT Shinnosuke Takeda a.k.a. @cnosuke
@cnosuke ͠Μͷ͚͢/͠ʔͷ͚͢ • SRE at ͓ۚͷσβΠϯ • KubernetesΫϥελ࡞ͬͨΓͦͷӡ༻ • ࣾαʔϏεͱ͔πʔϧ࡞ͬͨΓ…
• Slack͔ΒσϓϩΠग़དྷΔΑ͏ʹ͢Δͭͱ͔ • ͍ΖΜͳϑΝΠϧΛS3ʹόοΫΞοϓ͍ͯͭ͘͠ͱ͔ ͪͳΈʹɺ4MBDL͔ΒσϓϩΠ͢Δͭɺ4MBDL͔$IBUCPUʹ͛ͯɺEJHEBH 5%ۘͷXPSLqPXΤϯδϯ ʹஔ͔Εͨɺ σϓϩΠͷKPCΛ3&45"1*ͰΩοΫ͢Δͱ͍͏ߏʹ͍ͯ͠·͢ɻ͜Εɺϩά͕อશͯ͘͢͠ΈΜͳݟ͍͢ͱ͍͏ͷͱɺ Կ͔͋ͬͯKPC͕ࢮΜͩͱ͖ͱ͔ͷ੍ޚ ϦτϥΠͱ͔ ͍͢͠ɺͱ͍͏ར͕͋ΔͨΊͰ͢ɻ વଞͷ௨ৗͷKPC͍Ζ͍ΖEJHEBHʹ͓͍ͯ͋Γ·͢
None
ʰελʔτΞοϓɾ৽نࣄۀ ʹ͓͚ΔGoʱ ࠓճͷςʔϚελʔτΞοϓɾ৽نࣄۀʹ͓͚Δ(PͰ͕͢ɺ ࢲୡ5)&0ͦΖͦΖͱ͍͏ײ͡Ͱɺ·ͩ·ͩΤϯδχΞਓऑͱ͍͏ײ͡Ͱ͢ɻ
Go ὑ THEO • Go + gRPC • ͍͔ͭ͘ͷΞϓϦ͚ͷAPI •
͍͔ͭ͘ͷ͚ࣾAPI • Kubernetes • GKE … ։ൃ༻Ϋϥελ • AWS … ຊ൪༻Ϋϥελ (PͱͷؔΘΓͰ͍͏ͱɺJ04ΞϓϦΛࡢʹϦϦʔεͨ͠ͷͰ͕͢ɺ͜ͷΞϓϦͱ"1*αʔόؒH31$Λશ໘తʹ࠾༻͍ͯͯ͠ɺ Ұ෦ͷ"1*Ͱαʔόଆ(PͰॻ͔Ε͍ͯ·͢ɻ શͯͰ͋Γ·ͤΜ ·ͨɺͪΐ͏ͲҰ΄Ͳલ͔Β5)&0,VCFSOFUFTͰಈ͍͍ͯ·͢ɻ ։ൃ༻ͷLTΫϥελ(,&Λར༻͍ͯ͠·͕͢ɺຊ൪༻Ϋϥελ"84্ʹLVCFBXTͰߏஙͨ͠LTͰ͢ɻ ͳͥ(,&"84྆ํΛ͍ͬͯΔ͔ͱ͍͏ͱɺকདྷ(,&ʹҠΔՄೳੑΛ͍ͨ͠ͷͰɺ։ൃΫϥελ(,&ͱ͍͏͜ͱʹ͠·ͨ͠ɻ LTࣗମͷϙʔλϏϦςΟ͋ΔͷͰɺ·͊྆ํͪΌΜͱ͓͚ͬͯকདྷͷબࢶ͕͘ͳΔͷͰΑ͍͔ͱɻ
։ൃ༻Ϋϥελ (on GKE) • Alphaαʔό܈ • API, DB, App …
• ΤϯδχΞ͕खݩͰ։ൃ͢Δ࣌ɺجຊతʹґଘ ͢ΔAPI, DBɺશһڞ௨Ͱ͜ͷAlphaڥʹܨ͙ (,&ʹ͋Δ։ൃ༻Ϋϥελʹ͍ͭͯͰ͕͢ɺ͍ΘΏΔBMQIBαʔό܈ͱ͍͏ײ͡Ͱɺຊ൪ڥͱ΄ͱΜͲಉ͡αʔϏεߏʹ͍ͯ͠·͢ɻ ϦϦʔεॳ͔Βɺ8FCͷϑϩϯτଆαʔϏεͱཪଆͷސ٬ɾূ݊ཧαʔϏεɺߋʹূ݊ӡ༻ͷαʔϏεׂ͞Ε͍ͯͨͷͰ͕͢ɺ ͋·Γ៉ྷʹڥք͕ΒΕ͍ͯͨΘ͚Ͱແ͍ͷͰɺ΄Ͳલ͔Β͍͔ͭ͘ͷαʔϏεΛ৽ͨʹΓग़͠͡Ί͍ͯͯɺϚΠΫϩͱ͍͏΄Ͳ খ͘͞͠ͳ͍ͱࢥ͍·͕͢ɺҙຯͷ͋Δ୯ҐͰαʔϏεׂΛਐΊ͍ͯ·͢ɻͦͷ͍͔ͭ͘ͷΓग़͞Εͨ"1*αʔόɺґଘ͢Δ%#ͷ ߏ͕ɺຊ൪ͱ΄΅ಉ͡ײ͡ͰBMQIBʹ࡞ΒΕ͍ͯ·͢ɻ͜ͷBMQIBڥɺΤϯδχΞશһ͕͖ʹΞΫηεͰ͖ΔΑ͏ʹͳ͍ͬͯͯɺ खݩͷͰ։ൃ͢Δ࣌ɺ։ൃ͍ͯ͠ΔͷҎ֎ͷ"1*αʔόґଘ͢Δ%#ɺ͜ͷBMQIBڥͷͷʹଓ͢ΔΑ͏ʹ͍ͯ͠·͢ɻ ͜Εɺશͯͷ"1*αʔό%#ΛϩʔΧϧͰಈ͔͢ͱɺ୯ʹॏ͍͠ඇޮͰ͢͠ɺશͯͷ"1*αʔόΛ࠷৽ͷঢ়ଶʹಉظͯ͠खݩͰ։ൃ ͢Δͷ͕݁ߏ໘͔ͩΒͰ͢ɻ
SSH Port fowarding ͯ͞ɺͰBMQIBڥʹͲ͏ଓ͍ͯ͠Δ͔ɺͱ͍͏Ͱ͕͢ɺ ࢲୡͷͱ͜ΖͰશ෦44)1PSUGPXBSEJOHͰͬͯ·͢ɻ
SSH Port fowarding ͏ΑͶ • ·͊खܰ • DBͱ͔ܨ͙ͷʹTCPͰΞϨ͢Δඞཁ͋Δ͠… αʔϏεΛׂͯ͠%#͍͔ͭ͋ͬͯ͘ɺΈ͍ͨͳॴͩͱׂͱ͍ͬͯΔͱ͜Ζଟ͍ͱࢥ͏ΜͰ͕͢ɺ ͍͔͕Ͱ͠ΐ͏ʁ
ձͰগͳͦ͏Ͱ͕ͨ͠ʜ ͬͺΓखܰͩ͠ɺ࠷ॳͷ%#ͻͱͭ͋ͨΓ͔Β44)1PSUGPXBSEJOHͰ͡Ίͯɺ ͦͷޙͲΜͲΜର͕૿͍͑ͯͬͯɺͱ͍͏έʔε͕ଟ͍Μ͡Όͳ͍͔ͱࢥ͍·͕͢ɻ ͏ͪͦ͏Ͱ͢ ͪͳΈʹɺલఏͱͯ͠ฐࣾͷΤϯδχΞશࡋྔ࿑ಇ ϦϞʔτϫʔΫࣗ༝ͳͷͰɺͲ͔͜ΒͰ։ൃͰ͖ΔΑ͏ʹ͢Δඞཁ͕͋Γɺ ୯७ʹ%#ΛΫϥελ֎ʹ࿐ग़ͯ͠ଓݩ*1Ͱ੍ݶ͢Δɺͱ͍͏ख๏͑·ͤΜɻΦϑΟεʹ71/ڌ͋Γ·͕͢ɺ શͯͷ௨৴Λ71/ܦ༝ʹ͢Δͱ͍͏ͷɺඞཁແ͍௨৴·Ͱ71/௨͢ͱ·͍͊Ζ͍Ζॏͯ͋͘·Γྑ͍ମݧͰແ͍Ͱ͢͠ɺ ಛఆͷϓϥΠϕʔτ*1ͱ͔͚ͩΛ71/௨͢ͱ͍͏ͷɺωοτϫʔΫڥʹΑͬͯɺϋϚΔΠϝʔδ͋Γ·͢ɻ ͪͳΈʹࣾαʔϏεྨBMQIBαʔόͷϒϥβදࣔͷΞΫηε੍ޚ5-4વඞਢͰ ͦΕʹOHJOY@PNOJBVUI@BEBQUFSΛΈ߹Θͤͯ·͢ɻ ͋ͱ5XJUUFSͰࢦఠ͕͋ͬͨͷͰ͕͢ɺ͜Ε։ൃڥʹݶͬͨͰɺຊ൪ڥશʹผ ͦͦ"84 ʹͳ͍ͬͯͯɺΞΫηεͰ͖Δͷ 43&ͷΈ͕࠷ݶʹඞཁͳ࣌ʹݶఆ͞Ε͍ͯ·͢ɻࣾنఆྨʑۚ༥ͳͷͰΧονϦඋ͞Ε͍ͯΔͷͰ͢
Α͘ݟΔޫܠ
ϠόΠ .ssh/config ࠷ॳͻͱͭͩͬͨQPSUGPXBSEJOH͕ɺαʔϏεͷʹͬͯͲΜͲΜ૿͍͑ͯͬͯɺ ؾ͕͍ͭͨΒݸ͑ͯΔɺͳΜͯ͜ͱແ͍Ͱ͔͢ɻ
ϠόΠ .ssh/config
ͳΜͱ͔͢Δͭ ࡞ͬͨ
github.com/cnosuke/kushi
kushiͱ • S3ͱ͔ʹஔ͍ͯ͋ΔYAMLͰهड़͞ΕͨPortfowardingͷϦετΛ औಘ͖ͯͯ͠ɺखݩͰSSHτϯωϧΛͬͯ͘ΕΔͭɻ • Ϧετͷߋ৽Λఆظతʹݟʹߦͬͯɺมߋ͕͋ΕมߋΛखݩʹ өͯ͘͠ΕΔɻ • ωοτϫʔΫڥͷมߋ(e.g. ձࣾͷωοτϫʔΫ͔ΒՈͷωοτ
ϫʔΫʹม͑ͨɺ)ʹΑͬͯSSHτϯωϧࣗମ͕յΕͨΒɺͦΕ ΛࣗಈͰுΓͯ͘͠ΕΔɻ • SSHτϯωϧແ௨৴ঢ়ଶͰͪΌΜͱkeepaliveͰɺग़དྷΔ͚ͩ ଓΛҡ࣋ͯ͘͠ΕΔɻ ͪͳΈʹ࡞ͬͨͷࡢ݄͘Β͍Ͱ͕͢ɺͦΕ͔Βࢲͱ͔ਓͰࡉʑͱ·ͩࢼ͍ͯ͠Δͱ͜ΖͰɺࠓͷͱ͜Ζ͔ͳΓ҆ఆͯ͠·͢ɻ QPSUGPXBSEJOHͷϦετΛऔΔͱ͜Ζʹೝূػߏ͚ͭͨΒ ޙड़ ࣾͰશ໘తʹల։͢ΔͭΓͰ͢ɻ
[How to] 1. forwardingͷઃఆΛS3ͱ͔ʹॻ͍ͯஔ͘ ઃఆϑΝΠϧ4ͱ͔ʹஔ͘ΠϝʔδͰ͢ɻGPSXBSEJOHઃఆϑΝΠϧͷߋ৽ͷ֬ೝɺFUBHͷมԽΛݟ͍ͯͯFUBHʹมԽ͕ͳ͍ ͭ·Γ*G/POF.BUDIͰϚον͠ͳ͍ͱ͖ ʹϑΝΠϧࣗମΛऔ͖ͬͯͯஔ͖͑ΔΑ͏ʹ͍ͯ͠ΔͷͰɺͦͷล͕ݡ͍αʔόʹ͓͍ͯԼ͍͞ɻ ·ͨɺݱ࣌ͰೝূػߏΛೖΕͯͳ͍ͷͰɺ63-ࣗମΛଞͷਓ͔Βਪଌ͠ʹ͍͘Α͏ʹͨ͠΄͏͕Α͍͔ͱࢥ͍·͢ɻ ͜ͷϑΝΠϧ͚͕ͩ֎෦ʹ࿙Εͯ44)伴͕ແ͍ݶΓવΞΫηε͠Α͏͕ແ͍Ͱ͢͠ɺ44)αʔό͕Ͳ͔͜͜Εʹॻ͔Ε·ͤΜ͕ɺ ·͊αʔόߏ͕֎෦ʹΒΕΔ͜ͱආ͚ͨ΄͏͕͍͍ͩΖ͏ͱࢥ͍·͢ɻ"84ͷ*".ͰΞΫηε੍ݶ͢Δͷߟ͍͑ͯΔΜͰ͕͢ɺ
·͊ϕϯμʔϩοΫΠϯ͞ΕΔ͠Ͳ͏͠Α͏͔ͳ͊ʜͱ͍͏ײ͡Ͱ͢ɻ"84*".͏ͷͱ($1*".͏ͭ༻ҙ͢Δͱ͔͔ͳ͊
[How to] 2. kushiͷઃఆΛॻ͘
[How to] 3. ΒͤΔ σϑΥϧτͩͱϩά)0.&DPOpHLVTIJMPHTʹॻ͖ग़͞Ε·͢ͷͰɺඪ४ग़ྗʹϩάΛग़ͯ͠ઌͣࢼ͍ͨ͠ͱ͍͏ͱ͖ʹ TUEPVUΛ͚࣮ͯߦ͠·͢ɻπʔϧͱͯͬ͠ͺΓσʔϞϯతʹ͍͍ͨͣͰɺͦ͏͍͏ͱ͖ʹ OPIVQLVTIJEFWOVMM ͱ͍͏ײ͡ʹ͍ͯͩ͘͠͞ɻDPOpHҾͰࢦఆͰ͖·͕͢ɺ·͊LVTIJIͰ֬ೝ͍ͩ͘͞ɻ
github.com/cnosuke/kushi We’re hiring! www.money-design.com/jobs