Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ぼくがかんがえたさいきょうの SoR/SoE あーきてくちゃ #kichijojipm
Search
Akira Suenami
May 17, 2019
Technology
6.6k
13
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ぼくがかんがえたさいきょうの SoR/SoE あーきてくちゃ #kichijojipm
Akira Suenami
May 17, 2019
More Decks by Akira Suenami
See All by Akira Suenami
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
a_suenami
9
2.7k
オブジェクト指向考古学 〜人類は再びDCIの夢を見るか〜
a_suenami
5
3.6k
トランザクションスクリプトはどこから来たのか トランザクションスクリプトは何者か トランザクションスクリプトはどこへ行くのか #sekkeinight
a_suenami
14
7.1k
値と属性の話
a_suenami
0
330
ドメインモデラーにとって受託開発であることは制約なのか?
a_suenami
1
1.6k
異なるモデリングパラダイムから見るモデリングの勘所 #ooc_2020
a_suenami
2
3.5k
マルチパラダイムモデリング 〜異なるモデリングパラダイムから見るモデリングの勘所〜 #PHPerKaigi
a_suenami
0
4.1k
“ユーザーファースト”の功罪 〜分析と実験によるアーキテクチャ設計〜 #bpstudy
a_suenami
4
1.5k
ドメインモデルのつくり方 #5000dai
a_suenami
16
5.1k
Other Decks in Technology
See All in Technology
Genieを崇めよ
kameitomohiro
0
160
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
150
映像変換サーバーなしで端末内でHLSを生成してライブ配信
hikarusato
0
130
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
2
550
あるけみー式LTスライド作成術
alchemy1115
2
220
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
430
Railsのように考える: See through the Master
snoozer05
PRO
4
1.1k
安心して変更できるWebフロントエンドの作り方
pirosikick
5
2.7k
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
5
640
SREは、MCPとAutopilotをこう使え!
kazumax55
3
900
え、こんなに早く改修できるの?──新人エンジニアとスクラムマスターの2人が語る、AI×アジャイル開発の現場
ysasago
2
460
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
150
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
96
14k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
How to build a perfect <img>
jonoalderson
1
6k
Optimising Largest Contentful Paint
csswizardry
37
4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
760
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
What's in a price? How to price your products and services
michaelherold
247
13k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
New Earth Scene 8
popppiees
4
2.6k
Transcript
΅͕͔͘Μ͕͍͖͑ͨ͞ΐ͏ͷ SoR/SoE͋ʔ͖ͯͪ͘Ό ٢ࣉpm#18 2019/05/17 ͑͢ͳΈ ͖͋Β Twitter: @a_suenami Github: a-suenami
ࣗݾհ • ฒ ߊʢ͑͢ͳΈ ͖͋Βʣ @a_suenami • ͖ͳͷ RDB ͱ͔ΦϒδΣΫτࢦͱ͔
TDD ͱ͔ɻ • ʮԿͬͯΔΜͰ͔͢ʁʯͬͯΑ͘ฉ͔Ε·͕͢ɺ։ൃͷϚωδϝ ϯτͬͯͨΓɺٕज़ސతͳ͜ͱͬͯͨΓɺࣗࣗͰRails ΞϓϦέʔγϣϯॻ͍ͨΓReactΞϓϦέʔγϣϯॻ͍ͨΓͯͯ͠ɺ ͏໘ͳͷͰΑ͘ʮແ৬Ͱ͢ʯͬͯݴͬͯ·͕͢ҰԠࣄͯ͠· ͢ɻ
ຊൃදʹ͍ͭͯ • ʮ৽͍࣌͠ͷελʔτͷɺॳΊͷҰาʯ͜ͱͱ͍͏͜ͱͰɺ࠷ۙ SoRʢSystem of RecordʣͱSoEʢSystem of Engagementʣʹ͍ͭ ͍ͯΖ͍Ζߟ͍͑ͯΔͷͰɺࣗࣗͷࢥߟཧͷͨΊʹ͜ͷ Ͱ͓ͯ͠ҙݟͱ͔Β͑Δͱخ͍͠Ͱ͢ͶͬͯओࢫͰ͢ɻ
• ઈࢍࢼߦࡨޡதͰ·ͩ۩ମతʹԿ͔Ռ͕ग़ͯΔ͍ͬͯ͏ײ͡Ͱ ·ͩͳ͍ͷͰɺ͍Ζ͍ΖϑΟʔυόοΫ͍͚ͨͩΔͱ͍Ͱ͢ɻ
SoR ͱ SoE
SoRͱSoE • SoR: System of Record • ͦͷ໊ͷ௨ΓɺʮهʯͷͨΊͷγεςϜɻ • ೖྗͷࣄલνΣοΫͷݎ࿚ੑɺσʔλ߹ੑͷ୲อͳͲ͕ٻΊΒ
ΕΔɻ • SoE: System of Engagement • ར༻ऀͱͷؔΛߏங͢ΔͨΊͷγεςϜɻ • ࠓͲ͖ͷݴ༿Λ͏ͱΑ͍ UX Λఏڙ͢ΔͨΊͷγεςϜɺͱݴ ͍͑ͯΑ͍ɻ
SoRͱSoE • τϥσΟγϣφϧͳιϑτΣΞ։ൃʹର͢ΔݟύλʔϯͳͲ ʢPoEAAͳͲʣ SoR ͷͨΊͷͷͰ͋Δέʔε͕ଟ͍ɻ • ٯʹ SoE ʹର͢ΔઃܭݱࡏਐߦܥͰ֤͕ࣾɾڞ༗͍ͯ͠Δͱ
ײ͍ͯͯ͡ɺͨͱ֤͑Ϋϥυϕϯμʔ͕ެ։͍ͯ͠ΔΫϥυ σβΠϯύλʔϯͳͲʢSoR ͚ͷͷ͋Δ͕ʣSoE Λࢧ͑Δ ͨΊͷͰ͋Δ͜ͱଟ͍ɻ • ͯ͢ͷγεςϜ͕໌֬ʹͲͪΒ͔ʹଐ͢ΔΘ͚Ͱͳ͘ɺSoR త ଆ໘ͱ SoE తଆ໘Λ͕࣋ͭɺ͔ͳΓڧΊʹͲͪΒ͔ͷੑ࣭Λ࣋ͭ͜ ͱগͳ͘ͳ͘ɺͦ͏͍ͬͨ߹ʹઃܭஅΛؒҧ͑Δͱͦͷޙͷ ϝϯςφϯεʹଟେͳӨڹΛ༩͑ΔͷͰҙ͕ඞཁɻ
SoR ʹ͍ͭͯ • SoR ʹ͍ͭͯͱΓ͋͑ͣ͜ͷ͋ͨΓಡΜͰ͓͚͍͍Μ͡Όͳ͍ Ͱ͔͢Ͷɻʢࡶʣ
υϝΠϯͱʁ • ΤϦοΫɾΤϰΝϯεͷ DDD ຊ ʹॻ͔Ε͍ͯΔઃܭύλʔϯ SoR తଆ໘͕ڧ͗͢Δͱײ͡Δɻ • ͰɺI/O
ʹ I/O ͷɺϓϨθϯ ςʔγϣϯʹϓϨθϯςʔγϣ ϯͷυϝΠϯ͕͋ΔͷͰͳ͍͔ʁ • γεςϜͷత͕ҧ͏ͷͰ͋Εɺ ͦΕͧΕͷυϝΠϯʹۦಈ͞ΕΔ ΄͏͕͍͍ͣɻ
SoR / SoE ରൺ SoR SoE جຊతͳઃܭ؍ σʔλ߹ੑ ॊೈੑɺੑೳ σʔλετΞ
τϥϯβΫγϣφϧͳDB ଟ͘ͷ߹ɺRDB εέʔϥϏϦςΟ͕͋Δߴͳσʔ λετΞ υΩϡϝϯτࢦDBɺKVSɺશจݕ ࡧΠϯσοΫεͳͲ ϦϦʔεαΠΫϧ SoEͱൺΔͱ૬ରతʹ͍ʢॾઆ͋ Δ͔ʣ ߴͳϦϦʔεαΠΫϧ͕ٻΊΒΕΔ ࣭ධՁ τϥσΟγϣφϧͳιϑτΣΞςε ςΟϯάख๏Λద༻͍͢͠ τϥσΟγϣφϧͳख๏ʹՃ͑ɺϢ ʔβʔςετɺϢʔβʔΠϯλϏϡ ʔɺA/BςετͳͲ ΧφϦΞϦϦʔε࣮τϥϑΟοΫ Λར༻ͨ͠ςετͱଊ͑Δ͜ͱ͕Ͱ ͖Δ σʔλ߹ੑ τϥϯβΫγϣϯ߹ੑ͕ඞਢ ݁Ռ߹ੑͰΑ͍ཁ݅ଟ͍ ཁ͢Δʹʁ ݎ࿚ͳMutation ॊೈͳQuery ઃܭΛۦಈ͢Δʢ͍͢͠ʣͷ υϝΠϯϞσϧɺ֓೦σʔλϞσϧ UIʢϏδϡΞϧσβΠϯɺϢʔβΠϯ λϥΫγϣϯʣɺΩϟογϡ
CQRSͱͷؔ
۩ମతΞʔΩςΫνϟ
۩ମతΞʔΩςΫνϟ • SoR • ҰൠతͳΞϓϦέʔγϣϯ + RDBͷߏ • ΤϦοΫɾΤϰΝϯεͷ DDD
ຊͷઃܭ͕ग़ͯ͘Δ͜ͱ͕ଟ͍ɻ • SoE • SPA • BFF + Ωϟογϡ༻σʔλετΞʢϚςϦΞϥΠζυɾϏϡʔ, Redis, DynamoDB, ElasticSearchʣ + CDN • ʮCDNʹΩϟογϡͤ͞Δ୯ҐͰʯΤϯυϙΠϯτΛઃܭ͢Δɻ
͍Ζ͍Ζ͍ͨ͜͠ͱ͋ΔΜͰ͕͢ ࠓ 10 ͔͠ͳ͍ͷͰ
߹ੑͷ
άϩʔόϧͳ߹ੑͱϢʔβϩʔΧϧͳ߹ੑ • SoR తੈք؍ͰγεςϜશମɺ͋Δ͍࿈ܞγεςϜؚΊͨશ ੈքʢେ͛͞ʣͰෆ߹͕ͳ͍͜ͱ͕ٻΊΒΕΔɻ • ҰํɺSoE తੈք؍ͰͦΕΛར༻͢Δར༻ऀҰਓͻͱΓ͕ࣗࣗ ͷੈքΛ͓࣋ͬͯΓɺͦΕ͕ͦͷਓʹͱͬͯੈքͷͯ͢Ͱ͋ Δɻ
ϢʔβϩʔΧϧͳ߹ੑͷྫ • ͕ࣗݟ͍ͯΔੈքͰʮ͍͍ͶʂʯΛԡ͢ͱɺ͍͍ͶࡁΈʹঢ়ଶ ͕มԽ͢Δɻ • Ͱɺຊʹ͍͍Ͷ͕ΧϯτΞοϓ͞Εͨͷʁ • ͍͔ͭ૿͑Δ͕ͣͩਖ਼֬ʹ͍ͭ૿͑Δ͔ຊਓʹΘ͔Βͳ͍ ͠ɺར༻ऀʹͱͬͯڵຯͳ͍ɻ
άϩʔόϧͳ߹ੑͱϢʔβϩʔΧϧͳ߹ੑ • SoR ͷઃܭੈքશମʢେ͛͞ʣΛཏతʹ؍͢Δඞཁ͕͋Γɺ SoE ͷઃܭར༻ऀҰਓͻͱΓΛҙਂ͘؍͢Δඞཁ͕͋Δɻ • SoE ʹ͓͚Δ෭࡞༻Λ͏ϦΫΤετจࣈ௨ΓʮϦΫΤετʯͰ͋ Γɺඞͣ͠ಉظతɾଈ࣌తʹྃ͢ΔͷͱݶΒͳ͍ɺͭ·Γ݁
Ռ߹ੑ͔͠୲อ͞Εͳ͍ͱ͍͏ҙࣝͰઃܭΛ৺͕͚ΔͱΑ͍ɻ • SoR SoE ͔ΒͷϦΫΤετΛड͚ͱͬͨͱ͍͏ࣄ࣮ͷΈΛฦ͠ɺ SoE ͦΕΛड͚ͱͬͨޙʹʮͦͷར༻ऀͷੈքʹ͓͚Δঢ়ଶʯΛม ߋ͢Δɻ
ͦ͏ݴͬͯ άϩʔόϧͳ߹ੑ͕ ٻΊΒΕΔ͜ͱ͋ΔͰ͠ΐ͏ʁ
ͪΖΜ͋Γ·͢ɻ
SoE Ͱάϩʔόϧͳ߹ੑ͕ඞཁͳྫ • ࡏݿ͕ͳ͍ͷʹߪೖʢͷडʣΛͯ͠͠·ͬͨɻ • ΫϨδοτΧʔυͷݶֹΛ͍͑ͯΔͷʹߪೖʢ͈́ • ಉ͡ϝʔϧΞυϨεͷਓ͕͢Ͱʹొ͍ͯ͠Δͷʹձһొʢͷडʣ Λͯ͠͠·ͬͨɻ ্هͷΑ͏ͳෆ߹ͳϦΫΤετ
System of “Engagement” ͱ࣭͕͍͍ͯ͠ͱݴ͑ͳ͍ɻ Ͱ͖Δ͚ͩૣ͍λΠϛϯάͰͦͷϦΫΤετΛड͚͚Δ͜ͱͰ ͖ͳ͍͜ͱΛར༻ऀʹڭ͑ͯ͋͛Δ͖Ͱ͋Δɻ
SoE Ͱͷάϩʔόϧͳ߹ੑͷར༻ • ϦΫΤετՄೳ͔Ͳ͏͔ΛԠ͑ΔʢՄೳͳ߹ɺϩοΫΛͱΔɺ͘͠༧͢ΔʣΤϯυϙΠϯτΛ SoR ʹ࣮͠ɺ͜ΕΒඇಉظͳ݁Ռ߹ੑͰͳ͘ಉظతʹ SoE ʹ݁ՌΛฦ͢Α͏ʹ͢Δɻ • ܾࡁγεςϜͷ༩৴ͱܾࡁ֬ఆͷؔʹ͍ۙɻ
• ϦΫΤετՄ൱ͷ֬ೝͱ࣮ࡍͷ࣮ߦΛ͚Δ͜ͱͰɺੑೳোੑͷ໘Ͱ࣭ͷߴ͍γεςϜΛߏ ங͢Δ͜ͱ͕Ͱ͖Δɻ • BFF ͕͋Δ߹ɺͦͷޙΖʹ͋Δ SoR ʹର͢ΔϦόʔεϓϩΩγͱͯ͠ͷΈৼΔ͏͜ͱʹͳΔɻ
·ͱΊ • γεςϜͷઃܭΛߟ͑Δͱ͖ɺͦΕ͕ SoR తଆ໘͕ڧ͍γεςϜͳ ͷ͔ɺSoE తଆ໘͕ڧ͍γεςϜͳͷ͔Λҙࣝ͢Δͱ͍͍͜ͱ͕͋ Δ͔͠Ε·ͤΜɻ • SoE
తͳઃܭϊϋ·ͩ·ͩੈͷதʹগͳ͍ͱࢥ͍ͬͯΔͷ ͰΈͳ͞ΜͲΜͲΜൃ৴͖ͯ͠·͠ΐ͏ɻ • SoR తͳઃܭΫϥυϕϯμʔʑʹΑͬͯมԽ͍͖͍ͯͯ͠Δ ͜ͱ͕͋Δͱࢥ͏ͷͰɺͲΜͲΜൃ৴ʢ͈́ • άϩʔόϧͳ߹ੑͱϢʔβϩʔΧϧͳ߹ੑҧ͏Αʂ
ͱ͍͏Θ͚ͰɺҰ۟ʢҰटʣ ઃܭΛ ۦಈ͢Δͷ͕ Կͳͷ͔ ݟۃΊΔ͜ͱͦ͜ ઃܭͳΓ͚Γ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