Slide 1

Slide 1 text

golang.tokyo #12 LT Shinnosuke Takeda a.k.a. @cnosuke

Slide 2

Slide 2 text

@cnosuke ͠Μͷ͚͢/͠ʔͷ͚͢ • SRE at ͓ۚͷσβΠϯ • KubernetesΫϥελ࡞ͬͨΓͦͷӡ༻ • ࣾ಺αʔϏεͱ͔πʔϧ΋࡞ͬͨΓ… • Slack͔ΒσϓϩΠग़དྷΔΑ͏ʹ͢Δ΍ͭͱ͔ • ͍ΖΜͳϑΝΠϧΛS3ʹόοΫΞοϓ͍ͯ͘͠΍ͭͱ͔ ͪͳΈʹɺ4MBDL͔ΒσϓϩΠ͢Δ΍ͭ͸ɺ4MBDL͔$IBUCPUʹ౤͛ͯɺEJHEBH 5%ۘ੡ͷXPSLqPXΤϯδϯ ʹஔ͔Εͨɺ σϓϩΠͷKPCΛ3&45"1*ͰΩοΫ͢Δͱ͍͏ߏ੒ʹ͍ͯ͠·͢ɻ͜Ε͸ɺϩά͕อશ͠΍ͯ͘͢ΈΜͳݟ΍͍͢ͱ͍͏ͷͱɺ Կ͔͋ͬͯKPC͕ࢮΜͩͱ͖ͱ͔ͷ੍ޚ ϦτϥΠͱ͔ ΋͠΍͍͢ɺͱ͍͏ར఺͕͋ΔͨΊͰ͢ɻ ౰વଞͷ௨ৗͷKPC΋͍Ζ͍ΖEJHEBHʹ͓͍ͯ͋Γ·͢

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

ʰελʔτΞοϓɾ৽نࣄۀ ʹ͓͚ΔGoʱ ࠓճͷςʔϚ͸ελʔτΞοϓɾ৽نࣄۀʹ͓͚Δ(PͰ͕͢ɺ ࢲୡ5)&0͸ͦΖͦΖ೥໨ͱ͍͏ײ͡Ͱɺ·ͩ·ͩΤϯδχΞ΋ਓऑͱ͍͏ײ͡Ͱ͢ɻ

Slide 5

Slide 5 text

