そうだ、Go京都。
GoݴޠΛ΄΅ຖॻ͍͍ͯΔ (ং)ͯͳ id:y_uuki
View Slide
id:y_uuki / @y_uuk1Yuuki Tsubouchihttps://yuuk.ioגࣜձࣾͯͳWebΦϖϨʔγϣϯΤϯδχΞ / γχΞΤϯδχΞ
Goྺ• 2013͙Β͍͔ΒWatch• 2014ʹ·ͱʹॻ͖࢝Ίͨ• ࠷ॳTour of Go• Go Kyotoͱ͍͏Jxck ͞ΜʹΑΔϋϯζΦϯʹࢀՃ• mkr / mackerel-client-go ͳͲΛॻ͍ͨ• 2015~2016લ ͍͔ͭ͘ΦϖϨʔγϣϯπʔϧͭͬͨ͘• grabeni / droot / gokc ͳͲ
http://developer.hatenastaff.com/entry/golang-for-ops
ͳΜͰຖॻ͖࢝Ίͨͷ͔
ͳΜͰຖॻ͖࢝Ίͨͷ͔• ΦϖϨʔγϣϯ͢ΔΑΓɺιϑτΣΞͱ͔จষΛॻ͍ͯΔͱ͖ͷ΄͏͕࣮͖• ϒϩά͍͍͚Ͳ͍͔ͭදతϓϩμΫτΛ࡞ͬͯΈ͍ͨ• ͔͠͠ɺιϑτΣΞΛॻ͘εΩϧͱɺॻ্͖͛Δମྗ͕Γͳ͍ => ຖίʔυॻ͜͏
SiteReliabilityEngineeringHOW GOOGLE RUNSPRODUCTIONSYSTEMSPhoto by O’reilly Media / CC by 3.0http://shop.oreilly.com/product/0636920041528.do https://creativecommons.org/licenses/by/3.0/deed
ͳʹΛຖॻ͍͍ͯΔͷ͔
DiamonDBhttps://github.com/yuuki/diamondb
writedatapointsKinesis StreamsLambdareaddatapointsElastiCacheDynamoDBLambdaTTL expiredflushwriteWeb App(Golang)S3readreadread
writedatapointsKinesis StreamsLambdareaddatapointsElastiCacheDynamoDBLambdaTTL expiredflushwriteWeb App(Golang)S3readreadreadAWSͷෳͷσʔλετΞΛΈ߹ΘͤͨGo ΣϒΞϓϦέʔγϣϯ
ͳʹΛຖॻ͍͍ͯΔͷ͔• DiamonDB• ͍͍ͩͨಉ͡ΞʔΩςΫνϟͷͷΛۀͰ։ൃத• ίʔυϕʔεۀͷͱผ• ͜Ε·Ͱͭͬͨ͘πʔϧͷϝϯςφϯε• ۀͰ͍ͬͯΔͷͰɺमਖ਼ػೳՃ• Pull RequestରԠ
ຖॻͨ͘ΊʹΔ͜ͱ
ຖॻͨ͘ΊʹΔ͜ͱ• ʮຖʯࣗମʹҙຯͳ͘ɺܧଓతʹίʔυΛॻ͚Δ͔͕େࣄ• 1 commit / day ͰΑ͍• Ͳ͏͚ͯ͠͠Εɺgit commit —date Ͱ͔͖͔͑• ͜ΕͰϞνϕʔγϣϯ͕ଓ͘ͳΒͦΕͰΑ͍• ฏ͋·Γॻ͚ͳ͍ͷͰɺͷ͏ͪʹΠγϡʔΛ༻ҙ• ۀͱ݁ͼ͚ͭΔ• ෳͷϓϩδΣΫτΛͭ
ຖॻ͍͍ͯͯΘ͔ͬͨ͜ͱ
ຖॻ͍͍ͯͯΘ͔ͬͨ͜ͱ• ຖίʔυॻͨ͘ΊͷϦζϜ͕Ͱ͖Δ• ϝϞϦʹͷͬͯΔͷͰɺ࣍ʹॻ͘ͱ͖ʹ·ͳ͍• ͍͖ͳΓେ͖͘มߋ͢ΔͷͰͳ͘ɺখ͞ͳมߋΛੵΈॏͶΔΑ͏ʹͳΔ• ʹແཧ͠ͳ͘ͳΔ• ແཧΛ͢Δͱ݁ہଓ͔ͳ͍
Go tips
https://github.com/yuuki/yuuki/blob/master/golang/http-api-server-stack.mdGoͰHTTP APIαʔόॻ͘ͱ͖ͷελοΫGoͰHTTP APIαʔόॻ͘ͱ͖ͷελοΫ
https://medium.com/@haya14busa/idiomatic-go-readability-f0b42ef381dc
https://github.com/golang/go/wiki/CodeReviewComments
;ͩΜΈ͍ͯΔ Gophers• @deeeet• @mattn• @motemen• @Songmu• @haya14busa• @davecheney• @dgryski
ΠϯϓοτͱΞτϓοτ
ΠϯϓοτͱΞτϓοτ• Πϯϓοτ: ຊΛಡΉɺϒϩάΛಡΉͳͲ• Ξτϓοτ: ٕज़ஊٛɺൃදɺϒϩάɺίʔυͳͲ• ݺٵͷΑ͏ͳͷ• Πϯϓοτ͢ΔͱΞτϓοτͨ͘͠ͳΔɻΞτϓοτ͢Δͱ·ͨΠϯϓοτΛͱΊΔ• ΞτϓοτҰݟແବʹΈ͑Δ͕ɺఆظతʹΞτϓοτ͢Δ͜ͱͰΠϯϓοτ૿͍͑ͯ͘