Slide 1

Slide 1 text

Actor Model meets the Kubernetes Cloud Native Days Tokyo 2019 ৿ຊਅҰ @shnmorimotoʢFringe81גࣜձࣾʣ

Slide 2

Slide 2 text

ࣗݾ঺հ • ໊લɿ৿ຊ ਅҰ • twitter: @shnmorimoto • github: github.com/shnmorimoto • ॴଐɿFringe81 גࣜձࣾ • ࢓ࣄɿ޿ࠂܥϓϩμΫτɾόοΫΤϯυΤϯδχΞ • ྖҬɿScala, Elm, Azure, Kubernetes

Slide 3

Slide 3 text

Fringe81 • ࿡ຊ໦ͷձࣾ • Ad Techܥ/HR TechܥͷྖҬͰ༷ʑͳαʔϏεΛల։ • Ad Tech: docomo Ad Network, GrowLio, … • HR Tech: Unipos

Slide 4

Slide 4 text

ࠓ೔࿩͢͜ͱ/࿩͞ͳ͍͜ͱ • ࿩͢͜ͱ • εςʔτϑϧͳΞϓϦέʔγϣϯʹ͍ͭͯ • εςʔτϑϧͳΞϓϦέʔγϣϯΛ࣮ݱ͢ΔͨΊͷखஈʹͭ ͍ͯʢActorModel/AkkaɾAkka Clusterʣ • Akka ClusterΛk8sͰՔಇͤ͞ΔϝϦοτ • ࿩͞ͳ͍͜ͱ • εςʔτϑϧηοτ

Slide 5

Slide 5 text

εςʔτϨεͳΞϓϦέʔγϣϯ "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS ɾ ɾ ɾ -# 4DBMF0VU*O ͷ੍໿ͳ͠ ো֐ͷ෮چ ΋؆୯ • εςʔτϨεͳΞϓϦέʔ γϣϯ • ঢ়ଶΛ࣋ͨͳ͍ • ো֐͕ى͖ͯ΋ɺ෮چ͸ָ • εέʔϦϯάͷ੍໿΋ͳ͠ • ࣮ݱͰ͖Δࣄ͸ඇৗʹݶΒ ΕΔ

Slide 6

Slide 6 text

εςʔτϨεͳΞϓϦέʔγϣϯ + DB "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS -# %# ඞཁͳঢ়ଶΛ %#ʹอଘ͢Δʂ ௨ৗɺ༗༻ͳΞϓϦέʔγϣϯΛ࡞੒͢ΔͨΊʹ͸ঢ়ଶΛ%# ౳ʹ࣋ͭඞཁ͕͋Δ ͜ΕͰશ͕ͯ໰୊ͳ͘ղܾʁ

Slide 7

Slide 7 text

εςʔτϨεͳΞϓϦέʔγϣϯ + DB "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS -# %# ঢ়ଶΛߋ৽͢ΔͨΊʹ-PDL -PDL͕ղআ͞ΕΔ·Ͱ ଴ͭඞཁ͕͋Δ Ϩεϙϯε͕஗͘ͳΔ ಉ͡ঢ়ଶΛෳ਺͔Βߋ৽͠Α͏ͱͨ͠ࡍʹɺϨεϙϯε͕஗͘ͳΔʂ ʢঢ়ଶߋ৽͕ෳࡶͳ৔߹͸%FBE-PDL΋ൃੜ͢Δʜʣ ಉҰͷঢ়ଶΛಉ࣌ʹߋ৽͢Δέʔε

Slide 8

Slide 8 text

εςʔτϨεͳΞϓϦέʔγϣϯ + KVS "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS -# ,74 ඞཁͳঢ়ଶΛ ,74ʹอଘ͢Δʂ Ϩεϙϯε͕໰୊ʹͳΔͳΒɺ,74ʹ͢Ε͹ྑ͍ʂ ͜ΕͰશ͕ͯ໰୊ͳ͘ղܾʁ ଎͍ͧ͒ʂʂʂ

Slide 9

Slide 9 text

εςʔτϨεͳΞϓϦέʔγϣϯ + KVS "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS -# ,74 ߋ৽࣌ʹ-PDL͕͔͔Βͳ͍ͷͰɺঢ়ଶͷෆ੔߹͕͓͖ΔՄೳ ੑ͕͋Δ ಉҰͷঢ়ଶΛಉ࣌ʹߋ৽͢Δέʔε ʢઌʹʣঢ়ଶΛߋ৽ʂ ʢޙʹʣঢ়ଶΛߋ৽ʂ 8*/

