Slide 1

Slide 1 text

೥݄೔+VMZ5FDI'FTUB!OXJJ[P ΑΈ͕͑Δ.BLFGJMF ͳͥɺ.BLF fi MF͸ࢮʹ 
 ͦͯ͠ɺΑΈ͕͑Δͷ͔ʁ

Slide 2

Slide 2 text

࠷ۙɺTIBLFͱ͍͏స৬ͨ͠ !OXJJ[PͰ͢ (Pݴޠ͕޷͖ͳࡀ ※झຯͰݸਓతʹObservability GoΛॻ͘ͳͲͯ͠ͳͲͯ͠·͢

Slide 3

Slide 3 text

"CPVU4IBLF w 43&ࢧԉٕज़ࢧԉ w 4SFBLF͸ۚ༥ɾҩྍɾಈը഑৴ɾ"*ɾήʔϜͳͲٕज़ྗ͕ٻΊΒΕΔྖҬͰ๛෋ͳܦݧΛ࣋ͭ43&͕ू·ͬͨνʔϜ ʹΑΔٕज़ࢧԉαʔϏεͰ͢ɻઓུࡦఆ͔Βઃܭɾߏஙɾӡ༻ɺ4BB4ఏڙ·Ͱɺ෯޿͍ྖҬΛαϙʔτ͠·͢ɻ Sreake ྲྀ SRE Roadmap SRE ͷ։࢝ ·ͣ͸খ͘͞ɻ ޮՌ͕࠷େݶʹग़Δͱ͜Ζ ͔Βίπίπͱ࢝ΊΑ͏ SRE νʔϜͷఆٛ ૊৫ʹ͋ͬͨ SRE Λఆٛ͠Α͏ SRE࣮ફ SLIɾSLO ͷઃఆ Toil ࡟ݮ (ࣗಈԽਪਐ) SRE ͷൃలͱܧଓ SREͷจԽ͕ਁಁ͢Δ Error Budget Λݩʹ
 ۀ຿Λίϯτϩʔϧ͍ͯ͘͠

Slide 4

Slide 4 text

43&ͷ࣮ફ಺༰ ྫ • ؂ࢹج൫ಋೖ ◦Loggin g ◦Monitorin g ◦AP M • SLI / SLO ͷఆٛ • ӡ༻ମ੍੔උ ◦ΠϯγσϯτରԠɾ؅ཧ ◦ޮՌతͳΞϥʔτ • IaC (Infrastructure as Code ) ◦ߏ੒؅ཧͷ඼࣭νΣοΫ ◦GitOps • CI/CD ಋೖ ◦σϓϩΠͷࣗಈԽ ◦ίʔυ඼࣭ɾ੬ऑੑͷݕࠪ ◦DevSecOp s • ΞϓϦέʔγϣϯͷύοέʔδԽ ◦ίϯςφ • ύϑΥʔϚϯε෼ੳ ◦෼ࢄτϨʔγϯά ◦ෛՙࢼݧ ◦ΧΦεγφϦΦࢼݧ ্هͷಋೖࢧԉΛߦͳ͍ͬͯΔɻ

Slide 5

Slide 5 text

ͳͥɺ.BLFGJMF͸ࢮʹ 
 ͦͯ͠ɺΑΈ͕͑Δͷ͔ʁ

Slide 6

Slide 6 text

.BLFGJMFͱ͸Կ͔ʁ w NBLFίϚϯυ͸ɺίϯύΠϧ࡞ۀΛߦ͏ͨΊʹ༷ʑͳ࡞ۀΛࣗಈతʹߦ͏ͨΊͷίϚϯυͰ͢ɻ 
 .BLF fi MF͸ɺίϯύΠϧɺґଘؔ܎ͷ؅ཧɺΠϯετʔϧͳͲͷϧʔϧΛهड़͓ͯͨ͘͠ΊͷϑΝΠϧͰɺ 
 NBLFίϚϯυ͕ಡΈࠐΜͰॲཧΛߦ͍·͢ɻ 
 .BLF fi MFʹ͸ɺϑΝΠϧͷੜ੒खॱ΍ɺϓϩάϥϜΛߏ੒͍ͯ͠ΔϑΝΠϧಉ࢜ͷؔ܎Λهड़͠·͢ɻ .BLF fi MF NBLFίϚϯυ ࣗಈԽ͍ͨ͜͠ͱ" 
 ࣗಈԽ͍ͨ͜͠ͱ# 
 ࣗಈԽ͍ͨ͜͠ͱ$ ࡉ͔͍จ๏΍࢖͍ํʹؔͯ͠͸෼ͷొஃ͔ͭଞͷϒϩά΍ॻ੶ʹ͋·Γʹ΋ૉ੖Β͍͠΋ͷ͕ଟ͗͢ΔͷͰׂѪ͠·͢ 


Slide 7

Slide 7 text

.BLFGJMFͱ͸Կ͔ʁ ‣ .BLF͸ɺ6OJYͷϓϩάϥϜ։ൃ΍֤छιϑτ΢ΣΞͷΠϯετʔϧʹඞਢ ͷجຊπʔϧͰ͢ɻ͜ͷॻ੶͸NBLFͷ֓೦ɺجຊૢ࡞ɺϧʔϧͷจ๏ɺม਺ ͱϚΫϩɺؔ਺ɺେن໛ϓϩδΣΫτͰར༻͢Δํ๏ɺ8JOEPXT؀ڥͰͷ஫ ҙͳͲɺجૅ͔Βߴ౓ͳςΫχοΫ·ͰΛৄ͘͠ղઆ͍ͯ͠·͢ɻNBLFͷೖ ໳ॻͱͯ͠ॳ৺ऀʹ໾ʹཱͭͷ͸΋ͪΖΜͷ͜ͱɺNBLFͷϦϑΝϨϯεͱ͠ ͯɺதɺ্ڃऀʹͱͬͯ΋ඇৗʹ༗ӹͳҰ࡭Ͱ͢ɻ ͳͥɺ.BLFGJMF͸ࢮʹ 
 ͦͯ͠ɺΑΈ͕͑Δͷ͔ʁ ͍͖ͳΓɺຊ୊ʹಥೖͯ͠΋͍͍Ͱ͕͢ྲྀੴʹͳͷͰ 
 (PݴޠͷϓϩδΣΫτͰ.BLFͷར༻͍༷ͯ͘͠ʹ͍ͭͯ IUUQTCB[FMCVJME #B[FMͳͲͷஔ͖׵͑πʔϧ͕͋Δ͕ࠓճ͸આ໌͔Βআ֎ NBLF͸ϓϥοτϑΥʔϜʹґଘͤͣɺ͞·͟·ͳঢ়گʹରԠͰ͖Δɻ 
 ·ͨɺهड़ϧʔϧ͕γϯϓϧͰ͋Γֶश͠΍͍͢ͱ͍͏ϝϦοτ͸͋Δ͕ 
 ͦͷ൒໘ɺෳࡶͳϧʔϧΛهड़͠ʹ͔ͬͨ͘Γɺฒྻॲཧ͕ۤखͱ͍ͬͨσϝϦοτ΋͋Δɻ 
 ͦͷͨΊϚΫϩπʔϧ΍ઃఆࣗಈੜ੒πʔϧͳͲͱ૊Έ߹Θͤͯ࢖ΘΕΔ͜ͱ͕ଟ͍ɻ 
 ΍Γ͗͢Δͱɺهड़ϧʔϧ͕෼͔Γʹ͘͘ͳͬͯ͠·͏͜ͱ΋গͳ͘ͳ͍ɻ 
 ͦΕΒΛղܾπʔϧͱͯ͠ଘࡏ͢Δπʔϧ͸͍͔ͭ͋͘Δʆ

Slide 8

Slide 8 text

(PݴޠʹΑΔ.BLFͷར༻

Slide 9

Slide 9 text

(PݴޠʹΑΔ.BLFͷར༻ w ߴػೳ*%&ͳͲ͸ศརͰ͚͢ͲࣗಈԽʹ͸ෆ޲͖ w ୭Ͱ΋ɺͲ͜Ͱ΋ɺ͍ͭͰ΋࣮ߦͰ͖Δɺ൓෮ՄೳͰࣗಈԽՄೳͳϏϧυ ͕͜ΕʹΑΓɺʮ͜Ε͸ࢲͷϚγϯͰಈ࡞͠·͢ʂʯͱ͍͏௕೥ͷ։ൃऀ ͷݴ͍༁ΛճආͰ͖·͢ w ֤ݴޠʹ͸ίϯϐϡʔλϓϩάϥϜͳͲͷιʔείʔυΛಡΈࠐΜͰ಺༰ Λ෼ੳ͠ɺ໰୊఺Λࢦఠͯ͘͠ΕΔ੩తղੳπʔϧ͕͋Γࣗ࡞΋Մೳɻ 
 ͜ΕΒΛ࢖͏͜ͱͰϓϩδΣΫτͷ඼࣭ΛकΔʂ w ΠϯϑϥΤϯδχΞ͕༻ҙͨ͠$*ʹదԠ͢Δʹ͸(JU΁ͷQVTI͕ඞཁ HPMBOHDJHPMBOHDJMJOU (PMBOHͷ-JOUFSΛҰݩ؅ཧπʔϧɻ wHPWFUɿ(PMBOHσϑΥϧτͷ-JOUFS wFSSDIFDLɿͪΌΜͱΤϥʔϋϯυϦϯά͍ͯ͠Δ͔νΣοΫͯ͘͠ΕΔ wVOVTFEɿະ࢖༻ͷఆٛΛνΣοΫͯ͘͠ΕΔ wHPJNQPSUTɿະ࢖༻ͷJNQPSUΛফͯ͘͠ΕͨΓɺϑΥʔϚοτमਖ਼ͯ͘͠ΕΔ wHPTJNQMFɿίʔυΛγϯϓϧʹͯ͘͠ΕΔ IUUQTHJUIVCDPNOFLUPTBDUɹͳͲͷϩʔΧϧ࣮ߦπʔϧ΋΋ͪΖΜଘࡏ͍ͯ͠Δ

Slide 10

Slide 10 text

(PݴޠʹΑΔ.BLFͷར༻ w (Pݴޠʹ͓͚Δγϯϓϧͳ.BLF fi MF .DEFAULT_GOAL := buil d fmt: go fmt ./.. . .PHONY:fmt lint: fmt golint ./ … .PHONY:lint vet: fmt go vet ./.. . .PHONY:vet build: vet go build hello.g o .PHONY:build ͜ΕΒ͸HPWFUͱ͔HPGNU͔ΒNBLFWFU΍NBLFGNUʹมΘΔ͚ͩͰ͕͢ 
 ϏϧυΛτϦΨʔ͢ΔલʹϑΥʔϚοτͱݕূ͕ৗʹߦΘΕΔΑ͏ʹ͢Δ͜ͱͰɺ 
 खॱΛݟಀ͢͜ͱ͸͋Γ·ͤΜɻ vet: fmt go vet ./...
 shadow ./... ·ͨɺϓϩδΣΫτΛਐΊ͍ͯ͘ͱ͞·͟·ͳπʔϧ΍ࣗಈԽΛࢼΈΔͱࢥ͍·͕͢ 
 ྫ͑͹ɺ(PݴޠͰม਺ͷγϟυ΢ΠϯάΛආ͚͍ͨͳΒTIBEPXΛ࢖͑͹ղܾ͠·͕͢ 
 ҎԼͷΑ͏ʹ.BLF fi MFΛ࢖͏ͱ͜ΕΒ΋ࣗಈԽʹ૊ΈࠐΉ͜ͱ͕Ͱ͖ɺ 
 .BLF fi MFΛͦΕͧΕͷϓϩδΣΫτ͝ͱʹҭͯΔ͜ͱ͕Ͱ͖·͢ɻ λʔήοτґଘ͢ΔϑΝΠϧ ίϚϯυ Make fi le ͸ҎԼͷΑ͏ͳϧʔϧ͔ΒͳΔɻ NBLF λʔήοτ ίϚϯυϥΠϯ͔Β ͱ͢Δ͜ͱͰɺʮλʔήοτʯ͕ଘࡏ͠ͳ͍ɺ͋Δ͍͸λʔήοτΑΓ΋ ৽͍͠ʮґଘ͢ΔϑΝΠϧʯ͕͋Δ৔߹ʹίϚϯυ͕࣮ߦ͞Ε·͢ɻ ·ͨɺίϚϯυߦͷ࢝·Γ͸ඞͣλϒͰམ͍ͪͯ·͢ɻ ࣗಈม਺΍ؔ਺ͳͲ͍͔֮ͭ͑͘Δ͜ͱͰ΄΅Ϛελʔ͢Δ͜ͱ͕Ͱ͖Δ

Slide 11

Slide 11 text

(PݴޠʹΑΔ.BLFͷར༻ w ࣮ࡍʹ։ൃ΍ӡ༻ͷ࡞ۀ͢Δ࣌ʹ͸ɺ؀ڥߏங͚ͩͰ͸ͳ͍ɻ w WTγΣϧεΫϦϓτ w ӡ༻΍։ൃͰಘ͍͔ͨͭ͘ͷ5JQTΛ஌ݟͱͯ͠อଘٴͼܧঝ͢ΔͨΊʹબ΂Δखஈͱͯ͠൪࠷ॳʹύοͱग़དྷͯ͠ ·͏ͷ͕ࣗ࡞ͷγΣϧεΫϦϓτͰ͋Δɻࣗ࡞ͷγΣϧεΫϦϓτ͸Ԡ༻͕ޮ͍͕͘۩ମతʹԿΛ͢Δ͔Ұͭ໨ͷҾ ਺͕ԿͰೋͭ໨͸͋ΕͰΈ͍ͨͳײ͡Ͱ૯ͯ͡ෆ໌ྎͰ͋ΓɺͦΕΒ͸೺Ѳɺอक͢Δਓ͕ؒඞཁͰɺࣗ࡞ͷγΣϧ εΫϦϓτ͸Α͘ݹͷΦʔύʔπͱͯ͠ൃ۷͞Εͯ͠·͏৔߹͕ଟ͍ w .BLF fi MF-PWFST w .BLF fi MFΛ࢖͏ཧ༝ͱͯ͠͸։ൃʹ͸༷ʑͳཧ༝͕͋ΔɻϏϧυΦϓγϣϯΛࢦఆ͢Δͷʹ౎߹͕Α͘ɺόʔδϣ ϯ৘ใͳͲΛຒΊࠐΜͩΓ͠΍͍͢ɻࣄલʹίʔυδΣωϨʔλͰॻ͖ग़͢෦෼͕͋Δ࣌͸ͦΕΒʹ൐ͬͨίϚϯυ Λิ׬Ͱ͖ΔɻϏϧυͷλΠϛϯάͰQQSPGΛ࣮ߦͨ͠Γ΋͓खͷϞϊʂݹͷΦʔύʔπʹൺ΂ͯಡΊΔؾ͕͢Δ w ಛʹ(PݴޠͰϓϩμΫτΛ࡞Δ࣌ɺ.BLF fi MFΛ࢖ͬͯϏϧυ΍πʔϧΛࢦఆ͢Δ͜ͱ͕ଟ͍Ͱ͢ 
 ܰྔϓϩάϥϛϯάݴޠͰ͸࢖͏ػձ͕άοͱগͳ͔ͬͨɻ όʔδϣϯ৘ใ 
 ϏϧυΦϓγϣϯ ෳ਺όΠφϦͷੜ੒ 
 ͍͔ͭ͘ͷίʔυδΣωϨʔλʔͷੜ੒

Slide 12

Slide 12 text

ΦϖϨʔγϣϯࣗಈԽͷͨΊͷ.BLFGJMF !#VJME CVJMEಛఆͷϑΝΠϧͷϏϧυ HPCVJMEPCJONBOBHFSNBJOHP SVONBOJGFTUTHFOFSBUFGNUWFUϩʔΧϧͰͷ࣮ߦ HPSVONBJOHP EPDLFSCVJMEUFTUϏϧυͷ࣮ߦ EPDLFSCVJMEU\*.(^ EPDLFSQVTIEPDLFS΁ͷQVTI EPDLFSQVTI\*.(^ !%FQMPZNFOU JOTUBMMNBOJGFTUTLVTUPNJ[Fඞཁͳ$3%ͷొ࿥ ,6450.*;& CVJMEDPO fi HDSEcLVCFDUMBQQMZG VOJOTUBMMNBOJGFTUTLVTUPNJ[Fෆཁͳ$3%ͷ࡟আ ,6450.*;& CVJMEDPO fi HDSEcLVCFDUMEFMFUFG EFQMPZNBOJGFTUTLVTUPNJ[FΫϥελʹର͢ΔσϓϩΠ DEDPO fi HNBOBHFS ,6450.*;& FEJUTFUJNBHFDPOUSPMMFS\*.(^ ,6450.*;& CVJMEDPO fi HEFGBVMUcLVCFDUMBQQMZG VOEFQMPZΫϥελ͔Βͷ࡟আ ,6450.*;& CVJMEDPO fi HEFGBVMUcLVCFDUMEFMFUFG

Slide 13

Slide 13 text

ͳͥɺ.BLFGJMF͸ࢮΜͩͷ͔ʁ Ͱ͸ɺ ΋͘͠͸୭͕ࡴͨ͠ͷ͔ʁ

Slide 14

Slide 14 text

ͳͥɺ.BLFGJMF͸ࢮΜͩͷ͔ʁ w υΩϡϝϯτͷෆࡏ w γεςϜҎ֎ʹԿ΋ͳ͍ঢ়ଶͰ͸৽͍͠։ൃऀ͸.BLF fi MFΛݟ֤ͯʑͷม਺΍΍Γ͍ͨ͜ͱΛཧղ͢Δඞཁ͕͋Δ w ར༻։࢝·ͰͷΦʔόʔϔου͕େ͖͍ঢ়ଶ w ࣮ଶͱͷဃ཭ w Φʔόʔϔου͕େ͖͘ͳΔͱར༻ऀ͕ݮͬͯ͠·͍݁Ռͱͯ͠ݱߦγεςϜ΍ιʔείʔυͱͷဃ཭͕ੜ·Εͯ͠·͏ w ෳࡶ͞ٴͼΧΦεԽ w ࡞ۀΛ୯७Խͤͣʹෳࡶͳ࡞ۀΛͦͷ··.BLF fi MFʹམͱ͠ࠐΉΜͰ͠·͏ͱෳࡶԽ͕૿ͯ͠͠·͏ɻ 
 ਖ਼௚ɺͦ͜·ͰΫι௕͍࡞ۀΛ.BLF fi MFʹ΍Β͢ͳʂσόοά͠ΜͲ͍ͧ IUUQTTQFBLFSEFDLDPNLMPXQIQFSLBJHJ ͞·͟·ͳΦϖϨʔγϣϯ͕͋Δ͕ 
 ͦΕΒΛNBLF fi MFʹهࡌ͕ͳ͍

Slide 15

Slide 15 text

ΑΈ͕͑Δ.BLFGJMF ͍ͭʹɺɹ

Slide 16

Slide 16 text

ΑΈ͕͑Δ.BLFGJMF w ܧଓతͳυΩϡϝϯςʔγϣϯ w γεςϜ΍.BLF fi MFͷཧղΛૣΊͯར༻։࢝·ͰͷΦʔόʔϔουΛ࡟ݮͤ͞ΔͨΊʹυΩϡϝϯτΛ༻ҙ͢Δ w ޙ͔Β͸ઈରʹهࡌ͠ͳ͍ͷͰίϝϯτ΋ؚΊͯ3&"%.&ʹ΋هࡌ͓ͯ͘͠ w .BLF fi MFͷશͯΛυΩϡϝϯτԽ͢ΔඞཁͰ͸ͳ͘සग़΍։ൃϑϩʔʹ४ͨ͡΋ͷ͚ͩهࡌͯ͠Ε͹ྑ͍ w .BLF fi MFΛҭͯΔ w γεςϜ͸ܦ೥ྼԽͯ͠ɺʮ͋Εʁੲ͸͜ΕͰग़དྷͨΜ͚ͩͲͳʯͳͲ;͚ͨ͟ηϦϑΛు͘ɻҭͯΔ͜ͱ͕େࣄ w ΦϖϨʔγϣϯ͕ൃੜͨ͠Βɺۛຯͯ͠औΓࠐΜͰɺརศੑΛߴΊΔͨΊʹNBLFIFMQΛͪΌΜͱ࣮૷͢Δ w ͳΔ΂͘ɺෳࡶͳ͜ͱ͸͠ͳ͍ w ՄೳͳݶΓෳࡶͳ͜ͱ͸͠ͳ͍͕ࣗಈੜ੒΍ࣗಈσϓϩΠͳͲ΋͢ΔΑ͏ʹͳΔͷͰͲΜͲΜෳࡶʹͳΔ w ֎෦πʔϧʹཔΔ΂͖ͱ͜Ζ͸͔ͬ͠Γཔͬͯ͠·͏ ཁ๬͕͋Ε͹ϒϩάॻ͘ͷͰ 
 5XJUUFSͰݴٴ͔ϝϯγϣϯͯ͠

Slide 17

Slide 17 text

ࢀর w (/6.BLFୈ൛ w IUUQTXXXPSFJMMZDPKQMJCSBSZ w ໨తʹԊͬͨ%PDVNFOUBUJPOBT$PEFΛ͍͔ʹ࣮ͯ͠ݱ͍͔ͯ͘͠1)1FS,BJHJ w IUUQTTQFBLFSEFDLDPNLMPXQIQFSLBJHJ w -FBSOJOH(P w IUUQTMFBSOJOHPSFJMMZDPNMJCSBSZWJFXMFBSOJOHHP w (PͰ࢖͏.BLF fi MFͷҭͯํ w IUUQT[FOOEFWSPTZMJMMZBSUJDMFTHPNBLF fi MF w (PHFOFSBUF w IUUQTCMPHHPMBOHPSHHFOFSBUF ͦͷଞɺଟ͘ͷ044

Slide 18

Slide 18 text

%0/& ߴධՁˍνϟϯωϧొ࿥͓Ͷ͕͍͠·͢