ぼくがかんがえたさいきょうの SoR/SoE あーきてくちゃ #kichijojipm

ぼくがかんがえたさいきょうの SoR/SoE あーきてくちゃ #kichijojipm

0b40b09ee30366ddfe68070d94d7ee3f?s=128

Akira Suenami

May 17, 2019
Tweet

Transcript

  1. 2.

    ࣗݾ঺հ • ຤ฒ ߊʢ͑͢ͳΈ ͖͋Βʣ @a_suenami • ޷͖ͳ΋ͷ͸ RDB ͱ͔ΦϒδΣΫτࢦ޲ͱ͔

    TDD ͱ͔ɻ • ʮԿ΍ͬͯΔΜͰ͔͢ʁʯͬͯΑ͘ฉ͔Ε·͕͢ɺ։ൃͷϚωδϝ ϯτ΍ͬͯͨΓɺٕज़ސ໰తͳ͜ͱ΍ͬͯͨΓɺࣗ෼ࣗ਎Ͱ΋Rails ΞϓϦέʔγϣϯॻ͍ͨΓReactΞϓϦέʔγϣϯॻ͍ͨΓͯͯ͠ɺ ΋͏໘౗ͳͷͰΑ͘ʮແ৬Ͱ͢ʯͬͯݴͬͯ·͕͢ҰԠ࢓ࣄͯ͠· ͢ɻ
  2. 5.

    SoRͱSoE • SoR: System of Record • ͦͷ໊ͷ௨Γɺʮه࿥ʯͷͨΊͷγεςϜɻ • ೖྗͷࣄલνΣοΫͷݎ࿚ੑɺσʔλ੔߹ੑͷ୲อͳͲ͕ٻΊΒ

    ΕΔɻ • SoE: System of Engagement • ར༻ऀͱͷؔ܎Λߏங͢ΔͨΊͷγεςϜɻ • ࠓͲ͖ͷݴ༿Λ࢖͏ͱΑ͍ UX Λఏڙ͢ΔͨΊͷγεςϜɺͱݴ ͍׵͑ͯ΋Α͍ɻ
  3. 6.

    SoRͱSoE • τϥσΟγϣφϧͳιϑτ΢ΣΞ։ൃʹର͢Δ஌ݟ΍ύλʔϯͳͲ ʢPoEAAͳͲʣ͸ SoR ͷͨΊͷ΋ͷͰ͋Δέʔε͕ଟ͍ɻ • ٯʹ SoE ʹର͢Δઃܭ͸ݱࡏਐߦܥͰ֤͕ࣾ޻෉ɾڞ༗͍ͯ͠Δͱ

    ײ͍ͯͯ͡ɺͨͱ͑͹֤Ϋϥ΢υϕϯμʔ͕ެ։͍ͯ͠ΔΫϥ΢υ σβΠϯύλʔϯͳͲ͸ʢSoR ޲͚ͷ΋ͷ΋͋Δ͕ʣSoE Λࢧ͑Δ ͨΊ΋ͷͰ͋Δ͜ͱ΋ଟ͍ɻ • ͢΂ͯͷγεςϜ͕໌֬ʹͲͪΒ͔ʹଐ͢ΔΘ͚Ͱ͸ͳ͘ɺSoR త ଆ໘ͱ SoE తଆ໘Λ͕࣋ͭɺ͔ͳΓڧΊʹͲͪΒ͔ͷੑ࣭Λ࣋ͭ͜ ͱ΋গͳ͘ͳ͘ɺͦ͏͍ͬͨ৔߹ʹઃܭ൑அΛؒҧ͑Δͱͦͷޙͷ ϝϯςφϯεʹଟେͳӨڹΛ༩͑ΔͷͰ஫ҙ͕ඞཁɻ
  4. 8.

    υϝΠϯͱ͸ʁ • ΤϦοΫɾΤϰΝϯεͷ DDD ຊ ʹॻ͔Ε͍ͯΔઃܭύλʔϯ͸ SoR తଆ໘͕ڧ͗͢Δͱײ͡Δɻ • Ͱ΋ɺI/O

    ʹ͸ I/O ͷɺϓϨθϯ ςʔγϣϯʹ͸ϓϨθϯςʔγϣ ϯͷυϝΠϯ͕͋ΔͷͰ͸ͳ͍͔ʁ • γεςϜͷ໨త͕ҧ͏ͷͰ͋Ε͹ɺ ͦΕͧΕͷυϝΠϯʹۦಈ͞ΕΔ ΄͏͕͍͍͸ͣɻ
  5. 9.

    SoR / SoE ରൺ SoR SoE جຊతͳઃܭ؍఺ σʔλ੔߹ੑ ॊೈੑɺੑೳ σʔλετΞ

    τϥϯβΫγϣφϧͳDB ଟ͘ͷ৔߹ɺRDB εέʔϥϏϦςΟ͕͋Δߴ଎ͳσʔ λετΞ υΩϡϝϯτࢦ޲DBɺKVSɺશจݕ ࡧΠϯσοΫεͳͲ ϦϦʔεαΠΫϧ SoEͱൺ΂Δͱ૬ରతʹ௕͍ʢॾઆ͋ Δ͔΋ʣ ߴ଎ͳϦϦʔεαΠΫϧ͕ٻΊΒΕΔ ඼࣭ධՁ τϥσΟγϣφϧͳιϑτ΢ΣΞςε ςΟϯάख๏Λద༻͠΍͍͢ τϥσΟγϣφϧͳख๏ʹՃ͑ɺϢ ʔβʔςετɺϢʔβʔΠϯλϏϡ ʔɺA/BςετͳͲ ΧφϦΞϦϦʔε΋࣮τϥϑΟοΫ Λར༻ͨ͠ςετͱଊ͑Δ͜ͱ͕Ͱ ͖Δ σʔλ੔߹ੑ τϥϯβΫγϣϯ੔߹ੑ͕ඞਢ ݁Ռ੔߹ੑͰΑ͍ཁ݅΋ଟ͍ ཁ͢Δʹʁ ݎ࿚ͳMutation ॊೈͳQuery ઃܭΛۦಈ͢Δʢ͠΍͍͢ʣ΋ͷ υϝΠϯϞσϧɺ֓೦σʔλϞσϧ UIʢϏδϡΞϧσβΠϯɺϢʔβΠϯ λϥΫγϣϯʣɺΩϟογϡ
  6. 12.

    ۩ମతΞʔΩςΫνϟ • SoR • ҰൠతͳΞϓϦέʔγϣϯ + RDBͷߏ੒ • ΤϦοΫɾΤϰΝϯεͷ DDD

    ຊ΍ͷઃܭ౳͕ग़ͯ͘Δ͜ͱ͕ଟ͍ɻ • SoE • SPA • BFF + Ωϟογϡ༻σʔλετΞʢϚςϦΞϥΠζυɾϏϡʔ, Redis, DynamoDB, ElasticSearchʣ + CDN • ʮCDNʹΩϟογϡͤ͞Δ୯ҐͰʯΤϯυϙΠϯτΛઃܭ͢Δɻ
  7. 21.

    SoE Ͱͷάϩʔόϧͳ੔߹ੑͷར༻ • ϦΫΤετՄೳ͔Ͳ͏͔ΛԠ͑ΔʢՄೳͳ৔߹ɺϩοΫΛͱΔɺ΋͘͠͸༧໿͢ΔʣΤϯυϙΠϯτΛ SoR ʹ࣮૷͠ɺ͜ΕΒ͸ඇಉظͳ݁Ռ੔߹ੑͰ͸ͳ͘ಉظతʹ SoE ʹ݁ՌΛฦ͢Α͏ʹ͢Δɻ • ܾࡁγεςϜͷ༩৴ͱܾࡁ֬ఆͷؔ܎ʹ͍ۙɻ

    • ϦΫΤετՄ൱ͷ֬ೝͱ࣮ࡍͷ࣮ߦΛ෼͚Δ͜ͱͰɺੑೳ΍଱ো֐ੑͷ໘Ͱ඼࣭ͷߴ͍γεςϜΛߏ ங͢Δ͜ͱ͕Ͱ͖Δɻ • BFF ͕͋Δ৔߹ɺͦͷޙΖʹ͋Δ SoR ʹର͢ΔϦόʔεϓϩΩγͱͯ͠ͷΈৼΔ෣͏͜ͱʹͳΔɻ
  8. 22.

    ·ͱΊ • γεςϜͷઃܭΛߟ͑Δͱ͖ɺͦΕ͕ SoR తଆ໘͕ڧ͍γεςϜͳ ͷ͔ɺSoE తଆ໘͕ڧ͍γεςϜͳͷ͔Λҙࣝ͢Δͱ͍͍͜ͱ͕͋ Δ͔΋͠Ε·ͤΜɻ • SoE

    తͳઃܭϊ΢ϋ΢͸͸·ͩ·ͩੈͷதʹগͳ͍ͱࢥ͍ͬͯΔͷ ͰΈͳ͞ΜͲΜͲΜൃ৴͖ͯ͠·͠ΐ͏ɻ • SoR తͳઃܭ΋Ϋϥ΢υϕϯμʔ౳ʑʹΑͬͯมԽ͍͖͍ͯͯ͠Δ ͜ͱ͕͋Δͱࢥ͏ͷͰɺͲΜͲΜൃ৴ʢ͈́ • άϩʔόϧͳ੔߹ੑͱϢʔβϩʔΧϧͳ੔߹ੑ͸ҧ͏Αʂ