Slide 10

Slide 10 text

εςʔτϨεͳΞϓϦέʔγϣϯ + DB/KVS + ??? "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS -# ౰વɺղܾ͢Δखஈ͸৭ʑ͋Δ͕ɺߏ੒͸ෳࡶʹͳΒ͟ΔΛ ಘͳ͍ ಉҰͷঢ়ଶΛಉ࣌ʹߋ৽͢Δέʔε ԿΒ͔ͷ ιϦϡʔγϣ ϯʁʁʁʁ

Slide 11

Slide 11 text

ݱ୅ͷΞϓϦέʔγϣϯ΁ͷཁٻ 5IF3FBDUJWF.BOJGFTUP IUUQTXXXSFBDUJWFNBOJGFTUPPSH ΑΓ ΞϓϦέʔγϣϯ͕ σϓϩΠ͞ΕΔ৔ॴ͸ϞόΠϧ ͔ΒΫϥ΢υ·Ͱ༷ʑ ϨεϙϯελΠϜ͸ ϛϦඵ ϝϯςφϯεͷμ΢ϯλΠϜ ͸θϩɾμ΢ϯλΠϜ ѻ͏σʔλ͸೔ʑ૿Ճ ͔͠΋ɺݱ୅ͷΞϓϦέʔγϣϯ͸ΑΓෳࡶɺ଎͘ɺམͪͳ ͍͜ͱΛཁٻ͞ΕΔ

Slide 12

Slide 12 text

εςʔτϑϧͳΞϓϦέʔγϣϯ "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS -# ֎෦ʹ͍࣋ͬͯͨঢ়ଶΛΞϓϦέʔγϣϯଆʹ͍࣋ͬͯ͘͜ ͱͰγϯϓϧͳߏ੒ʹͰ͖ΔͷͰ͸ʁ ঢ়ଶ ঢ়ଶ ঢ়ଶ ঢ়ଶ ঢ়ଶ

Slide 13

Slide 13 text

εςʔτϑϧͳΞϓϦέʔγϣϯ "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS -# ֎෦ʹ͍࣋ͬͯͨঢ়ଶΛΞϓϦέʔγϣϯଆʹ͍࣋ͬͯ͘͜ ͱͰγϯϓϧͳߏ੒ʹͰ͖ΔͷͰ͸ʁ ঢ়ଶ ঢ়ଶ ঢ়ଶ ঢ়ଶ ঢ়ଶΛߋ৽ʂ

Slide 14

Slide 14 text

εςʔτϑϧͳΞϓϦέʔγϣϯ "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS -# ঢ়ଶ ঢ়ଶ ঢ়ଶ ঢ়ଶ • εςʔτϑϧͳΞϓϦέʔγϣϯ • ঢ়ଶΛ࣋ͭ • ঢ়ଶͷߋ৽͕γϯϓϧʂ • ঢ়ଶΛΞϓϦέʔγϣϯʹ࣋ͭʹ ͸ʁʁʁ • ঢ়ଶΛߋ৽͢ΔͨΊʹద੾ʹScaling/ Balancing͢Δํ๏͸ʁʁʁ • ΞϓϦέʔγϣϯΛ࠶ىಈͨ͠Βঢ় ଶ͕ফ͑ͳ͍ʁʁʁ

Slide 15

Slide 15 text

ঢ়ଶΛΞϓϦέʔγϣϯʹ࣋ͭʹ͸ʁʁʁ

Slide 16

Slide 16 text

Actor Model • ฒߦγεςϜͷϞσϧͷҰछ • ActorʢΞΫλʔʣͱ͍͏֓೦Λಋೖ͠ɺฒߦγεςϜΛ؆қʹѻ͏͜ͱ͕ Ͱ͖Δʢޙड़ʣ • Erlang͕Actor ModelΛ࠾༻͍ͯ͠Δ • Java/ScalaͰ΋Akkaͱ͍͏πʔϧΩοτΛར༻͢Δ͜ͱͰ࣮ݱͰ͖Δ ΞΫλʔϞσϧʢӳBDUPSNPEFMʣͱ͸ɺ೥ɺΧʔϧɾώϡʔΠοτɺ1FUFS #JTIPQɺ3JDIBSE4UFJHFS͕ൃදͨ͠ฒߦܭࢉͷ਺ֶతϞσϧͷҰछɻ ग़యϑϦʔඦՊࣄయʰ΢ΟΩϖσΟΞʢ8JLJQFEJBʣʱ ຊηογϣϯͰ͸"LLBΛྫʹऔΓɺ"DUPS.PEFMʹ͍ͭͯઆ໌͠·͢

