Slide 1

Slide 1 text

©2021 Wantedly, Inc. ϚΠΫϩαʔϏεɾΞʔΩςΫνϟ ͱڞଘ͢Δ3VCZPO3BJMTͷ ΞʔΩςΫνϟత֦ு ͦͷࣄྫͱՄೳੑ ,BJHJPO3BJMT4PIFJ5BLFOP

Slide 2

Slide 2 text

©2021 Wantedly, Inc. ൃදͷૂ͍ "CTUSBDUΑΓ lۙ೥ɺίϯςφٕज़΍Ϋϥ΢υαʔϏεͷൃలʹΑͬͯɺඞͣ͠΋୯ҰͷϓϩάϥϛϯάݴޠͷΈͰγεςϜΛ ߏ੒͠ͳ͍έʔε΋૿͖͑ͯ·ͨ͠ɻࢲͨͪͷαʔϏεʹ͓͍ͯ΋ɺػցֶशٕज़ͳͲͷಋೖͷඞཁ͔Βɺ೥લ ͔Β3VCZҎ֎ͷݴޠͱڞଘ͍ͯ͘͠ܗͰɺNJDSPTFSWJDFTͷΞʔΩςΫνϟɾελΠϧΛஈ֊తʹಋೖ͖ͯ͠ ·ͨ͠ɻ ͜ͷऔΓ૊ΈͷதͰɺ3VCZPO3BJMTࣗମͷΞʔΩςΫνϟ΋ݟ௚͕͠ඞཁʹͳΓ·ͨ͠ɻྫ͑͹ɺ௨৴ʹ H31$Λ࠾༻͢Δ৔߹ɺ)551Λલఏͱͨ͠3BDLͷ࢓૊Έʹ͸৐Δ͜ͱ͕Ͱ͖ͣɺ͕ͨͬͯ͠ίϯτϩʔϥʔ ૚΋࠶ఆٛ͢Δඞཁ͕͋Γ·͢ɻ΄͔ʹ΋"1*εΩʔϚͷಋೖɺ"1*Ϩεϙϯεͷܕ෇͖ͷ૊Έཱͯɺ "DUJWF3FDPSEʹґଘ͠ͳ͍σʔλͷόονϩʔσΟϯάػߏͷಋೖͳͲΛߦ͍ͬͯ·͢ɻ ࠓճͷൃදͰ͸ɺ͜ΕΒͷܦݧΛ౿·͑ͯ୯Ұͷ౷߹γεςϜͱͯ͠ઃܭ͞Εͨ3VCZPO3BJMTΛ1PMZHMPUͳ NJDSPTFSWJDFTʹద߹͍ͤͯ͘͞ʹ͋ͨͬͯɺͲ͏͍ͬͨ՝୊͕Ұൠతʹ͋ΓɺͦΕΛࢲͨͪͷαʔϏεʹ͓͍ ͯ͸ͲͷΑ͏ʹղܾͨ͠ͷ͔Λ͓࿩͠͠·͢ɻಉ͡՝୊Λ͍࣋ͬͯΔํ͸΋ͪΖΜͷ͜ͱɺΞʔΩςΫνϟ֦ுʹ ରͯ͠։͔Ε͍ͯΔͱ͍͏3BJMTͷར఺Λݟ௚͢ػձͱͳΓɺࠓޙͷൃలՄೳੑͷٞ࿦ʹͭͳ͕Ε͹޾͍Ͱ͢ɻz

Slide 3

Slide 3 text

©2021 Wantedly, Inc.  ϏδωεɺϓϩμΫτɺιϑτ΢ΣΞ$POUFYU  3BJMTΛNJDSPTFSWJDFTʹద߹ͤ͞Δͱ͍͏͜ͱ1SPCMFN  3BJMTͷΞʔΩςΫνϟΛΞοϓσʔτ͢Δ4PMVUJPO ίϯςϯπ

Slide 4

Slide 4 text

©2021 Wantedly, Inc. 4PIFJ5BLFOP 8BOUFEMZ *OD w ϓϩμΫτϚωʔδϟʔˠΞʔΩςΫτ w ৭ʑͳ΋ͷΛ։ൃશମͰ࠷దԽ͢ΔΑ͏ͳ͓࢓ࣄ -JLF w ϓϩμΫτ։ൃ w ྑ͍ϓϩμΫτΛ࡞ΕΔಓ۩ɿ3BJMT 4QSFBETIFFU w 🍶ɺ🎮ɺ📚 ࣗݾ঺հ "MUFDI "MUFDI "MUFDI@

Slide 5

Slide 5 text

©2021 Wantedly, Inc. ϏδωεɺϓϩμΫτɺιϑτ΢ΣΞ $POUFYU

Slide 6

Slide 6 text

