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
マイクロサービスの思想から捉える Backends for Frontendsとその類似パター...
Search
qsona
June 07, 2018
Technology
19
25k
マイクロサービスの思想から捉える Backends for Frontendsとその類似パターン / Backends for Frontends and its similar pattern from the microservices perspective
UIT#3 The “Backends for Frontends” sharing
qsona
June 07, 2018
Tweet
Share
More Decks by qsona
See All by qsona
サーバー間 GraphQL と webmock-graphql の話 / server-to-server graphql and webmock-graphql
qsona
4
380
Backend エンジニア視点からの GraphQL / GraphQL from a perspective of backend engineer
qsona
27
8.2k
3 Practices about Service-to-Service GraphQL Ruby Client
qsona
1
860
いかにして GraphQL を組織に導入するか (新規開発編) / how we introduce GraphQL on scratch development
qsona
6
3.9k
Well-organized Transaction Script - リファクタリングの妥協的手法 -
qsona
4
1.3k
GraphQL と Prisma から考える次のN年を見据えた技術選定 / Architecture decision for the next N years at StudySapuri
qsona
25
14k
最高のマスターデータ管理手法考察 & VSCode Extension を活用した話 / developing masterdata management tool by using vscode extension
qsona
9
6.2k
GraphQL を活用したスキーマ駆動開発の実践 / schema-driven development with GraphQL
qsona
6
5.1k
GraphQL を利用したアーキテクチャの勘所 / Architecture practices with GraphQL
qsona
37
15k
Other Decks in Technology
See All in Technology
OpenShift Virtualizationのネットワーク構成を真剣に考えてみた/OpenShift Virtualization's Network Configuration
tnk4on
0
130
GitHub Copilot のテクニック集/GitHub Copilot Techniques
rayuron
24
11k
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
12
3.5k
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
160
Wantedly での Datadog 活用事例
bgpat
1
430
サーバレスアプリ開発者向けアップデートをキャッチアップしてきた #AWSreInvent #regrowth_fuk
drumnistnakano
0
190
20241214_WACATE2024冬_テスト設計技法をチョット俯瞰してみよう
kzsuzuki
3
440
生成AIをより賢く エンジニアのための RAG入門 - Oracle AI Jam Session #20
kutsushitaneko
4
220
C++26 エラー性動作
faithandbrave
2
700
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
300
なぜCodeceptJSを選んだか
goataka
0
160
Turing × atmaCup #18 - 1st Place Solution
hakubishin3
0
470
Featured
See All Featured
RailsConf 2023
tenderlove
29
940
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
GitHub's CSS Performance
jonrohan
1030
460k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Agile that works and the tools we love
rasmusluckow
328
21k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
A Philosophy of Restraint
colly
203
16k
The World Runs on Bad Software
bkeepers
PRO
65
11k
A Tale of Four Properties
chriscoyier
157
23k
Transcript
ϚΠΫϩαʔϏεͷࢥ͔Βଊ͑Δ #BDLFOETGPS'SPOUFOETͱͦͷྨࣅύλʔϯ ٱଠ!RTPOB גࣜձࣾ'J/$ 6*55IFl#BDLFOETGPS'SPOUFOETzTIBSJOH
ࣗݾհ 2 • ໊લٱଠ !RTPOB • גࣜձࣾ'J/$ • ओʹαʔόαΠυΤϯδχΞ
͓खॊΒ͔ʹʂ • #''ྺ ʙ • .JDSPTFSWJDFT.FFUVQओ࠵
ΞδΣϯμ 3 ‣ ষ#''ͱɺͦͷҐஔ͚ͮͱత ‣ ষ#''ͱϚΠΫϩαʔϏεͷؔੑ ‣ ষ#''ͱͦͷྨࣅύλʔϯͷ࣮ફ
ΞδΣϯμ 4 ▾ ষ#''ͱɺͦͷҐஔ͚ͮͱత ‣ #''ͱʁ ‣ #''ͷཱͪҐஔ ‣ #''ͷతɾղܾ͢Δ՝
‣ ষ#''ͱϚΠΫϩαʔϏεͷؔੑ ‣ ষ#''ͱͦͷྨࣅύλʔϯͷ࣮ફ
#''ͱʁ 5 • ࢲݟ#'' #BDLFOETGPS'SPOUFOET ʹ গ͠༻ޠͷࠞཚ͕͋ΔΑ͏ʹࢥ͏ • ʮ4FSWFSTGPS'SPOUFOETʯ͕ΑΓ࣮ଶʹ͍ۙ •
'SPOUFOE#BDLFOEཧతͳྨ • $MJFOU4FSWFSཧతͳྨ
#''ͷཱͪҐஔ 6 • ཧత'SPOUFOEʹҐஔ͠ɺཧతʹ4FSWFSͰ͋Δ
#''ͷతɾղܾ͢Δ՝ 7 • ϚΠΫϩαʔϏεͷ"1*܈Λɺ6*͚ʹ߹͢Δ • ͜ͷൃදͰ͜ΕΛ۷ΓԼ͛Δ • ͦͷଞʹ͍Ζ͍Ζ͋Δ • Ωϟογϡ
6*ϨΠϠͷ"#ςετ FUD • ࠓ͍ΖΜͳࣄྫ͕ݟΕΔͣʂ
ΞδΣϯμ 8 ‣ ষ#''ͱɺͦͷҐஔ͚ͮͱత ▾ ষ#''ͱϚΠΫϩαʔϏεͷؔੑ ‣ ϚΠΫϩαʔϏεͱʁ ‣ ΫϥΠΞϯτͱϚΠΫϩαʔϏεͷؔ
‣ ϚΠΫϩαʔϏεͷ౷߹ͷํ๏ ‣ ষ#''ͱͦͷྨࣅύλʔϯͷ࣮ફ
ϚΠΫϩαʔϏεͱʁ 9 • ڠௐͯ͠ಈ࡞͢ΔɺখنͰࣗతͳαʔϏε • ֤ϏδωεΛ୲͢ΔνʔϜ͕ɺಠཱʹϦϦʔεαΠΫ ϧΛ࣋ͪɺߴʹ1%$"Λճ͢͜ͱ͕Ͱ͖Δ • 'J/$ͷαʔϏεΛྫʹͱͬͯઆ໌͢Δ •
'J/$ݸͷϚΠΫϩαʔϏεΛӡ༻த
10 'J/$ͷϓϩμΫτ ʙϔϧεέΞɾඒ༰ʹಛԽͨ͠&$αΠτʙ Ҩࢠใ ݂ӷݕࠪ݁Ռ ݈σʔλ νϟοτ ͍߹Θͤ ߪങཤྺ ࠂใ
ϩάΠϯ࣌ؒ ར༻ස ੜମใɾ׆ಈσʔλ ҩྍɾݕࠪσʔλ ߦಈཤྺ ͓Έ าɾ׆ಈྔ ݂ѹ ମௐɾؾ ৯ࣄ࣌ؒɾ༰ ਭɾब৸࣌ؒ ମॏɾମ ੜཧ ੜ׆श׳ ʙϨγϐϑΟοτωεϥΠϑϋοΫͷಈըίϯςϯ πʙ ࢟ ʙ'J/$๏ਓɾ݈อ͚ΣϧωειϦϡʔγϣϯʙ
'J/$ͷϓϩμΫτͱϚΠΫϩαʔϏε 11 • ֤ϓϩμΫτ͕ɺߋʹ༷ʑͳػೳΛแ͍ͯ͠Δ • ྫ'J/$ΞϓϦ • ϥΠϑϩά า ਭ
FUD • ϑΟοτωεத৺ͷಈըϝσΟΞ • ίϛϡχςΟػೳ • QVTI௨ ΦϯϘʔσΟϯά ͳͲ • ֤ػೳ૬ޓʹ࿈ܞ͍ͯ͠Δ • ྫา͘ͱϙΠϯτ͕Β͑Δ'J/$ϞʔϧͰ͑Δ • "1*࿈ܞඇಉظΠϕϯτ࿈ܞ
'J/$ͷϓϩμΫτͱϚΠΫϩαʔϏε 12 • ֤ػೳɺಠཱͯ͠େ͖ͳϏδωεʹҭ͍ͯͨ • 'J/$ͷϓϩμΫτͷػೳʹɺ୯ମͰࣄۀʹͳΓ͏Δ ͷ͕ͨ͘͞Μ͋Δ • ͦΕΒΛಠཱͯ͠αʔϏεʹΓग़͢͜ͱͰɺνʔϜ͕ ࣗɾಠཱͯ͠։ൃϦϦʔεαΠΫϧΛճ͠ɺߴʹ
1%$"͢Δ͜ͱ͕Ͱ͖Δ
• ϞϊϦγοΫαʔϏεͷ߹ • ΫϥΠΞϯτOαʔϏε ΫϥΠΞϯτͱαʔϏεͷؔ 13
• ϚΠΫϩαʔϏεͷ߹ • ΫϥΠΞϯτONαʔϏε ΫϥΠΞϯτͱαʔϏεͷؔ 14
• ͜ͷਤͷΑ͏ʹɺΓͱΓ͢ΔͱͲ͏ͳΔ͔ʁ ϚΠΫϩαʔϏεͷ౷߹ͷํ๏ 15
ΓͱΓ͢Δ 16 • ΫϥΠΞϯτʹछʑͷෳࡶ͕͋͞Δ • ༷ʑͳϗετΛΒͳ͚ΕͳΒͳ͍ • ը໘Λߏ͢Δͷʹෳճ"1*ϦΫΤετ͕ඞཁ •
୯Ұͷ#BDLFOEͰ͋Εɺ(SBQI2-͕Ұͭͷղܾࡦ • ෳͷϚΠΫϩαʔϏεͷݺͼग़͠ґવͱͯ͠ • ղܾࡦதؒʹαʔόΛஔʁ
"1*(BUFXBZύλʔϯ 17 • ͯ͢ͷαʔϏεΛू͠ɺ'SPOUFOE͚ʹఏڙ͢Δ ϨΠϠ
"1*(BUFXBZύλʔϯ 18 • ,POHͳͲͷ"1*(BUFXBZ͕͋Δ • "1*ूͷଞʹɺೝূɺྲྀྔ੍ޚͳͲΛͬͯ͘ΕΔ • جຊతʹ#BDLFOEͷΤϯδχΞ͕ཧ͢Δͷ
"1*(BUFXBZύλʔϯ 19 • "1*(BUFXBZʹಠࣗͷϩδοΫ࣋ͨͤʹ͍͘ • ϩδοΫΛ࣋ͭͱɺڊେͳ݁߹ϨΠϠʹͳΓɺΫϥΠΞϯ τͷ૿Ճʹରͯ͠εέʔϧ͠ͳ͍ • ༷ʑͳϩδοΫ͕ฆΕࠐΈ͘͢ͳΓɺ݁ՌతʹϚΠΫϩ
αʔϏεͷಠཱੑΛ્͍͢͠ • 'SPOUFOE͕ࣗ༝ʹ͑ΔϨΠϠͰͳ͍ • ෳͷϦιʔεΛϦΫΤετͰฒྻʹऔಘɺ Ͱ͖Δ ͋Δ • ෳͷϦιʔεΛϚʔδͯ͠ฦ͢ɺͳͲͰ͖ͳ͍
#''ύλʔϯ 20 • ΫϥΠΞϯτ͝ͱʹɺར༻͢ΔαʔϏεΛू͢Δ
#''ύλʔϯ 21 • "1*(BUFXBZύλʔϯͱࣅͯඇͳΔͷ • αʔϏεଆ͕ूͯ͠ఏڙ͢ΔͷͰͳ͘ɺ ϑϩϯτΤϯυଆ͕ࣗͰબΜͰू͍ͯ͠Δ • ϚΠΫϩαʔϏεͷࣗੑ͕อͨΕΔ
• ϑϩϯτΤϯυͷࣗ༝͕ߴ͍
'SPOUFOE❤#''❤#BDLFOE
#''ͷҙ 23 • ຊདྷόοΫΤϯυͰΔ͖ϩδοΫΛ #''ʹ࣋ͨͳ͍Α͏ʹ͢Δ • ྑ͘ͳ͍ྫ#''Ͱߋ৽ॲཧΛΦʔέετϨʔγϣϯ • ͍ͣΕ͔ͷόοΫΤϯυαʔϏε͕Ұٛతʹߋ৽ॲཧΛड ͚ɺͦͷαʔϏε͕ඇಉظΠϕϯτΛൃߦ͠ଞαʔϏεʹ
ͤ͞ΔͱΑ͍ • ϚΠΫϩαʔϏεශ݂ʹҙ • ۃྗόοΫΤϯυʹدͤΔҙࣝ
͜͜Ͱએ 24 • ٕज़ॻయͰʮ.JDSPTFSWJDFTBSDIJUFDUVSFΑΖͣຊʯ ͱ͍͏ಉਓࢽΛग़͠·ͨ͠ • 'J/$ͷΤϯδχΞਓͷڞஶ • ඇಉظΞʔΩςΫνϟ.JDSP'SPOUFOETͷͳͲΛղઆ ͍ͯ͠·͢ʂ
ΞδΣϯμ 25 ‣ ষ#''ͱɺͦͷҐஔ͚ͮͱత ‣ ষ#''ͱϚΠΫϩαʔϏεͷؔੑ ‣ ষ#''ͱͦͷྨࣅύλʔϯͷ࣮ફ ‣ 'J/$ͷ৽ࣄྫ#''GPSJ04"OESPJE"QQ
‣ .JDSP'SPOUFOET
ΞδΣϯμ 26 ‣ ষ#''ͱɺͦͷҐஔ͚ͮͱత ‣ ষ#''ͱϚΠΫϩαʔϏεͷؔੑ ‣ ষ#''ͱͦͷྨࣅύλʔϯͷ࣮ફ ‣ 'J/$ͷ৽ࣄྫ#''GPSJ04"OESPJE"QQ
‣ .JDSP'SPOUFOET
ߏਤ 27
J04 "OESPJEͰͭͷ#'' 28 • J04"OESPJEͰجຊతʹಉ͡ΞϓϦΛఏڙ͍ͯ͠Δ • ػೳɺը໘ߏɺભҠͳͲಉ͡ • ࡉ͔͍6*ϓϥοτϑΥʔϜ͝ͱʹҟͳΔ͕ɺ ͜Ε$MJFOUଆ͕୲͢Δɻ#''ͷͰͳ͍
• #''͕୲͢ΔϨΠϠɺΉ͠Ζڞ௨Խ͔ͨͬͨ͠ • %PNBJO%SJWFO%FTJHOͰݴ͏ͱ͜Ζͷ 3FQPTJUPSZͱ ͯ͠%PNBJO0CKFDUΛฦ͢ͱ͜Ζ·ͰΛຊ୲͍ͨ͠ • ݴޠͷน·ͨ͛ͳ͍ͷͰશͳ%PNBJO0CKFDUΛฦ͢ͷ ແཧ͕ͩɾɾɾ
8IZH31$ 29 • 31$ܗࣜͷݺͼग़͠ʹ͔ͨͬͨ͠ • ਖ਼֬ʹʮ3&45GVMආ͚͔ͨͬͨʯ͔ • ఏڙͷత͕୯ҰͰ͋ΓɺΫϥΠΞϯτΛڧ͘ҙࣝͨ͠"1* ʹͯ͠ͳ͍ Ή͠Ζ͢Δ͖
• 3&45GVMతͳ"1*ʹ͢Δͱɺ$MJFOUͰ+40/ΛϚοϓ͢Δίʔ υ͕ଟ͘ඞཁʹͳΔ • J04"OESPJEͰͷ࣮ͷࠩΛͳΔ͘ͳ͍ͨ͘͠ • ʮ#''31$తͳ"1*ఏڙΛ͖ͩ͢ʯͱ͍͏ࡶͳఏىΛ ͓ͯ͘͠ͷͰɺ࠙ձͱ͔Ͱ͍ٞͨ͠ • ܕཉ͔ͬͨ͠ 1SPUPDPM#VGGFST
8IZ,PUMJO 30 • 'SPOUFOEͷΤϯδχΞ͕ॻ͘͜ͱΛڧ͘ҙ͍ࣝͯ͠Δ • "OESPJEͰ,PUMJOΛ࠾༻͍ͯ͠Δ • J04 4XJGU ͔Βͷֶशίετ͍
• ʮฒྻॲཧʯͷཁ݅ΫϦΞͰ͖Δ • $PSPVUJOFTBSFFYQFSJNFOUBMJO,PUMJO • ฒྻॲཧɺ#''Ͱ΄΅ඞਢཁ݅Ͱ͋Δ • ฒྻॲཧͰ͍͑(P/PEFKTͷ͕ݱঢ়্
ΞδΣϯμ 31 ‣ ষ#''ͱɺͦͷҐஔ͚ͮͱత ‣ ষ#''ͱϚΠΫϩαʔϏεͷؔੑ ‣ ষ#''ͱͦͷྨࣅύλʔϯͷ࣮ફ ‣ 'J/$ͷ৽ࣄྫ#''GPSJ04"OESPJE"QQ
‣ .JDSP'SPOUFOET
ڀۃͷϚΠΫϩαʔϏε 32 • αʔϏε͕ಠཱͷσϓϩΠαΠΫϧΛ࣋ͪɺ Ϗδωεͷ1%$"ΛߴʹճͤΔ • ϏδωεόοΫΤϯυ͚ͩͰͳ͍ • 6*Ϗδωεʹؚ·ΕΔͣ •
νʔϜͷதʹ#BDLFOE୲ 'SPOUFOE୲͕͍ͯ ڠྗ͍ͯ͠Δͷ͕ཧ Ή͠Ζී௨ʁ • #'''SPOUFOEνʔϜͷ͚࣋ͪͩͲɺ 'SPOUFOEνʔϜͦͦϚΠΫϩαʔϏεͷཧͱ ͢Δʂ
αʔϏε͕6*ఏڙʁ 33 • ϚΠΫϩαʔϏε͕6*ίϯϙʔωϯτΛఏڙ͢Δ • $MJFOU͕ͦΕΛ౷߹͢Δ
JGSBNF 34 • JGSBNFΛར༻͢ΕͰ͖Δ • ֤αʔϏε௨ৗͷ)5.-Λఏڙ͢Δ • QPTU.FTTBHFͰΓͱΓ͢Δ
ڀۃͷ.JDSP'SPOUFOET 35 • ͦΕ8FC$PNQPOFOUTͰͰ͖ΔΑ • ֤αʔϏε$VTUPN&MFNFOUTΛఏڙ͢Δ • $VTUPN&WFOUTͰΓͱΓ͢Δ
.JDSP'SPOUFOETͷͱରࡦ 36 • 6* 69 ͷҰ؏ੑΛ୲อ͢Δͷ͕͍͠ • ΨΠυϥΠϯ6*ϥΠϒϥϦͰରॲ • খ͞ͳ'SPOUFOEνʔϜ͕
$MJFOUͱελΠϧΨΠυΛϝϯςφϯε͢Δ
.JDSP'SPOUFOETͷ͓ؾ࣋ͪ 37 • αʔϏεͷಠཱੑͱҰ؏ੑຊ࣭తʹτϨʔυΦϑ • τϨʔυΦϑΛཧղ͠ɺͦΕͧΕͰదͳબΛ • #''ͱͷϋΠϒϦουख๏औΕΔ • αʔϏεͷڥքͰ6*͕໌֬ʹ͔ΕΔͷɺ
αʔϏε͕6*࣋ͭ • ͦ͏Ͱͳ͍ͷ#''Ͱ"1*߹
ϋΠϒϦουख๏ 38
8FCҎ֎ͷ 39 • ωΠςΟϒΞϓϦͰʁ • جຊతʹ αʔϏε͕6*ΛఏڙͰ͖ͳ͍ • $MJFOUͷϞδϡʔϧԽΛۃྗϚΠΫϩαʔϏεͷ୯Ґʹ ߹Θ͍ͤͯ͘
• ߹ʹΑͬͯ8FC7JFX͋Δ
·ͱΊ 40 • ϚΠΫϩαʔϏεɺ֤ϏδωεΛಠཱͯ͠ߴʹ1%$" Λճ͍ͯͨ͘͠Ίͷख๏ • #''ɺϚΠΫϩαʔϏεͷ"1*౷߹Λߦ͏ • ֤'SPOUFOEͷॴ༗ͱͯ͠࡞Δ͜ͱͰɺ#BDLFOEͷಠཱੑ Λ୲อͨ͠··'SPOUFOE͕ࣗ༝ʹѻ͑Δ
• #''31$తͳ"1*ఏڙΛ͖ͩ͢ ࡶͳఏى • ͞ΒʹϏδωεͷಠཱΛߴΊΔख๏͕͋ΓɺτϨʔυ Φϑ͕ଘࡏ͢Δ