Slide 17

Slide 17 text

• Java/Scala޲͚ʹActor ModelΛ࣮ݱ͢ΔπʔϧΩοτ • LightbendࣾʹΑͬͯ։ൃ͞Εɺݱࡏ͸ΦʔϓϯιʔεͰ։ൃ͕ଓ͚ΒΕ͍ͯΔ • ԼهΛ؆қʹ࣮ݱͰ͖Δ • Actor Model • SupervisorʹΑΔো֐ִ཭ɾ෮چʹ༏ΕͨγεςϜͷߏங • ΫϥελϦϯά • ετϦʔϜॲཧ • etc … Akka - ֓ཁ

Slide 18

Slide 18 text

"DUPS Akka Actor "DUPS "DUPS "DUPS "DUPS "DUPS "DUPS "DUPS "DUPS +7.

Slide 19

Slide 19 text

+7. "DUPS Akka Actor "DUPS "DUPS "DUPS "DUPS "DUPS "DUPS "DUPS "DUPS w ঢ়ଶΛ࣋ͭ w ͦΕͧΕͷ"DUPSͰϩδοΫΛ࣋ͭ w ̍ͭ̍ͭͷ"DUPS͕ϓϩηεͷΑ͏ʹৼΔ෣͏ FY $POGFSFODF/BNF$MPVE/BUJWF %BZT5PLZP %BUF FY $POGFSFODF/BNF$MPVE/BUJWF %BZT'VLVPLB %BUF ෳ਺ͷ"DUPS͕Ծ૝ϓϩηεͷΑ͏ʹՔಇ͢Δ

Slide 20

Slide 20 text

+7. "DUPS Akka Actor "DUPS "DUPS "DUPS "DUPS "DUPS "DUPS "DUPS "DUPS $POGFSFODF໊͸ʁ $MPVE/BUJWF %BZT5PLZP ͦΕͧΕͷ"DUPSؒ͸ϝοηʔδΛ௨ͯ͠ඇಉظʹॲཧΛߦ͏

Slide 21

Slide 21 text

"DUPS Akka Actor "DUPS "DUPS "DUPS "DUPS "DUPS "DUPS "DUPS "DUPS ɾݸʑͷ"DUPS͸ΞυϨεΛ͓࣋ͬͯΓɺͦͷΞυϨεѼʹϝοηʔδΛૹ৴͢Δɻ ɾϝʔϧϘοΫεͷΑ͏ͳΩϡʔΛ͓࣋ͬͯΓɺಧ͍ͨϝοηʔδʹ͍ͭͯॱ࣍ॲཧΛߦ͏ +7.

Slide 22

Slide 22 text

"DUPS Akka Actor - Supervisionʢิʣ "DUPS "DUPS "DUPS "DUPS ਌ ࢠ ଙ • Actor͸ࣗ਎ͷࢠͱͳ ΔActorΛੜ੒Ͱ͖Δ • ActorؒͰͷ਌ࢠؔ ܎ɺҰछͷπϦʔߏ ଄Λߏ੒Ͱ͖Δ

Slide 23

Slide 23 text

"DUPS "DUPS "DUPS "DUPS "DUPS ਌ ࢠ ଙ • ਌Actor͸ࢠActorͷ؂ ಜऀʢSupervisorʣͱ ͳΔ • ࢠActorʹ໰୊͕ൃੜ ͨ͠৔߹ʹఀࢭ΍࠶ى ಈ౳ͷॲཧΛߦ͏ ؂ࢹ ؂ࢹ Akka Actor - Supervisionʢิʣ

Slide 24

Slide 24 text