๏ਓ޲͚αʔϏε © 2021 Wantedly, Inc. ఏڙϓϩμΫτ SINCE 2020 SINCE 2012 HIRING ݸਓ޲͚αʔϏε SINCE 2012 SINCE 2016 SINCE 2019 PROFILE ˞υϝΠϯͱͯ͠͸ڧ݁͘߹͓ͯ͠Γɺ 
 දͷΑ͏ʹഉଞతʹ෼͔ΕΔΘ͚Ͱ͸ͳ͍

Slide 7

Slide 7 text

© 2021 Wantedly, Inc. HOW ʛ ϓϩμΫτ։ൃ / ςΫϊϩδʔ / ਓ Applications System Data iOS Platform Web Platform Android Platform Infrastructure: Wantedly Design System Infrastructure : Kubernetes System Cluster • Argo Workflo w generate Gatewa y • GraphQ L Data Warehouse Infrastructure: BigQuery ΞʔΩςΫνϟͱओཁٕज़ • Primary Data 
 src: System • Log Data
 src: System, Applications Raw Data • Protocol Buffers over gRP C • Protocol Buffers over Cloud Pub / Sub Online Communication Offline Communication [Language] TypeScript, Swift, Kotlin [Framework] React, ReactorKit [Language] Ruby, Go, Python [Datastore] Postgres, Redis, Elasticsearch [Machine Leaning] scikit, LightGBM [Observability] Istio, Datadog, NewRelic [Language] SQL [Data Inspector] Looker [Data Collector] fluentd ※ The Ruby logo by Yukihiro Matsumoto (2005) / CC BY-SA 2.5 ※ The Go gopher was designed by Rene French / CC BY 3.0 #Components < 10 #Components < 100 ࠓ೔ͷ͓࿩ ˞ෳ਺ͷ"QQMJDBUJPOʹಉ͡ػೳΛఏڙ͢ΔͨΊɺ 
 υϝΠϯϩδοΫ͸4ZTUFNʹू໿͠"1*Խ

Slide 8

Slide 8 text