Go ὑ THEO • Go + gRPC • ͍͔ͭ͘ͷΞϓϦ޲͚ͷAPI • ͍͔ͭ͘ͷࣾ಺޲͚API • Kubernetes • GKE … ։ൃ༻Ϋϥελ • AWS … ຊ൪༻Ϋϥελ (PͱͷؔΘΓͰ͍͏ͱɺJ04ΞϓϦΛࡢ೥຤ʹϦϦʔεͨ͠ͷͰ͕͢ɺ͜ͷΞϓϦͱ"1*αʔόؒ͸H31$Λશ໘తʹ࠾༻͍ͯͯ͠ɺ Ұ෦ͷ"1*Ͱ͸αʔόଆ΋(PͰॻ͔Ε͍ͯ·͢ɻ શͯͰ͸͋Γ·ͤΜ ·ͨɺͪΐ͏ͲҰ೥΄Ͳલ͔Β5)&0͸,VCFSOFUFTͰಈ͍͍ͯ·͢ɻ ։ൃ༻ͷLTΫϥελ͸(,&Λར༻͍ͯ͠·͕͢ɺຊ൪༻Ϋϥελ͸"84্ʹLVCFBXTͰߏஙͨ͠LTͰ͢ɻ ͳͥ(,&"84྆ํΛ࢖͍ͬͯΔ͔ͱ͍͏ͱɺকདྷ͸(,&ʹ΋ҠΔՄೳੑΛ࢒͍ͨ͠ͷͰɺ։ൃΫϥελ͸(,&ͱ͍͏͜ͱʹ͠·ͨ͠ɻ LTࣗମͷϙʔλϏϦςΟ΋͋ΔͷͰɺ·͊྆ํͪΌΜͱ௥͓͚ͬͯ͹কདྷͷબ୒ࢶ͕޿͘ͳΔͷͰΑ͍͔ͱɻ

Slide 6

Slide 6 text

։ൃ༻Ϋϥελ (on GKE) • Alphaαʔό܈ • API, DB, App … • ΤϯδχΞ͕खݩͰ։ൃ͢Δ࣌΋ɺجຊతʹґଘ ͢ΔAPI, DB͸ɺશһڞ௨Ͱ͜ͷAlpha؀ڥʹܨ͙ (,&ʹ͋Δ։ൃ༻Ϋϥελʹ͍ͭͯͰ͕͢ɺ͍ΘΏΔBMQIBαʔό܈ͱ͍͏ײ͡Ͱɺຊ൪؀ڥͱ΄ͱΜͲಉ͡αʔϏεߏ੒ʹ͍ͯ͠·͢ɻ ϦϦʔε౰ॳ͔Βɺ8FCͷϑϩϯτଆαʔϏεͱཪଆͷސ٬ɾূ݊؅ཧαʔϏεɺߋʹ͸ূ݊ӡ༻ͷαʔϏε౳͸෼ׂ͞Εͯ͸͍ͨͷͰ͕͢ɺ ͋·Γ៉ྷʹڥք͕੾ΒΕ͍ͯͨΘ͚Ͱ΋ແ͍ͷͰɺ೥΄Ͳલ͔Β͍͔ͭ͘ͷαʔϏεΛ৽ͨʹ੾Γग़͠͸͡Ί͍ͯͯɺϚΠΫϩͱ͍͏΄Ͳ খ͘͞͸͠ͳ͍ͱࢥ͍·͕͢ɺҙຯͷ͋Δ୯ҐͰαʔϏε෼ׂΛਐΊ͍ͯ·͢ɻͦͷ͍͔ͭ͘ͷ੾Γग़͞Εͨ"1*αʔό΍ɺґଘ͢Δ%#౳ͷ ߏ੒͕ɺຊ൪ͱ΄΅ಉ͡ײ͡ͰBMQIBʹ΋࡞ΒΕ͍ͯ·͢ɻ͜ͷBMQIB؀ڥ͸ɺΤϯδχΞશһ͕޷͖ʹΞΫηεͰ͖ΔΑ͏ʹͳ͍ͬͯͯɺ खݩͷ୺຤Ͱ։ൃ͢Δ࣌΋ɺ௚઀։ൃ͍ͯ͠Δ΋ͷҎ֎ͷ"1*αʔό΍ґଘ͢Δ%#͸ɺ͜ͷBMQIB؀ڥͷ΋ͷʹ઀ଓ͢ΔΑ͏ʹ͍ͯ͠·͢ɻ ͜Ε͸ɺશͯͷ"1*αʔό΍%#౳ΛϩʔΧϧͰಈ͔͢ͱɺ୯ʹॏ͍͠ඇޮ཰Ͱ͢͠ɺશͯͷ"1*αʔόΛ࠷৽ͷঢ়ଶʹಉظͯ͠खݩͰ։ൃ ͢Δͷ͕݁ߏ໘౗͔ͩΒͰ͢ɻ

Slide 7

Slide 7 text

SSH Port fowarding ͯ͞ɺͰ͸BMQIB؀ڥʹͲ͏઀ଓ͍ͯ͠Δ͔ɺͱ͍͏఺Ͱ͕͢ɺ ࢲୡͷͱ͜ΖͰ͸શ෦44)1PSUGPXBSEJOHͰ΍ͬͯ·͢ɻ

Slide 8

Slide 8 text

SSH Port fowarding ࢖͏ΑͶ • ·͊खܰ • DBͱ͔ܨ͙ͷʹTCPͰΞϨ͢Δඞཁ͋Δ͠… αʔϏεΛ෼ׂͯ͠%#΋͍͔ͭ͋ͬͯ͘ɺΈ͍ͨͳॴͩͱׂͱ࢖͍ͬͯΔͱ͜Ζଟ͍ͱࢥ͏ΜͰ͕͢ɺ ͍͔͕Ͱ͠ΐ͏ʁ ձ৔Ͱ͸গͳͦ͏Ͱ͕ͨ͠ʜ ΍ͬͺΓखܰͩ͠ɺ࠷ॳͷ%#ͻͱͭ͋ͨΓ͔Β44)1PSUGPXBSEJOHͰ͸͡Ίͯɺ ͦͷޙͲΜͲΜର৅͕૿͍͑ͯͬͯɺͱ͍͏έʔε͕ଟ͍Μ͡Όͳ͍͔ͱࢥ͍·͕͢ɻ ͏ͪ΋ͦ͏Ͱ͢ ͪͳΈʹɺલఏͱͯ͠͸ฐࣾͷΤϯδχΞ͸׬શࡋྔ࿑ಇϦϞʔτϫʔΫ΋ࣗ༝ͳͷͰɺͲ͔͜ΒͰ΋։ൃͰ͖ΔΑ͏ʹ͢Δඞཁ͕͋Γɺ ୯७ʹ%#౳ΛΫϥελ֎ʹ࿐ग़ͯ͠઀ଓݩ*1Ͱ੍ݶ͢Δɺͱ͍͏ख๏͸࢖͑·ͤΜɻΦϑΟεʹ71/ڌ఺͸͋Γ·͕͢ɺ શͯͷ௨৴Λ71/ܦ༝ʹ͢Δͱ͍͏ͷ͸ɺඞཁແ͍௨৴·Ͱ71/௨͢ͱ·͍͊Ζ͍Ζॏͯ͋͘·Γྑ͍ମݧͰ͸ແ͍Ͱ͢͠ɺ ಛఆͷϓϥΠϕʔτ*1ͱ͔͚ͩΛ71/௨͢ͱ͍͏ͷ΋ɺωοτϫʔΫ؀ڥʹΑͬͯ͸ɺϋϚΔΠϝʔδ͋Γ·͢ɻ ͪͳΈʹࣾ಺αʔϏεྨ΍BMQIBαʔόͷϒϥ΢βදࣔͷΞΫηε੍ޚ͸5-4͸౰વඞਢͰ ͦΕʹOHJOY@PNOJBVUI@BEBQUFSΛ૊Έ߹Θͤͯ·͢ɻ ͋ͱ5XJUUFSͰࢦఠ͕͋ͬͨͷͰ͕͢ɺ͜Ε͸։ൃ؀ڥʹݶͬͨ࿩Ͱɺຊ൪؀ڥ͸׬શʹผ ͦ΋ͦ΋"84 ʹͳ͍ͬͯͯɺΞΫηεͰ͖Δͷ͸ 43&ͷΈ͕࠷௿ݶʹඞཁͳ࣌ʹݶఆ͞Ε͍ͯ·͢ɻࣾ಺نఆྨ౳ʑ͸ۚ༥ͳͷͰΧονϦ੔උ͞Ε͍ͯΔͷͰ͢

Slide 9

Slide 9 text

Α͘ݟΔޫܠ

Slide 10

Slide 10 text

ϠόΠ .ssh/config ࠷ॳ͸ͻͱͭͩͬͨQPSUGPXBSEJOH͕ɺαʔϏεͷ੒௕ʹ൐ͬͯͲΜͲΜ૿͍͑ͯͬͯɺ ؾ͕͍ͭͨΒݸ௒͑ͯΔɺͳΜͯ͜ͱ͸ແ͍Ͱ͔͢ɻ

Slide 11

Slide 11 text

ϠόΠ .ssh/config

Slide 12

Slide 12 text

ͳΜͱ͔͢Δ΍ͭ ࡞ͬͨ

Slide 13

Slide 13 text

github.com/cnosuke/kushi

Slide 14

Slide 14 text

kushiͱ͸ • S3ͱ͔ʹஔ͍ͯ͋ΔYAMLͰهड़͞ΕͨPortfowardingͷϦετΛ औಘ͖ͯͯ͠ɺखݩͰSSHτϯωϧΛ͸ͬͯ͘ΕΔ΍ͭɻ • Ϧετͷߋ৽Λఆظతʹݟʹߦͬͯɺมߋ͕͋Ε͹มߋΛखݩʹ ൓өͯ͘͠ΕΔɻ • ωοτϫʔΫ؀ڥͷมߋ(e.g. ձࣾͷωοτϫʔΫ͔ΒՈͷωοτ ϫʔΫʹม͑ͨɺ౳)ʹΑͬͯSSHτϯωϧࣗମ͕յΕͨΒɺͦΕ ΛࣗಈͰுΓ௚ͯ͘͠ΕΔɻ • SSHτϯωϧ͸ແ௨৴ঢ়ଶͰ΋ͪΌΜͱkeepaliveͰɺग़དྷΔ͚ͩ ઀ଓΛҡ࣋ͯ͘͠ΕΔɻ ͪͳΈʹ࡞ͬͨͷ͸ࡢ೥݄͘Β͍Ͱ͕͢ɺͦΕ͔Βࢲͱ͔਺ਓͰࡉʑͱ·ͩࢼ͍ͯ͠Δͱ͜ΖͰɺࠓͷͱ͜Ζ͸͔ͳΓ҆ఆͯ͠·͢ɻ QPSUGPXBSEJOHͷϦετΛऔΔͱ͜Ζʹೝূػߏ͚ͭͨΒ ޙड़ ࣾ಺Ͱ͸શ໘తʹల։͢Δͭ΋ΓͰ͢ɻ

Slide 15

Slide 15 text

[How to] 1. forwardingͷઃఆΛS3ͱ͔ʹॻ͍ͯஔ͘ ઃఆϑΝΠϧ͸4ͱ͔ʹஔ͘ΠϝʔδͰ͢ɻGPSXBSEJOHઃఆϑΝΠϧͷߋ৽ͷ֬ೝ͸ɺFUBHͷมԽΛݟ͍ͯͯFUBHʹมԽ͕ͳ͍ ͭ·Γ*G/POF.BUDIͰϚον͠ͳ͍ͱ͖ ʹϑΝΠϧࣗମΛऔ͖ͬͯͯஔ͖׵͑ΔΑ͏ʹ͍ͯ͠ΔͷͰɺͦͷล͕ݡ͍αʔόʹ͓͍ͯԼ͍͞ɻ ·ͨɺݱ࣌఺Ͱ͸ೝূػߏΛೖΕͯͳ͍ͷͰɺ63-ࣗମΛଞͷਓ͔Βਪଌ͠ʹ͍͘Α͏ʹͨ͠΄͏͕Α͍͔ͱࢥ͍·͢ɻ ͜ͷϑΝΠϧ͚͕ͩ֎෦ʹ࿙Εͯ΋44)伴͕ແ͍ݶΓ͸౰વΞΫηε͠Α͏͕ແ͍Ͱ͢͠ɺ44)αʔό͕Ͳ͔͜΋͜Εʹ͸ॻ͔Ε·ͤΜ͕ɺ ·͊αʔόߏ੒͕֎෦ʹ஌ΒΕΔ͜ͱ͸ආ͚ͨ΄͏͕͍͍ͩΖ͏ͱࢥ͍·͢ɻ"84ͷ*".ͰΞΫηε੍ݶ͢Δͷ΋ߟ͍͑ͯΔΜͰ͕͢ɺ ·͊ϕϯμʔϩοΫΠϯ͞ΕΔ͠Ͳ͏͠Α͏͔ͳ͊ʜͱ͍͏ײ͡Ͱ͢ɻ"84*".࢖͏ͷͱ($1*".࢖͏΍ͭ༻ҙ͢Δͱ͔͔ͳ͊

Slide 16

Slide 16 text

[How to] 2. kushiͷઃఆΛॻ͘

Slide 17

Slide 17 text

[How to] 3. ૸ΒͤΔ σϑΥϧτͩͱϩά͸)0.&DPOpHLVTIJMPHTʹॻ͖ग़͞Ε·͢ͷͰɺඪ४ग़ྗʹϩάΛग़ͯ͠ઌͣ͸ࢼ͍ͨ͠ͱ͍͏ͱ͖ʹ͸ ŠTUEPVUΛ෇͚࣮ͯߦ͠·͢ɻπʔϧͱͯ͠͸΍ͬͺΓσʔϞϯతʹ࢖͍͍ͨ͸ͣͰɺͦ͏͍͏ͱ͖ʹ͸ OPIVQLVTIJEFWOVMM ͱ͍͏ײ͡ʹ͍ͯͩ͘͠͞ɻDPOpH΋Ҿ਺ͰࢦఆͰ͖·͕͢ɺ·͊LVTIJIͰ֬ೝ͍ͩ͘͞ɻ

Slide 18

Slide 18 text

github.com/cnosuke/kushi We’re hiring! www.money-design.com/jobs