"DUPS "DUPS "DUPS "DUPS "DUPS ਌ ࢠ ଙ • ਌Actor͸ࢠActorʹ໰୊͕ൃੜ͢ ΔͱઓུʹԊͬͯରԠ • ఀࢭ • ࠶ىಈʢActorΛ࠶ੜ੒͢Δʣ • ΤεΧϨʔγϣϯ ໰୊͕ൃੜ "DUPS͕ઓུʹԊͬͯɺରԠ Akka Actor - Supervisionʢิʣ

Slide 25

Slide 25 text

• ActorΛར༻͢Δ͜ͱͰɺΞϓϦέʔγϣϯଆͰঢ়ଶΛ΋ͭ͜ͱ͕Ͱ͖Δ • Actor͸ঢ়ଶ΍ϩδοΫΛ࣋ͭ • Actor͸ͦΕͧΕಠཱ͍ͯ͠Δ • Actorؒͷ௨৴͸ϝοηʔδϯάΛ௨ͯ͠ѻ͏ • Actor͸SupervisionͷػೳΛ͓࣋ͬͯΓɺ؆୯ʹΞϓϦέʔγϣϯଆͰো֐ͷ ִ཭ɾ෮چΛ͢Δ͜ͱ͕Ͱ͖Δ Akka Actor - ·ͱΊ

Slide 26

Slide 26 text

ঢ়ଶΛߋ৽͢ΔͨΊʹద੾ʹScaling/ Balancing͢Δํ๏͸ʁʁʁ

Slide 27

Slide 27 text

ActorͷScaling/Balancing /PEF /PEF /PEF -# ঢ়ଶ"DUPS ঢ়ଶ"DUPS ঢ়ଶ"DUPS ঢ়ଶ"DUPS ˞࣮ࡍʹ͸΋ͬͱଟ͘ͷ"DUPS͕ Քಇ͢Δ͜ͱʹͳΔ /PEFؒʹ౉ͬͯɺ"DUPSΛల ։͢Δʹ͸ʁ ͲͷΑ͏ʹɺͲͷ/PEFʹͲͷ ঢ়ଶ͕͋Δ͔Λ஌Δ͜ͱ͕Ͱ͖ Δʁ

Slide 28

Slide 28 text

Akka Cluster "LLBͰ͸$MVTUFSΛߏ੒͢Δ͜ͱ͕Ͱ͖Δ +7. +7. +7. +7. +7.

Slide 29

Slide 29 text

Akka Cluster +7. +7. +7. +7. +7. ϩʔΧϧͰͷ"DUPSؒͷϝοηʔδύογϯά͸ͦͷ··Ͱ

Slide 30

Slide 30 text

Akka Cluster +7. +7. +7. +7. +7. ϊʔυΛ·͍ͨͩ"DUPSؒͷϝοηʔδϯά͸ ϩʔΧϧͱશ͘ಉ͡Α͏ʹѻ͏͜ͱ͕Ͱ͖Δ

Slide 31

Slide 31 text

Akka Cluster ϩʔΧϧͱಉ༷ʹϊʔυΛ·͍ͨͩ"DUPSؒͷ؂ࢹ΋Մೳ +7. +7. +7. +7. +7. ਌ ࢠ ؂ࢹ

Slide 32

Slide 32 text

ͦΕͧΕຖʹϢχʔΫͳࣝผࢠ Λ"DUPSΛ&OUJUZͱݺͿ Akka Cluster Sharding +7. +7. +7. +7. 4IBSE 4IBSE 4IBSE 4IBSE 4IBSE 4IBSE ୯ମͷϊʔυ্ͷ"DUPS $MVTUFS্Ͱ4IBSEJOH͞Εͨ"DUPS &OUJUZΛ4IBSEʹ෼͚ɺ4IBSEΛ ෳ਺ͷϊʔυʹ෼ࢄͤ͞Δ͜ͱ͕Ͱ ͖Δ

Slide 33

Slide 33 text

Akka Cluster Sharding +7. +7. +7. +7. 4IBSE 4IBSE 4IBSE 4IBSE 4IBSE 4IBSE ୯ମͷϊʔυ্ͷ"DUPS $MVTUFS্Ͱ4IBSEJOH͞Εͨ"DUPS ಉҰͷࣝผࢠΛ΋ͭ&OUJUZ͸ $MVTUFSʹҰՕॴ͔͠ଘࡏ͠ͳ͍͜ ͱΛอূ 4IBSEʹ9999ͱ͍͏ࣝผࢠ Λ࣋ͭ&OUJUZ͕͍ͨΒɺଞͷ 4IBSEʹ͸ಉ͡&OUJUZ͸ଘࡏ͠ ͳ͍

