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
350
Backend エンジニア視点からの GraphQL / GraphQL from a perspective of backend engineer
qsona
28
8.1k
3 Practices about Service-to-Service GraphQL Ruby Client
qsona
1
830
いかにして 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.1k
GraphQL を活用したスキーマ駆動開発の実践 / schema-driven development with GraphQL
qsona
6
5k
GraphQL を利用したアーキテクチャの勘所 / Architecture practices with GraphQL
qsona
37
15k
Other Decks in Technology
See All in Technology
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
OCI Vault 概要
oracle4engineer
PRO
0
9.7k
隣接領域をBeyondするFinatextのエンジニア組織設計 / beyond-engineering-areas
stajima
1
270
Why does continuous profiling matter to developers? #appdevelopercon
salaboy
0
180
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
380
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
Python(PYNQ)がテーマのAMD主催のFPGAコンテストに参加してきた
iotengineer22
0
470
Terraform Stacks入門 #HashiTalks
msato
0
350
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
490
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
230
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
3
180
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
KATA
mclloyd
29
14k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Writing Fast Ruby
sferik
627
61k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Designing the Hi-DPI Web
ddemaree
280
34k
Agile that works and the tools we love
rasmusluckow
327
21k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
840
Automating Front-end Workflow
addyosmani
1366
200k
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*ఏڙΛ͖ͩ͢ ࡶͳఏى • ͞ΒʹϏδωεͷಠཱΛߴΊΔख๏͕͋ΓɺτϨʔυ Φϑ͕ଘࡏ͢Δ