©2021 Wantedly, Inc. 1. microservices ͸͋͘·ͰΞʔΩςΫνϟɾελΠϧͳͷͰ࢖͍ํ͸৭ʑ 2. ग़དྷΔΑ͏ʹͳΔ͜ͱ͸ଟ͍͕ɺશͯΛ௚ͪʹ΍Βͳ͚Ε͹͍͚ͳ͍Θ͚Ͱ͸ͳ͍ 3. ಘΒΕΔརӹͱίετͷόϥϯεΛݟͳ͕Β΍͍ͬͯΔ ͲΜͳNJDSPTFSWJDFTΛ΍͍ͬͯΔ͔ ϓϩάϥϛϯάݴޠʜ1PMZHMPU w 1ZUIPOػցֶशɾਪનશൠ w 3VCZίΞͳυϝΠϯͷ΄ͱΜͲʢϞϊϦεˍ৽نυϝΠϯʣ w (P੹຿͕໌֬ɺ҆ఆੑ΍ϋΠύϑΥʔϚϯε͕ٻΊΒΕΔ΋ͷ̈ ϞϊϦεͷ෼ׂʜඅ༻ରޮՌ͕ߴ͍ɾඞཁʹͳͬͨՕॴ͚ͩ νʔϜͱͷରԠʜ݁Ռͱͯ͠ରԠ͢Δ͜ͱ͸͋Δ ̈8BOUFEMZʹ͓͚Δ(Pಋೖʹ·ͭΘΔٕज़എܠ ϙΠϯτ 30ݸ͘Β͍

Slide 9

Slide 9 text

©2021 Wantedly, Inc. 3BJMTΛNJDSPTFSWJDFTʹద߹ͤ͞Δ ͱ͍͏͜ͱ 1SPCMFN

Slide 10

Slide 10 text

©2021 Wantedly, Inc.  8FC৘ใγεςϜΛ࡞ΔͨΊͷ౷߹ϑϨʔϜϫʔΫ̈ w 8FC৘ใγεςϜͷྫɿHJUIVCDPN 3BJMTͷ޲͔͍ͬͯΔ՝୊ github.com ̈5IF3BJMT%PDUSJOF

Slide 11

Slide 11 text

©2021 Wantedly, Inc.  8FCʜ8PSME8JEF8FCͷུশΠϯλʔϯωοτ 5IF*OUFSOFU   8PSME8JEF8FCʜ৘ใγεςϜ͕ू·ͬͨɺΦʔϓϯͳ෼ࢄγεςϜ w ͞·͟·ͳΫϥΠΞϯτɺαʔόʔͳͲ͕ࢀՃͨ͠Γɺ཭୤ͨ͠Γͯ͠ઈ͑ͣมԽ͍ͯ͠Δ w ಈతͳΞʔΩςΫνϟ  3&45ʜΑΓʮྑ͍ʯ8FCͷͨΊͷΞʔΩςΫνϟɾελΠϧ w lݸʑͷz৘ใγεςϜΛ͜͏ઃܭ͢Δͱɺlશମͱͯ͠zՁ஋͕૿͍͑ͯ͘͸ͣɺͱ͍͏ࢹ఺̈ 8FCͷ޲͔͍ͬͯΔ՝୊ 8FCͷߏ଄Λͦͷ··Ұͭͷ৘ใγεςϜΛ࡞ΔͨΊʹ࢖͑ΔͷͰ͸💡 github.com wikipedia.com ̈3F fl FDUJPOTPOUIF3&45BSDIJUFDUVSBMTUZMFBOEQSJODJQMFEEFTJHOPGUIFNPEFSOXFCBSDIJUFDUVSF

Slide 12

Slide 12 text

©2021 Wantedly, Inc.  8FC৘ใγεςϜΛ࡞ΔͨΊͷ౷߹ϑϨʔϜϫʔΫ w 8FC৘ใγεςϜͷྫɿHJUIVCDPN  3&45ΞʔΩςΫνϟɾελΠϧͷӨڹΛڧ͘ड͚͍ͯΔ w 8FCશମͷՁ஋ʹ޲͍͍ͯΔ ➡︎ 3BJMTGPSNJDSPTFSWJDFT w NJDSPTFSWJDFTͱ3&458FCͷߟ͑ํ͸͍ۙ w υϝΠϯͰ෼ׂ͢ΔɺܰྔͳϓϩτίϧΛ࢖༻͢Δʜ̈ w 3BJMTͰNJDSPTFSWJDFTΛ࢝ΊΔ৔߹ɺຆͲͷ΋ͷΛͦͷ··స༻͢Δ͜ͱ͕Ͱ͖Δ w ϦΫΤετɾϨεϙϯεϞσϧɺ+40/ɺϦιʔεࢦ޲ɺɾɾɾ 3BJMTͷ޲͔͍ͬͯΔ՝୊ ̈5IF3BJMT%PDUSJOF ̈.JDSPTFSWJDFT NBSUJOGPXMFSDPN github.com wikipedia.com

Slide 13

Slide 13 text

ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2021 Wantedly, Inc. ΍ͬͨʂ🎉

Slide 14

Slide 14 text

ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2021 Wantedly, Inc. ʁ

Slide 15

Slide 15 text

©2021 Wantedly, Inc.  ૉ๿ͳస༻όʔδϣϯ͸ɺͦΕͳΓʹ্ख͘ಈ͍ͯ͘ΕΔ w ˞3BJMT͕͍࣋ͬͯΔ΋ͷΛNJDSPTFSWJDFTʹͦͷ··࣋ͪࠐΉ͜ͱΛɺͱΓ͋͑ͣ͜͜Ͱ͸ʮૉ๿ͳస༻όʔδϣϯʯͱݺͼ·͢ w ߏ଄ͱͯ͠͸େ͖͘ҧΘͳ͍ͨΊɺ8FC͕ಈ͍͍ͯͨͷͱಉ͡ݪཧͰಈ͔ͤΔɻ  ߏ଄͸ࣅ͍ͯΔ͕ɺ໨త΍੍໿৚݅͸ҟͳΔ w ୯Ұͷ૊৫WT͋ΒΏΔ૊৫ w ΦʔϓϯWTΫϩʔζυ w ར༻͢Διϑτ΢ΣΞɾϞδϡʔϧͷίϯτϩʔϧՄೳੑ w ʜ ͪΐͬͱཱͪࢭ·ͬͯߟ͑Δ ➡︎ ͜ͷมԽʹରԠ͢Δʮ࠷దԽόʔδϣϯʯΛߟ͑Δ͜ͱ͕Ͱ͖Δ

Slide 16

Slide 16 text

©2021 Wantedly, Inc.  "1*Λ࢖ͬͨ౷߹Λ࣮֬ʹ͢Δ༨஍͸ͳ͍͔ʁ  ΑΓޮ཰తͳ௨৴ϓϩτίϧ͸ͳ͍͔ʁ  ಉظͱඇಉظͷτϨʔυΦϑΛબ୒Ͱ͖ΔΑ͏ʹͳΒͳ͍͔ʁ ࠷దԽ͕ߟ͑ΒΕͦ͏ͳτϐοΫ

Slide 17

Slide 17 text

©2021 Wantedly, Inc.  ಉ͡૊৫Ͱ͋Ε͹ΑΓڧ͍ΨόφϯεΛෑ͘͜ͱ͕Ͱ͖Δ w ࣗ༝౓ͱޮ཰ੑͷτϨʔυΦϑΛಈ͔ͤΔ  "1* fi STUͳ։ൃελΠϧͷಋೖ̈ w "1*ͷεΩʔϚΛઌʹܗࣜతʹهड़ͯ͠ɺ౷߹͢Δ w ྫ͑͹ɺ1SPUPDPM#V ff FST 1SPUPCVG Ͱهड़͢Δ ࠶ߟɿ"1*ఆٛ ̈#FZPOEUIF5XFMWF'BDUPS"QQ

Slide 18

Slide 18 text

©2021 Wantedly, Inc.  εΩʔϚఆٛݴޠ݉ɾγϦΞϥΠθʔγϣϯɾϑΥʔϚοτ   σʔλܕΛʮϝοηʔδʯͱ͍͏୯ҐͰهड़ w ϓϩάϥϚʔͳΒ୭Ͱ΋͙͢ʹಡΈॻ͖Ͱ͖ΔΑ͏ͳ୯७ͳߏจΛ͍࣋ͬͯΔ ඵͰΘ͔Δ1SPUPDPM#VGGFST ※ Protobuf ͸࢓༷ͱͯ͠ JSON ΁ͷϚοϐϯά΋ఆٛ͞Ε͍ͯΔͨΊɺ
 εΩʔϚͷهड़Λ Protobuf Ͱߦ͍ɺ࣮ࡍʹ΍ΓͱΓ͢ΔγϦΞϥΠ θʔγϣϯɾϑΥʔϚοτ͸ JSONɺͱ͍͏͜ͱ΋Մೳɻ

Slide 19

Slide 19 text

©2021 Wantedly, Inc.  NJDSPTFSWJDFTʹ͢Δͱɺ΍ΓͱΓͷ਺͕૿͑ͯϨΠςϯγʔ͕૿େ͕ͪ͠  ࣗ෼ͨͪͷγεςϜͰ͋Ε͹ιϑτ΢ΣΞϞδϡʔϧΛ౷Ұ͢Δ͜ͱ͕Ͱ͖Δ  8FCͷͪΐͬͱઌऔΓΛ͢Δ͜ͱ͕Ͱ͖Δ w )551Λར༻͢Δ w )551ΛσʔλసૹϨΠϠʔͱͯ͠׆༻ͨ͠ ɺH31$Λར༻͢Δ ࠶ߟɿ௨৴ϓϩτίϧ ※ gRPC ͸ HTTP2 ͷʮϦΫΤετͷଟॏԽʯʮTCPηογϣϯͷࣗಈ࠶઀ଓʯ ͳͲΛ׆༻͓ͯ͠Γɺޮ཰తͳ௨৴͕Ͱ͖Δ