Slide 34

Slide 34 text

Akka Cluster Sharding +7. +7. +7. +7. 4IBSE 4IBSE 4IBSE 4IBSE 4IBSE 4IBSE ୯ମͷϊʔυ্ͷ"DUPS $MVTUFS্Ͱ4IBSEJOH͞Εͨ"DUPS Ͳ͜ͷ4IBSEʹԿͷ&OUJUZ͕ଘࡏ ͢Δͷ͔΋؅ཧ͞Ε͍ͯΔ 4IBSEʹ9999ͱ͍͏&OUJUZ ͕ଘࡏ͢Δ

Slide 35

Slide 35 text

Akka Cluster - Clusterͷߏஙʢิʣ $MVTUFSΛߏங͢Δʹ͸ɺ$MVTUFSͷى఺ɺϊʔυͷ+PJO΍ -FBWFΛ؅ཧ͢Δ4FFEϊʔυ͕ඞཁ 4FFE 4FFE +7. +7. +7. +7.

Slide 36

Slide 36 text

$MVTUFSʹ৽نϊʔυΛ௥Ճ͢Δ৔߹ɺ ·ͣ͸4FFEϊʔυͱ௨৴͢Δඞཁ͕͋Δ 4FFE 4FFE ৽نϊʔυ +PJO Akka Cluster - Clusterͷߏஙʢิʣ +7. +7. +7. +7. +7.

Slide 37

Slide 37 text

• ϊʔυؒͰClusterΛߏங͢Δ͜ͱ͕Ͱ͖Δ • ͜Ε·Ͱͷػೳ͸ϩʔΧϧͱಉ͡Α͏ʹѻ͏͜ͱ͕Ͱ͖ΔʢTransparencyʣ • ϝοηʔδύογϯά • Supervision(؂ಜ) • Akka Cluster (Sharding)Λར༻͢Δ͜ͱͰ • ActorͷҰҙੑΛอূɿCluster಺ͰEntity͕Ұҙʹଘࡏ͢Δ͜ͱΛอূ͢Δ • ActorͷҐஔΛ؅ཧɿCluster಺ͰEntityͷҐஔΛ؅ཧ͍ͯ͠ΔͷͰɺͲͷshardʹ͍Δͷ͔͕෼͔Δ • ϊʔυ͕௥Ճ͞ΕΔͱγϟʔυΛࣗಈతʹϦόϥϯε͢Δ͜ͱ͕Ͱ͖Δ • ৽نʹϊʔυΛ௥Ճ͢Δʹ͸ɺSeedϊʔυͷ৘ใΛ஌͍ͬͯΔඞཁ͕͋Δʢͨͩ͠ɺAkka Clusterʹ͸ Service Discoveryͷػೳ͸ͳ͍ʣ Akka Cluster - ·ͱΊ

Slide 38

Slide 38 text

ΞϓϦέʔγϣϯΛ࠶ىಈͨ͠Βঢ়ଶ͕ফ ͑ͳ͍ʁʁʁ

Slide 39

Slide 39 text

/PEF /PEF /PEF ঢ়ଶ"DUPS ঢ়ଶ"DUPS ঢ়ଶ"DUPS ঢ়ଶ"DUPS "LLB$MVTUFS "DUPSͷঢ়ଶ͕ফ͑ͳ͍ʁ ϊʔυʹো֐͕ ൃੜʂ ϊʔυʹো֐͕ى͖ͨΓɺ"QQMJDBUJPO͕མͪͨΒ"DUPSͷঢ় ଶ͸ফ͑ͯ͠·͏ɻͨͩ͠"DUPSΛӬଓԽ͢Δํ๏͕༻ҙ͞Ε ͍ͯΔɻ ActorͷӬଓԽ

Slide 40

Slide 40 text

"DUPS ActorͷӬଓԽ %#,74 ͑ͬɺ݁ہ%#,74ར༻͢Δͷʁʁʁ ӬଓԽ͢ΔͨΊʹɺ%#,74Λར༻͢Δ ঢ়ଶ $POGFSFODF /BNF$MPVE /BUJWF%BZT 5PLZP 5JDLFU

Slide 41

Slide 41 text

