Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Scalebaseバックエンド構成について/the backend design of Sca...
Search
machu
July 29, 2021
Technology
6.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Scalebaseバックエンド構成について/the backend design of Scalebase
machu
July 29, 2021
More Decks by machu
See All by machu
NBAチームから学ぶ強いチームの作り方
machuz
0
74
Authorization to implement with Extensible Effect
machuz
0
470
アルプの 認証/認可分離戦略と手法
machuz
3
800
AuthzCtx - Alp社内共有会
machuz
0
100
アルプのEff独自エフェクト集 / Alp-original ’Eff’ pearls
machuz
1
2.3k
SQL Meisterへの道 ~更新編~ / sql-meister-CUD
machuz
0
2.4k
SQL Meisterへの道 ~基礎〜参照編~ / sql-meister-R
machuz
0
2.8k
Authz
machuz
0
330
CQRS+ESをKinesis,Spark,RDB,S3でやってみた
machuz
0
3.5k
Other Decks in Technology
See All in Technology
ガバメント AI 源内を地方自治体は活用できるのか可能性と課題、期待について
takeda_h
1
340
Pavlokで始める電撃駆動開発
sgrsn
0
180
強化学習「理論」入門
enakai00
3
3.6k
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.2k
GitHub CopilotのFinOps- AI CreditのObservabilityと価値を生むためのエージェント設計
yuriemori
0
140
toio・myCobotでフィジカルAIっぽいことを行うための検討(とりあえず調査) / フィジカルAI LT(IoTLTによる開催)
you
PRO
0
300
[しろおび夏祭り2026] チャットするAIから、作業するAIへ - 使われ方の変化と、その裏側で起きていること
kk0n
0
1.6k
PLATEAU で バーチャル花火大会
tatsuya1970
0
100
グローバル基準のSREは、運用現場でどう機能したか:成熟度アセスメントの実践 / SRE NEXT 2026
sorawatanabe
0
130
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
230
Cursor Meetup Sapporo - Cursor物語 続編
cocacola917
0
140
【CEDEC2026】ゲームシナリオライターを支援するAIツール開発の実践 ― 設計とプロンプトの工夫 ―
cygames
PRO
1
770
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
4 Signs Your Business is Dying
shpigford
187
22k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
360
Building Applications with DynamoDB
mza
96
7.2k
First, design no harm
axbom
PRO
2
1.2k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
840
From π to Pie charts
rasagy
0
260
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
730
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
620
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
Transcript
Scalebase όοΫΤϯυߏʹ͍ͭͯ
Agenda 1ɽઃܭࢥ 2ɽsbtϓϩδΣΫτߏ 3ɽϞδϡϥϞϊϦε 4ɽEff
ઃܭࢥ 33
ഇΕͳ͍ίʔυͳ͍ͷͰపఈͨ͠ϞδϡʔϧԽ ελʔτΞοϓʹݶΒͣɺ࠷ॳظͷίʔυ͕ෛ࠴Խ͠ɺͦͷվमʹ༏लͳਓࡐ͕ଟ େͳ࿑ྗΛඅ͍ͯ͠Δέʔεଟ͍ɻ ͲΜͳʹྑ͍ίʔυ༷࣌ͷมԽʹΑΓԽ͢ΔՄೳੑ͕͋Δ͕ɺӨڹൣ ғΛߏͰ੍ޚ͢Δ͜ͱʹΑͬͯলྗͰͷஔ͖͕͑Ͱ͖ΔΑ͏ʹsbtͷαϒϓϩ δΣΫτΛࡉ͔͘Δબ͍ͯ͠Δɻ ϞδϡʔϧԽͷࢦCleanArchitecture ୯ʹࡉ͔͘Δ͚ͩͰແடংͰอकෆՄೳʹͳΔͷͰɺCleanArchitecture Λࢀߟʹ͠ɺґଘํͷ੍ޚ(DIP)ʹΑٕͬͯज़తؔ৺ࣄͱυϝΠϯϩδοΫͷ Λߦ͍ͬͯΔɻ
େنΞϓϦέʔγϣϯΛݎ࿚͔ͭ҆શʹ࡞Δ DI DIґଘੑ੍ޚͷDI(Guice)ͱEffectͷDI(Eff)ͷ2छྨͰߦ͍ͬͯΔɻ Guice(ಈతDI)ɺେنΛఆ͍ͯ͠Δނʹauto wireͳೖ͕Ͱ͖ͳ͍ͱϘ ΠϥϓϨʔτͷྔ͕େʹͳΔͨΊ࠾༻͍ͯ͠Δɻ(ςετͰDIίϯςφ͖ͷى ಈΛߦ͓ͬͯΓɺઃఆ࿙Ε,ॳظԽΤϥʔͳͲͷϥϯλΠϜΤϥʔͦ͜Ͱݕ͠ ͍ͯΔɻ) EffectͷDIɺখճΓͷޮ࣮͘ߦ࣌ͷࠩ͠ସ͑Λ੩తʹߦ͏ͨΊEffͷΠϯλϓ Ϧλʹد͍ͤͯΔɻ EffͷγϯϓϧͳγϯλοΫεʹΑΔมߋ༰қੑ ੩తܕ͚ݴޠݎ࿚͕ͩෳࡶͳ͜ͱΛ͢ΔͱϩδοΫͱؔͷͳ͍ܕ߹Θͤͱ ͖߹͏͜ͱʹͳΔɻ ؔܕϓϩάϥϛϯάͷΤοηϯε͜ͷܕ߹ΘͤΛָʹ͠ɺදݱྗΛ֦ு͢Δଆ ໘Λ࣋ͭͷͰɺՄಡੑͱͷόϥϯεΛݟͳ͕Βੵۃతʹಋೖ͍ͯ͠Δɻ υϝΠϯϞσϧͷ୳ٻ ෳࡶͳυϝΠϯΛදݱ͢ΔυϝΠϯϞσϦϯάΛ୳ٻ͍ͯ͠Δɻ ٕज़తؔ৺ࣄ͔ΒΓ͞ΕͨϞσϧ͕ͩɺ۪ʹϞσϦϯά͢Δͱڊେͳू͕ ݱΕͯ͠·͏ͷͰɺ1ͭͷ֓೦ʹΈ͑ΔͷΛదͳׂ୯Ґʹ͚͍ͯ͘ ܖද໌ ओʹΫϥεෆมද໌Λར༻ͯ͠ɺcase class͚ͩͰදݱͰ͖ͳ͍ଘࡏͯ͠ͳ Βͳ͍ঢ়ଶΛݕͰ͖ΔΑ͏ʹ͢Δ
SBTϓϩδΣΫτߏ 53
1ίϯςΩετʹ͓͚ΔSBTϓϩδΣΫτߏ SecondaryAdapter UseCase Domain Http ڞ௨Http ڞ௨SecondaryAdapter ڞ௨Library ڞ௨Domain Batch
ڞ௨Batch Kinesis ڞ௨Kinesis gRPC ڞ௨gRPC 1αʔϏεͷϓϩδΣΫτɺ PrimaryAdapter,SecondaryAdapter,UseCase,Doma in͕جຊͰ࣮͢Δʹ͋ͨΓڞ௨Խͨ͠΄͏͕লྗͰศར ͳͷશίϯςΩετԣஅͰࢀরͰ͖Δڞ௨xxxʹஔ ͢ΔΑ͏ʹ͍ͯ͠Δɻ ͨͩɺকདྷϚΠΫϩαʔϏεԽͨ͠ࡍʹɺڞ௨ʹஔ͘ ͷΛ͍͡ΔʹσϓϩΠಠཱੑΛ્ͯ͠͠·͏ͷͰɺجຊ తʹมΘΓಘͳ͍ͷ(ID)ɺશαʔϏεҰׅͰมߋ ͢Δඞཁ͕͋Δͷ(நBatch Class)Λஔ͢ΔΑ͏ ʹ͍ͯ͠Δɻ
AuthN༻SecondaryAdapter AuthN༻Domain ෳίϯςΩετΛ၆ᛌͰݟͨਤ Subscription༻SecondaryAdapter Subscription༻UseCase Subscription༻Domain Subscription༻PrimaryAdapter Subscription AuthZ༻SecondaryAdapter AuthZ༻UseCase
AuthZ༻Domain AuthZ༻PrimaryAdapter ڞ௨PrimaryAdapter ڞ௨SecondaryAdapter ڞ௨Library ڞ௨Domain AuthZ AuthN༻UseCase AuthN༻PrimaryAdapter AuthN ɾɾɾetc
ϞδϡϥϞϊϦε ৄࡉ: https://speakerdeck.com/showmant/expressing-complex-domain-regions-and-boundaries-with-modular-monoliths AuthN༻SecondaryAdapter AuthN༻Domain Subscription༻SecondaryAdapter Subscription༻UseCase Subscription༻Domain Subscription༻PrimaryAdapter Subscription
AuthZ༻SecondaryAdapter AuthZ༻UseCase AuthZ༻Domain AuthZ༻PrimaryAdapter ڞ௨PrimaryAdapter ڞ௨SecondaryAdapter ڞ௨Library ڞ௨Domain AuthZ AuthN༻UseCase AuthN༻PrimaryAdapter AuthN ɾɾɾetc ModularMonolith༻PrimaryAdapter
ϞδϡϥϞϊϦε 93
Ώ͘Ώ͘ϚΠΫϩαʔϏεԽ͍ͯ͘͠ ґଘϥΠϒϥϦͷཧσϓϩΠසͳͲ͕͋·Γʹണͨ͠ίϯςΩετ͕ొ ͢ΔͱϚΠΫϩαʔϏεԽ͠ͳ͍ͱπϥΠ͜ͱʹͳ͍ͬͯ͘ͷͰͦΕʹඋ͑ͨߏ ΛΉ େن͔ͭυϝΠϯ͕ෳࡶ େن͔ͭυϝΠϯ͕ෳࡶͩͱɺࡉԽ͠ͳ͍ͱ͕ͯ͢ڊେूʹͳΓ͕ͪͰɺ ͦ͏͠ͳ͍Α͏ʹ༻్͝ͱʹूΛ͚ͯɺେྔͩͱɺͲͷΑ͏ʹΘΕΔͷ͔ ͕΅͚ͯ͠·͏ɻ ίϯςΩετʹΑΔॎͷׂʹΑͬͯɺ͜ͷೝΛԼ͛ΔޮՌΛૂ͍ͬͯΔɻ ͳͥϞδϡϥϞϊϦε͔
ίϯςΩετڥքͷҙ͚ࣝ ίΞυϝΠϯͱαϒυϝΠϯͷڥքɺҙ͍ࣝͯͯ͠ڥքҾ͖͢Δ͜ͱ͕͍͠ ͷͰɺԿ͔͠Βͷ੍͕ͳ͍ͱ͙͢ʹࠞͬͯ݁͟߹ͯ͠͠·͏ɻ ڥքͷҙࣝΛڧ੍&໌֬ʹ͢Δ͜ͱʹΑͬͯΫϦʔϯͳυϝΠϯ͕อक͘͢͠ͳ ΓɺڥքҾ͖ͷࢼߦ͘͢͠ͳΔͷͰΑΓྑ͍ڥքΛಥ͖٧ΊΔ͜ͱ͕Ͱ͖Δɻ ͔ΜͨΜʹಋೖՄೳ ScalaͱSBTͷදݱྗͩͱɺ͔ΜͨΜʹಋೖ͢Δ͜ͱ͕Ͱ͖Δɻ ࢀߟ: https://speakerdeck.com/showmant/expressing-complex-domain-regions-and-boundaries-with-modular-monoliths
Eff 11 3
มߋ༰қੑ ෳͷޮՌΛϑϥοτʹऔΓѻ͏͜ͱ͕Ͱ͖ΔͷͰɺܕ߹ΘͤΛҙࣝͤͣʹϩδο Ϋͷมߋ͕Մೳɻ ΠϯλϓϦλʹΑΔॊೈͳڍಈࠩ͠ସ͑ Auto-wireͳDIίϯςφศརͰ͋Δ͕ɺϦΫΤετϕʔεͰͷڍಈࠩ͠ସ͑ ͳͲΛߦ͏ͷʹద͍ͯ͠ͳ͍ɻ EffͰ͋ΕΠϯλϓϦλʹΑͬͯॊೈ͔ͭ҆શɺ༰қʹڍಈΛࠩ͠ସ͑Δ͜ͱ͕ Ͱ͖Δɻ ͳͥEff͔ FPΤοηϯεͱOOPΤοηϯεͷૄ݁߹ͳڠௐ
ϞφυɺࣗવมɺܧଓͳͲͷίΞͳFPΤοηϯεͯ͢ΠϯλϓϦλʹด͡ࠐ ΊΒΕΔͷͰɺϩδοΫΛॻ͘ਓ͕ҙࣝ͢Δඞཁ͕ͳ͍ɻ FP͖ͳਓΠϯλϓϦλΛੵۃతʹ৮ΕΔ͠ɺϩδοΫΛॻ͘ਓFPͷศརͳ ෦͚ͩΛڗड͢Δ͜ͱ͕Ͱ͖Δɻ ଟछଟ༷ͳEffectͷடং͋Δཧ EffΛΘͳ͍Scala projectɺऔΓѻ͏Effect͕1ͭ૿͑Δ͝ͱʹࢦؔ తʹܕ߹Θͤͷਏ͕͕͍͋ͬͯ͘͞ͷͰɺศརͳEffect͕͋ͬͯؾָʹ͏͜ ͱ͕Ͱ͖ͳ͍ɻ EffͰ͋ΕReader,WriterಠࣗఆٛͷޮՌΛ͍͘Βಋೖͯ͠γϯλοΫε ʹӨڹ͠ͳ͍ɻ(࣮ߦ࣌ͷઢ͋Δ͕ɺ࣮ߦॱΛݻఆ͢ΔΈͰճආͯ͠ ͍Δ) ࢀߟ: http://okmij.org/ftp/Haskell/extensible/more.pdf https://tech.recruit-mp.co.jp/server-side/post-18728/ https://halcat.org/scala/extensible/ ϩδοΫͷ໌֬ԽͱՄಡੑ ϑϥοτʹϩδοΫΛهड़͢Δ͜ͱ͕Ͱ͖ΔͷͰܕ߹ΘͤʹΑͬͯϩδοΫ͕΅ ͚Δ͜ͱ͕ͳ͘ɺUseCaseɺυϝΠϯϩδοΫͷՄಡੑΛߴ͘อͭͷ͕༰қͰ͋ Δɻ