Slide 1

Slide 1 text

Go at fluct Nature Bath vol.6 #naturebath, 2020/11/18 @suzu_v

Slide 2

Slide 2 text

ࣗݾ঺հ ླ໦݈ଠ, ͚ͣ͢Μ (Twitter: @suzu_v) גࣜձࣾfluct औక໾CTO ΈΜͳͷGoݴޠ ڞஶऀ ࠷ۙ͸TypeScriptͱPHPͱYAMLΛΑ͘ॻ͍͍ͯ·͢

Slide 3

Slide 3 text

fluctͰͷGoར༻ -2015: PHP, Perl, Erlang͕ϝΠϯ 2015೥͘Β͍͔ΒঃʑʹαϒγεςϜ͔Βར༻։࢝ ݱঢ়Ͱ͸ෳ਺ͷϓϩμΫγϣϯϫʔΫϩʔυʹ࢖ΘΕ͍ͯΔ cliπʔϧɺdebuggerɺAPIαʔόɺόον... ࠓ೔͸3ͭͷࣄྫΛ঺հ͠·͢

Slide 4

Slide 4 text

௿ϨΠςϯγͱ҆ఆੑΛੜΉΞʔΩςΫ νϟ - SSPͷݱ৔ʹֶͿɺߴՄ༻ੑͷͭ͘ Γํ: ΤϯδχΞHub https://eh-career.com/engineerhub/entry/ 2019/07/12/103000

Slide 5

Slide 5 text

ࣄྫ1: PHP -> Go ݩʑ: ޿ࠂ഑৴ϩάΛग़ྗ͢Δαʔό Apache + PHP ໾ׂ: ഑৴ύϥϝʔλͷ෮߸ɺϩάग़ྗʢ੥ٻ & ؂ࢹ༻ʣ // PHP -> Apache (custom log module) -> log apache_setenv(F_ENV_NAME_STATUS, $status); Testability௿͍, Apacheͳ͍ͱखݩͰࢼͤͳ͍ -> ϦϓϨʔε

Slide 6

Slide 6 text

PHP -> Go: ςετ༰қੑͱҠ২ TestMain ͰPHP + ApacheίϯςφͱGoίϯςφΛ্ཱͪ͛ ֤ςετέʔεͰϓϩμΫγϣϯͱಉ༷ͷύϥϝʔλΛ࣮ࡍʹ౤͛Δ ग़ྗ͞ΕΔϩά͕PHP + Apache࣮૷ͱGo࣮૷ͰಉҰͰ͋Δ͜ͱΛࢼݧ ҉߸ԽɺloggerɺWeb API·ΘΓΛGoʹҠ২ & ֤ػೳΛpackageԽ

Slide 7

Slide 7 text

ࣄྫ2: Open Bidding΁ͷ઀ଓ Google Ad Managerʹbidderͱͯ͠઀ଓ @tomita τϛʔϧ͞Μ͕։ൃ Open Biddingͱ͸ ͻͱ͜ͱͰ: Google͔Β޿ࠂϦΫΤετΛड෇͚ɺͦΕΛDSPsʹϦΞϧλΠϜʹΦʔΫγϣϯ͠ɺ޿ࠂΛฦ ͢࢓૊Έʢ͢΂ͯαʔόؒ௨৴ʣ ϝσΟΞ <- Google <-> bidder (fluct) <-> DSPs GoͰ࣮૷ʢRTBαʔϏε͸Erlang࣮૷Λར༻ʣ 30ԯʙ req. / day ϚϧνΫϥ΢υʢAWS, GCPʣɺϚϧνϦʔδϣϯ എܠ: ଟ༷ͳϦΫΤετɺεϧʔϓοτॏࢹɺطଘαʔϏεΛ͏·͘࢖͍ճ͢

Slide 8

Slide 8 text

ࣄྫ2: Open Bidding΁ͷ઀ଓ (cont.) https://www.youtube.com/watch?v=uE0ReWlYbNk

Slide 9

Slide 9 text

ࣄྫ3: romdb 2010- memcachedb + Berkeley DB forkͨ͠memcachedbʢC++੡ʣͷϏϧυ͕ͭΒ͍ Berkeley DBΛஈ֊తʹஔ͖׵͍͖͍͑ͯͨ -> memcachedb෦ΛGoʹஔ͖׵͑

Slide 10

Slide 10 text

ࣄྫ3: romdb (cont.) @yowcow ͕GoͰϦϓϨʔε https://github.com/yowcow/goromdb storage૚ͷࠩ͠ସ͕͑Մೳ: Berkeley DB, BoltDB, JSON etc. ಛఆσΟϨΫτϦʹ͓͘ͱstorageΛࠩ͠ସ͑ΒΕΔ (memcachedbͱಉ༷ʣ ϓϩτίϧ΋ෳ਺ରԠՄೳʢmemcached, etc.ʣ ຊ൪؀ڥͰ͸BoltDBͱBerkeley DBΛซ༻

Slide 11

Slide 11 text

·ͱΊ • ͍ΖΜͳਓ͕ͳΜ͔ͩΜͩGoΛ৮͍ͬͯΔ • ϓϩμΫτͷ伱ؒɺͪΐͬͱϏϧυɾςετΛ͠΍͍ͨ͘͢͠ ͱ͖ʹGo͕ͪΐ͏Ͳ͍͍