&WFOU4PVSDJOH͸"LLB 1FSTJTUFODFͷػೳͰ࣮ݱՄೳ "DUPS ActorͷӬଓԽ %#,74 %#,74ʹอଘ͢Δͷ͸ɺঢ়ଶͰ͸ͳ͘ɺΠϕϯτΛ อଘ͢Δʢ&WFOU4PVSDJOHʣ อଘ͢Δͷ͸ঢ়ଶΛมߋͨ͠Πϕϯτ ঢ়ଶ $POGFSFODF /BNF$MPVE /BUJWF%BZT 5PLZP 5JDLFU νέοτΛຕొ࿥ νέοτ͕ຕചΕͨ νέοτ͕ຕചΕͨ ɾ ɾ ɾ

Slide 42

Slide 42 text

"DUPS ActorͷӬଓԽ %#,74 ো֐࣌ʹ͸ΠϕϯτΛશͯಡΈࠐΈɺঢ়ଶΛ෮ݩ͢Δ ঢ়ଶ $POGFSFODF /BNF$MPVE /BUJWF%BZT 5PLZP 5JDLFU νέοτΛຕొ࿥ νέοτ͕ຕചΕͨ νέοτ͕ຕചΕͨ ɾ ɾ ɾ Πϕϯτ͔Βঢ়ଶΛ෮ݩ͢Δ

Slide 43

Slide 43 text

εςʔτϨεͳΞϓϦέʔγϣϯ + DBʢ࠶ܝʣ "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS "QQMJDBUJPO 4FSWFS -# %# ঢ়ଶΛߋ৽͢ΔͨΊʹ-PDL -PDL͕ղআ͞ΕΔ·Ͱ ଴ͭඞཁ͕͋Δ Ϩεϙϯε͕஗͘ͳΔ ಉ͡ঢ়ଶΛෳ਺͔Βߋ৽͠Α͏ͱͨ͠ࡍʹɺϨεϙϯε͕஗͘ͳΔʂ ʢঢ়ଶߋ৽͕ෳࡶͳ৔߹͸%FBE-PDL΋ൃੜ͢Δʜʣ ಉҰͷঢ়ଶΛಉ࣌ʹߋ৽͢Δέʔε

Slide 44

Slide 44 text

"DUPS ActorͷӬଓԽ %#,74 ɾঢ়ଶͷߋ৽͸ϝϞϦ্Ͱ׬݁ ɾঢ়ଶΛߋ৽͢Δͷ͸ҰՕॴʢ&OUJUZʣͷΈͱอূ͞Ε͍ͯΔ ɾΠϕϯτΛอଘ͢Δ͚ͩͳͷͰɺBEE͚ͩͰྑ͍ νέοτΛຕొ࿥ νέοτ͕ຕചΕͨ νέοτ͕ຕചΕͨ ɾ ɾ ɾ νέοτ͕ຕചΕͨ ϩοΫ΍ഉଞ੍ޚ͕ඞཁͳ͍ͷͰɺϨεϙϯε͕଎͍ ߋ৽

Slide 45

Slide 45 text

• Actorͷঢ়ଶΛอଘ͢ΔͷͰ͸ͳ͘ɺঢ়ଶΛมߋ͢ΔΠϕϯτΛอଘ͢Δ ʢEvent Sourcingʣ • ঢ়ଶͷߋ৽͸ϝϞϦ্Ͱ׬݁ • ϩοΫ΍ഉଞ੍ޚ͕ඞཁͳ͍ • ϨεϙϯεΛ଎͘͢Δ͜ͱ͕Ͱ͖Δ • ActorͰEventSourcing͢Δʹ͸Akka PersistenceΛར༻Ͱ͖Δ ActorͷӬଓԽ - ·ͱΊ

Slide 46

Slide 46 text

εςʔτϑϧͳΞϓϦέʔγϣϯ

Slide 47

Slide 47 text

/PEF /PEF /PEF ঢ়ଶ"DUPS ঢ়ଶ"DUPS ঢ়ଶ"DUPS ঢ়ଶ"DUPS "LLB$MVTUFS %#,74 εςʔτϑϧͳΞϓϦέʔγϣϯ "LLB1FSTJTUFODF &WFOU4PVSDJOH ঢ়ଶΛߋ৽ʂ "DUPSͷঢ়ଶΛ ߋ৽͢Δϝοηʔδ "LLB"DUPS"LLB$MVTUFS 4IBSEJOH "LLB 1FSTJTUFODFͰεςʔτϑϧͳΞϓϦέʔγϣϯΛߏ੒Ͱ͖Δ

