Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
680
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
3
2k
Code4Lib JAPANカンファレンス2026 開会挨拶 / Code4Lib JAPAN Conference 2026: Opening Remarks
ykiyota
0
330
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
220
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
150
AIネイティブプロダクトで顧客価値を最大化するプロダクトエンジニアとFDEの協働
righttouch
PRO
0
230
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
170
AI時代に顧客へ最速で価値を 届けるための試行錯誤 〜「AI × マネジメント」領域におけるmentoのケース〜
posterkeisuke
0
110
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/6 - 2026/8
oracle4engineer
PRO
0
150
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.9k
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
320
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
460
Featured
See All Featured
Heart Work Chapter 1 - Part 1
lfama
PRO
9
36k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
590
Google's AI Overviews - The New Search
badams
0
1.6k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
540
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
410
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
270
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Code Review Best Practice
trishagee
74
20k
HDC tutorial
michielstock
2
860
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