Slide 20

Slide 20 text

©2021 Wantedly, Inc.  )551Ͱ͍͏ΤϯυϙΠϯτΛʮ31$ʯͱ͍͏୯ҐͰهड़ w 3FNPUF1SPDFEVSF$BMMͷུʢωοτϫʔΫӽ͠ͷؔ਺ݺͼग़͠ͱ͍͏ҙຯʣ  w )551ʹΑΔϦΫΤετɾϨεϙϯεϞσϧͱຊ࣭తͳҧ͍͸ͳ͍ʢ˞TUSFBNΛ࢖Θͳ͚Ε͹ʣ   ෳ਺ͷ31$Λ·ͱΊͨʮ4FSWJDFʯͱ͍͏୯ҐͰهड़ ඵͰΘ͔ΔH31$

Slide 21

Slide 21 text

©2021 Wantedly, Inc.  ϦΫΤετɾϨεϙϯεϞσϧ͸ҙ֎ͱ੍໿͕ଟ͍  NJDSPTFSWJDFTͰ͸Ͳ͔͜Ͱ଍ᐫʹͳΔ w ͍ͭ଍ᐫʹͳΔ͔͸ཁٻ΍ಛੑʹΑΔʢҊ֎ઌͩͬͨΓ͢Δʣ w ͨͩ͠ɺ଍ᐫʹͳͬͨͱ͖ʹద੾ͳ൑அΛ͢ΔͨΊʹ͸ɺݶքΛೝ͓ࣝͯ͘͠ඞཁ͕͋Δɻ  ผͷํࣜΛซ༻ɿʮඇಉظϝοηʔδϯάʯϞσϧ w Ϩεϙϯε͸ͦ΋ͦ΋ͳ͍ʢඞཁͳΒίʔϧόοΫΛୟ͘ʣ w ௚ͪʹϝοηʔδ͕ॲཧ͞ΕΔ͜ͱ΋ظ଴͠ͳ͍ʢ௨ৗ͸ʣ w ྫ͑͹(PPHMF$MPVE1VC4VCʹ1SPUPCVGϝοηʔδΛ٧ΊͯૹΔ ࠶ߟɿϦΫΤετɾϨεϙϯεϞσϧ

Slide 22

Slide 22 text

©2021 Wantedly, Inc.  0OFTIPU w ͢΂ͯͷϦΫΤετ͸ɺͭͷϨεϙϯε͔͠ੜ੒Ͱ͖·ͤΜɻͦͷϨεϙϯεϝοηʔδ͕ Τϥʔʢ·ͨ͸ฆࣦʣʹͳͬͨ৔߹ɺճ෮ϓϩτίϧ͸͋Γ·ͤΜɻ  0OFUPPOF w ͢΂ͯͷϦΫΤετ͸ɺͭͷΫϥΠΞϯτ͔Βͭͷαʔόʔ΁ͱਐΈ·͢ɻҰ౓ʹෳ਺ͷά ϧʔϓʹϧʔςΟϯά͢ΔͷͰ͸ͳ͘ɺϓϩΩγͷνΣʔϯ͕ͦΕͧΕʹ౉͠·͢ɻ  0OFXBZ w ͢΂ͯͷϦΫΤετ͸ΫϥΠΞϯτʹΑͬͯ։࢝͞Εͳ͚Ε͹ͳΒͣɺ͢΂ͯͷϨεϙϯε͸ ௚ͪʹੜ੒͞Εͳ͚Ε͹ͳΒͳ͍ͨΊɺαʔόʔ͸ඇಉظͷ௨஌ΛૹΔ͜ͱ͕Ͱ͖·ͤΜɻ ࢀߟɿϦΫΤετɾϨεϙϯεϞσϧͷࡾͭͷݶք̈ 3PZ'JFMEJOHΒʹΑΔݟղ ̈3F fl FDUJPOTPOUIF3&45BSDIJUFDUVSBMTUZMFBOEQSJODJQMFEEFTJHOPGUIFNPEFSOXFCBSDIJUFDUVSF

Slide 23

Slide 23 text

©2021 Wantedly, Inc.  "1*εΩʔϚͷಋೖc1SPUPDPM#V ff FST  ϦΫΤετɾϨεϙϯεϞσϧͷ௨৴ϓϩτίϧͷมߋcH31$)551  ඇಉظϝοηʔδϯάϞσϧͷ௥Ճc(PPHMF$MPVE1VC4VC ʮ࠷దԽόʔδϣϯʯมߋ·ͱΊ ⚠ ͜Ε͕શ෦ἧΘͳ͍ͱ microservices Λ࢝Ίͯ͸͍͚ͳ͍Θ͚Ͱ͸ͳ͍ʢχʔζʹԠͯ͡ʣ

Slide 24

Slide 24 text

©2021 Wantedly, Inc. 3BJMTͷΞʔΩςΫνϟΛΞοϓσʔτ͢Δ 4PMVUJPO

Slide 25

Slide 25 text

©2021 Wantedly, Inc. ໰୊ɿʮૉ๿ͳస༻όʔδϣϯʯͱʮ࠷దԽόʔδϣϯʯͷΪϟοϓ ղܾɿσϑΥϧτͷ.7$ΞʔΩςΫνϟΛద੾ʹΞοϓσʔτ͢Δ w 1SPUPDPM#V ff FSTͷಋೖ4DIFNB w 1C4FSJBMJ[FSͷಋೖ7JFX w H31$4FSWJDFͷಋೖ$POUSPMMFS w H31$*OUFSDFQUPSͷಋೖ.JEEMFXBSF w $PNQVUFE.PEFMͷಋೖ.PEFM w 1VC4VCϝοηʔδϯάͷಋೖ"TZODISPOZ ΍Γ͍ͨ͜ͱ ☑ API εΩʔϚͷಋೖ ☑ ϦΫΤετɾϨεϙϯεϞσϧͷ௨৴ϓϩτίϧͷมߋ ☑ ඇಉظϝοηʔδϯάϞσϧͷ௥Ճ

Slide 26

Slide 26 text

ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2021 Wantedly, Inc. ελʔτ஍఺

Slide 27

Slide 27 text

©2021 Wantedly, Inc.  "1*ఆٛΛू໿ͨ͠ϦϙδτϦΛ༻ҙ͍ͯ͠Δɻͦ͜ʹϚʔδ͍ͯ͘͠ɻ  "1*ఆ͔ٛΒ֤ϝοηʔδʹରԠ͢ΔΫϥεΛੜ੒ͯ͠HFNͱͯ͠഑৴  $POUSPMMFSͷதͰ͜ΕΒͷΫϥεΛ࢖ͬͯϨεϙϯεΛ૊ΈཱͯΔ 1SPUPDPM#VGGFSTͷಋೖ 4DIFNB Ruby ͰͷϝοηʔδΦϒδΣΫτͷ૊Έཱͯ Protocol Buffers ʹΑΔఆٛ 💡 ίϝϯτॻ͘ͷେࣄ

Slide 28

Slide 28 text

ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2021 Wantedly, Inc. ✅ API εΩʔϚͷಋೖ ☑ ϦΫΤετɾϨεϙϯεϞσϧͷ௨৴ϓϩτίϧͷมߋ ☑ ඇಉظϝοηʔδϯάϞσϧͷ௥Ճ 7JFXΛऔΓ֎ͯ͠1SPUPCVGఆ͕ٛೖͬͨHFNΛར༻

Slide 29

Slide 29 text

©2021 Wantedly, Inc. ݱ࣮తͳྫ ※ Google::Protobuf::StringValue ͸ Protobuf Ͱ͍͏ΦϓγϣφϧܕͷΑ͏ͳ΋ͷʢWell-known types ͷ̍ͭʣ %3:͡Όͳ͍ˍָ͘͠ͳ͍

Slide 30

Slide 30 text

©2021 Wantedly, Inc. γϦΞϥΠβʔͷಋೖ w ໨తɿυϝΠϯʹ͋ΔϞσϧͷϦιʔεදݱΛฦ͢͜ͱ w ख๏ɿϞσϧΛϦιʔεදݱʹγϦΞϥΠζ͢ΔએݴతͳϞδϡʔϧΛఆٛ͢Δ 1C4FSJBMJ[FSͷಋೖ 7JFX XBOUFEMZQCTFSJBMJ[FS 1SPUPCVGͷϝοηʔδΫϥεΛࢦఆ ϥϯλΠϜͰܕ͕֬ఆ͢Δ ͖ͬ͞ͷ৑௕ͳίʔυ͕ফͤΔ ΋Ζ΋ΖͷόϦσʔγϣϯ͕ՄೳʹͳΔ ʢ͍ͣΕ੩తղੳ΋Ͱ͖Δ͔΋ͳ͊ʜ💭ʣ

Slide 31

Slide 31 text

ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2021 Wantedly, Inc. 7JFXʹ૬౰͢Δ෦෼ʹ1SPUPCVG4FSJBMJ[FSΛ௥Ճ

Slide 32

Slide 32 text

©2021 Wantedly, Inc. σϑΥϧτͷ3VCZH31$αʔόʔ࣮૷Λར༻ w HSQDTFSWFSHFNىಈίϚϯυɺϩʔυॲཧͳͲ w ىಈɿbundle exec grpc-server w ΞϓϦέʔγϣϯίʔυɿapp/grpc_services "DUJPO$POUSPMMFS͔ΒH31$4FSWJDF΁ͷஔ͖׵͑ $POUSPMMFS XBOUFEMZHSQD@TFSWFS

Slide 33

Slide 33 text

©2021 Wantedly, Inc. XBOUFEMZSFMPBEFS@JOUFSDFQUPS  3BJMT͸)551αʔόʔΛந৅Խͨ͠3BDLΠϯλʔϑΣΠεͰಈ͍͍ͯΔ w 3BDLͷ࢓૊ΈͷதͰ.JEEMFXBSFͱݺ͹ΕΔϞδϡʔϧ܈͕͞·͟·ͳػೳΛఏڙ͍ͯ͠Δ w ➡︎ H31$ʹ͢Δͱɺ3BDL.JEEMFXBSF͕શ෦࢖͑ͳ͘ͳΔ  H31$*OUFSDFQUPSͱ͍͏ࣅͨΑ͏ͳ࢓૊Έ͕ଘࡏ͢Δ w ଍Γͳ͍΋ͷ͸࡞Δɻ w ؂ࢹɾϞχλϦϯάɿ w HSQD@OFXSFMJD@JOUFSDFQUPSʜαʔόʔ؂ࢹπʔϧ΁σʔλΛૹΔ w HSQD@PQFODFOTVT@JOUFSDFQUPSʜ෼ࢄτϨʔγϯάͷͨΊͷσʔλΛૹΔ w HSQD@BDDFTT@MPHHJOH@JOUFSDFQUPSʜΞΫηεϩάΛͱΔ w ։ൃମݧɿ w SFMPBEFS@JOUFSDFQUPSʜϑΝΠϧΛมߋ͢ΔͱϦϩʔυ͞ΕΔ 3BDL.JEEMFXBSF͔ΒH31$*OUFSDFQUPS΁ͷஔ͖׵͑ .JEEMFXBSF XBOUFEMZHSQD@BDDFTT@MPHHJOH@JOUFSDFQUPS XBOUFEMZHSQD@PQFODFOTVT@JOUFSDFQUPS XBOUFEMZHSQD@OFXSFMJD@JOUFSDFQUPS ActiveSupport::Reloader Λར༻ Rails.application.config.filter_parameters Λࢀর ActiveSupport::ParameterFilter Λར༻

Slide 34

Slide 34 text

ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2021 Wantedly, Inc. $POUSPMMFSͷ෦෼ΛH31$4FSWJDFͰஔ͖׵͑ɺ 3BDL.JEEMFXBSFΛH31$*OUFSDFQUPSͰஔ͖׵͑ͨ ✅ API εΩʔϚͷಋೖ ✅ ϦΫΤετɾϨεϙϯεϞσϧͷ௨৴ϓϩτίϧͷมߋ ☑ ඇಉظϝοηʔδϯάϞσϧͷ௥Ճ

Slide 35

Slide 35 text

©2021 Wantedly, Inc. (PPHMF$MPVE1VC4VCͷಋೖ "TZODISPOZ XBOUFEMZHDQDY w HDQDYHFN(PPHMF$MPVE1VC4VC༻ͷΫϥΠΞϯτ w ΞϓϦέʔγϣϯίʔυɿapp/subscribers

Slide 36

Slide 36 text

ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2021 Wantedly, Inc. ඇಉظϝοηʔδΛॲཧ͢ΔΠϯλʔϑΣΠεΛ௥Ճ ✅ API εΩʔϚͷಋೖ ✅ ϦΫΤετɾϨεϙϯεϞσϧͷ௨৴ϓϩτίϧͷมߋ ✅ ඇಉظϝοηʔδϯάϞσϧͷ௥Ճ Q. ͜ͷύλʔϯͷҧ͍͸ͳΜͩΖ͏ʁ

Slide 37

Slide 37 text

©2021 Wantedly, Inc. ʮૉ๿ͳస༻όʔδϣϯʯͱʮ࠷దԽόʔδϣϯʯͷൺֱ ʮ࠷దԽόʔδϣϯʯ w "1* fi STUͳ։ൃϑϩʔʹରԠͯ͠௨৴ٕज़Λ׵͑ͭͭ΋ɺ֓೦తʹ͸ड͚ೖΕ΍͍͢ߏ଄ʹண஍ w ඇಉظϝοηʔδΛॲཧ͢ΔΠϯλʔϑΣΠεΛ௥Ճ ➡︎ ͜͜͸·ͩΑΓྑ͍ϑΟοτͷ࢓ํͰݕ౼ͷ༨஍͋Γ

Slide 38

Slide 38 text

©2021 Wantedly, Inc. XBOUFEMZDPNQVUFE@NPEFM ิҨɿ"DUJWF3FPDSEͷ෦෼తͳஔ͖׵͑ Ϟσϧʹ૬౰͢Δ෦෼ʹى͜ΔมԽ w ϨεϙϯεͰฦ͢Ϟσϧ͕"DUJWF3FDPSEҎ֎ʹɺଞͷNJDSPTFSWJDFͷσʔλͰ͋Γ͏Δ w "DUJWF3FDPSE͸ɺσʔλιʔεϞσϧఆٛͷରԠؔ܎Λ҉ʹԾఆ͢Δ͜ͱͰɺ 
 όονϩʔσΟϯάΛ୯७Խ͍ͯ͠ΔʢΊͬͪΌศརʣ ➡︎ ͜ΕΒͷؔ৺Λ෼཭ͨ͠Ϟσϧఆٛͷ࢓ํ͕͋ΔͱҰ෦Ͱ͸ศར w ʢ-5̈Ͱ঺հ͞Εͨʣ$PNQVUFE.PEFM͸͜ͷΑ͏ͳ༻్Ͱ࢖͑Δɻ .PEFM ̈DPNQVUFE@NPEFMͷ঺հ

Slide 39

Slide 39 text

©2021 Wantedly, Inc. ·ͱΊ

Slide 40

Slide 40 text

©2021 Wantedly, Inc.  3BJMT͓Αͼ8FCͷ޲͔͍ͬͯΔ՝୊Λ֬ೝ͠ɺ 
 NJDSPTFSWJDFTͱڞଘ͢Δ্ͰͷҰൠతͳ໰୊Λ͍͔ͭ͘ڍ͛ͨ  ֤໰୊ʹରͯ͠ɺ͜ΕΛղܾ͢ΔΞʔΩςΫνϟͱίʔυΛఏࣔͨ͠  શମͱͯ͠ɺ3BJMTΛదԠྖҬͷมԽʹԠͯ͡ΞοϓσʔτͰ͖ͨ 
 ➡︎ 3BJMTͷڧΈͱطଘͷࢿ࢈ΛNJDSPTFSWJDFTͷதͰ׆͔ͯ͠ɺ 
 ɹγεςϜશମͱͯ͠ਐԽΛ͍͚ͯ͠ΔΑ͏ͳϦΞʔΩςΫςΟϯάʹͳͬͨ ΍ͬͨ͜ͱ

Slide 41

Slide 41 text

©2021 Wantedly, Inc. ؍࡯ͦͷ̍ɿΞʔΩςΫνϟมߋͷաఔͰɺ3BJMTͷιϑτ΢ΣΞతͳߏ଄ʹ્· ΕΔͱ͍͏͜ͱ͸΄ͱΜͲͳ͔ͬͨ w ͜Ε͸ҙਤͯͦ͠͏ઃܭ͍ͯ͠ͳ͚Ε͹ɺͦ͏ͳΒͳ͍ɻ w lେ͖ͳࡿΛ޿͛Δzl1VTIVQBCJHUFOUz͸ࣄ࣮Ͱ͋Γɺ͜ͷར఺͸΋ͬͱೝࣝ͞Εͯྑ͍ ؍࡯ͦͷ̎ɿNJDSPTFSWJDFTͰૺ۰͢Δଟ͘ͷ໰୊͸ɺҰൠతͳղܾʹམͪͨ w ΞʔΩςΫνϟʹʮਖ਼ղʯ͸ͳ͍͕ɺʮԦಓʯ͸͋ΔFH3&45ΞʔΩςΫνϟɾελΠϧ w ҰൠԽ͞ΕΔ෦෼ΛϥΠϒϥϦʹ੾Γग़͢͜ͱͰɺ3BJMTͷՄೳੑΛ޿͍͚͛ͯΔ༨஍͸େ͖͍ w ͦΕʹΑͬͯɺϓϩμΫτ΍Ϗδωεɺ૊৫ʹݻ༗ͷʮຊ౰ʹॏཁͳ෦෼ʯͰૣ͘ਐา͍͚ͯ͠ ΔͷͰ͸ͳ͍͔ ࠓճͷऔΓ૊Έͷߟ࡯

Slide 42

Slide 42 text

©2021 Wantedly, Inc. Appendix

Slide 43

Slide 43 text

©2021 Wantedly, Inc.  1SPUPDPM#V ff FSTؔ࿈ w XBOUFEMZQCTFSJBMJ[FS  H31$ؔ࿈ w XBOUFEMZHSQDTFSWFS w XBOUFEMZHSQD@OFXSFMJD@JOUFSDFQUPS w XBOUFEMZHSQD@PQFODFOTVT@JOUFSDFQUPS w XBOUFEMZHSQD@BDDFTT@MPHHJOH@JOUFSDFQUPS w XBOUFEMZSFMPBEFS@JOUFSDFQUPS  (PPHMF$MPVE1VC4VCؔ࿈ w XBOUFEMZHDQDY ؔ࿈ϥΠϒϥϦ  ൚༻ w XBOUFEMZDPNQVUFE@NPEFM

Slide 44

Slide 44 text

©2021 Wantedly, Inc. w 5IF3BJMT%PDUSJOF %BWJE)FJOFNFJFS)BOTTPO   w IUUQTSVCZPOSBJMTPSHEPDUSJOF w IUUQTRJJUBDPNUBLBIBTIJNJUFNTE ff FFDCEBD .BTBZPTIJ5BLBIBTIJ   w 3F fl FDUJPOTPOUIF3&45BSDIJUFDUVSBMTUZMFBOEQSJODJQMFEEFTJHOPGUIFNPEFSOXFC BSDIJUFDUVSFz 3PZ'JFMEJOH   w IUUQTEMBDNPSHEPJ w .JDSPTFSWJDFT .BSUJO'PXMFS   w IUUQTNBSUJOGPXMFSDPNBSUJDMFTNJDSPTFSWJDFTIUNM w #FZPOEUIF5XFMWF'BDUPS"QQ "EBN#MPPN   w IUUQTUBO[VWNXBSFDPNDPOUFOUCMPHCFZPOEUIFUXFMWFGBDUPSBQQ w 8BOUFEMZʹ͓͚Δ(Pಋೖʹ·ͭΘΔٕज़എܠ 4PIFJ5BLFOP   w IUUQTXXXXBOUFEMZDPNDPNQBOJFTXBOUFEMZQPTU@BSUJDMFT w DPNQVUFE@NPEFMͷ঺հ*OUSPEVDJOHDPNQVUFE@NPEFM .BTBLJ)BSB   w IUUQTTQFBLFSEFDLDPNROJHIZJOUSPEVDJOHDPNQVUFENPEFM ࢀߟจݙɾؔ࿈ϦϯΫ