Slide 48

Slide 48 text

• ֎෦σʔλετΞʢDB/KVSʣʹอଘ͍ͯͨ͠ঢ়ଶΛΞϓϦέʔγϣϯ಺ ʹอ࣋͢Δ • ঢ়ଶͷߋ৽͕ϝϞϦ্Ͱ׬݁͢ΔͨΊʹɺଈԠੑ͕ߴ·Δ • ঢ়ଶͷߋ৽ΛҰՕॴͷΈʹอূ͢Δ͜ͱͰɺෆ੔߹Λ๷͙͜ͱ͕Ͱ͖Δ • ActorͷӬଓԽʹ͸Event SourcingΛ༻͍Δ • σʔλͷ௥ՃͷΈͳͷͰɺlock΍ഉଞ੍ޚ͕ඞཁͳ͍ εςʔτϑϧͳΞϓϦέʔγϣϯ

Slide 49

Slide 49 text

• ϊʔυͷεέʔϧΞ΢τ/Πϯ • ϊʔυো֐࣌ͷࣗಈ෮چ • Clusterʹ৽نϊʔυΛ௥Ճ͢ΔࡍʹඞཁͱͳΔService Discovery Akka ClusterͷΈͰରԠͰ͖ͳ͍͜ͱ ,VCFSOFUFTͱ૊Έ߹ΘͤΔ͜ͱͰղܾ

Slide 50

Slide 50 text

Akka Cluster on Kubernetes

Slide 51

Slide 51 text

7. 7. 1PE +7. 1PE +7. 1PE +7. 1PE +7. Akka Cluster on k8s - ֓ཁ

Slide 52

Slide 52 text

7. 7. 1PE +7. 1PE +7. 1PE +7. 1PE +7. ͭͷ1PEͭͷ"LLB$MVTUFSͷϊʔυͱͳΔ Akka Cluster on k8s - ֓ཁ

Slide 53

Slide 53 text

7. 7. 1PE +7. 1PE +7. 1PE +7. 1PE +7. "LLB$MVTUFS ,VCFSOFUFT ΞϓϦέʔγϣϯଆͷΫϥελϦϯά͸"LLB$MVTUFSɺ ΠϯϑϥଆͷΫϥελϦϯά͸,VCFSOFUFTͰ؅ཧ Akka Cluster on k8s - ֓ཁ

Slide 54

Slide 54 text

7. 7. 1PE +7. 1PE +7. 1PE +7. 1PE Πϯϑϥଆ͸)1"Ͱ1PEͷεέʔϦϯά Akka Cluster on k8s - εέʔϦϯά

Slide 55

Slide 55 text

7. 7. 1PE +7. 1PE +7. 1PE +7. 1PE +7. ΞϓϦέʔγϣϯଆ͸"DUPS$MVTUFSͰ"DUPSͷεέʔϦϯά Akka Cluster on k8s - εέʔϦϯά

Slide 56

Slide 56 text

7. 7. 1PE +7. 1PE +7. 1PE +7. 1PE +7. ো֐ ΦʔτώʔϦϯά 1PEଆͷো֐͸1PEͷΦʔτώʔϦϯάͰରԠ Akka Cluster on k8s - ো֐෮چ

Slide 57

Slide 57 text

7. 7. 1PE +7. 1PE +7. 1PE +7. 1PE +7. "DUPSଆͷ$SBTI͸"DUPSͷ4VQFSWJTJPOͰରԠ $SBTI 4VQFSWJTJPOͰରԠ Akka Cluster on k8s - ো֐෮چ

Slide 58

Slide 58 text

+7. +7. +7. 1PE 1PE 1PE "LLB$MVTUFS Akka Cluster On k8s - Node௥Ճ "LLB$MVTUFSʹ͸,VCFSOFUFTͱͷ࿈ܞػೳ͕༻ҙ͞Ε͍ͯΔ +7. 1PE ৽نϊʔυ LT"1*

Slide 59

Slide 59 text

+7. +7. +7. 1PE 1PE 1PE "LLB$MVTUFS Akka Cluster On k8s - Node௥Ճ ,VCFSOFUFTͷ"1*ʹ໰͍߹ΘͤΔࣄͰɺ $MVTUFS಺ͷ1PEͷѼઌΛ஌Δ͜ͱ͕Ͱ͖Δ +7. 1PE ৽نϊʔυ LT"1* $MVTUFSͷ1PEͷѼઌΛ໰͍߹ Θͤ

Slide 60

Slide 60 text

+7. +7. +7. 1PE 1PE 1PE "LLB$MVTUFS Akka Cluster On k8s - Node௥Ճ $MVTUFS಺ͷ1PEʹ޲͚ͯɺ+PJOϝοηʔδΛૹΔ +7. 1PE ৽نϊʔυ LT"1* ໰͍߹Θͤͨ݁Ռ͔Βϊʔυ΁ +PJOϝοηʔδΛ͓͘Δ

Slide 61

Slide 61 text

+7. +7. +7. 1PE 1PE 1PE "LLB$MVTUFS Akka Cluster On k8s - Node௥Ճ "LLB$MVTUFSʹ͸ͳ͔ͬͨɺ4FSWJDF%JTDPWFSͷػೳΛ LT͕ิ׬ͯ͘͠ΕΔ +7. 1PE ৽نϊʔυ LT"1*

Slide 62

Slide 62 text

• Akka ClusterͷΈ͚ͩͰ͸ରԠͰ͖ͳ͔ͬͨ఺ΛKubernetes͕ Χόʔͯ͘͠ΕΔ • Akka Cluster͔ΒݟͨNodeͷScaleOut/In • Akka Cluster͔Βݟͨϊʔυͷো֐෮چ • Akka Cluster͔ΒݟͨଞϊʔυͷService Discovery • PodʹKubernetes API΁ͷΞΫηεݖݶΛ෇༩͢Δඞཁ͕͋Δ Akka Cluster On k8s - ·ͱΊ

Slide 63

Slide 63 text

·ͱΊ

Slide 64

Slide 64 text

• ʢຊདྷ֎෦DV/KVSʹ͍࣋ͬͯΔʣঢ়ଶΛΞϓϦέʔγϣϯʹ͍࣋ͬͯΔͷ͕ɺεςʔτϑϧ ͳΞϓϦέʔγϣϯ • εςʔτϑϧͳΞϓϦέʔγϣϯ͸ଈԠੑ͕ߴ͍ • εςʔτϑϧͳΞϓϦέʔγϣϯΛߏ੒͢ΔͨΊʹActor ModelʢAkkaʣ͕͋Δ • Akka Actor + Akka ClusterʢShardingʣ+ Akka PersistenceͰεςʔτϑϧͳΞϓϦέʔ γϣϯΛ؆୯ʹߏ੒Ͱ͖Δ • ActorͷӬଓԽʹ͸Event SourcingΛར༻͢Δ • ΞϓϦέʔγϣϯ૚ʹActor ModelɺΠϯϑϥ૚ʹKubernetesΛ૊Έ߹ΘͤΔ͜ͱͰɺ Actor Model͚ͩͰ͸ରԠͰ͖ͳ͔ͬͨ͜ͱΛิ׬͢Δ͜ͱ͕Ͱ͖Δ ·ͱΊ

Slide 65

Slide 65 text

• Akkaͷଞͷศརπʔϧ • Akka HttpɺAkka Streamsɺetc… • NWো֐࣌౳ͷClusterͷSpritBrain • CQRS + ES ࠓ೔࿩͞ͳ͔ͬͨ͜ͱ

Slide 66

Slide 66 text

• Using Akka Cluster for a payment service - Scala Matsuri 2019 • https://speakerdeck.com/negokaz/using-akka-cluster-for-a-payment-service • How to build an Event-Sourcing system using Akka with EKS - Scala Matsuri 2019 • https://speakerdeck.com/j5ik2o/how-to-build-an-event-sourcing-system-using-akka-with-eks • Managing an Akka Cluster on Kubernetes - Scala Days LAUSANNE 2019 • https://portal.klewel.com/watch/webcast/scala-days-2019/talk/23/ • White Paper: The Benefits Of Using Akka With Kubernetes • https://www.lightbend.com/blog/new-white-paper-the-benefits-of-using-akka-with-kubernetes ࢀߟ