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
マイクロサービスとクライアント: 理想と現実の狭間で / Ideal and Reality...
Search
qsona
October 30, 2018
Technology
5
4.2k
マイクロサービスとクライアント: 理想と現実の狭間で / Ideal and Reality of microservices from the client-side
Microservices Meetup vol.9 (FiNC App & Frontend) でのウェルカムトークの資料です。
qsona
October 30, 2018
Tweet
Share
More Decks by qsona
See All by qsona
サーバー間 GraphQL と webmock-graphql の話 / server-to-server graphql and webmock-graphql
qsona
4
420
Backend エンジニア視点からの GraphQL / GraphQL from a perspective of backend engineer
qsona
27
8.3k
3 Practices about Service-to-Service GraphQL Ruby Client
qsona
1
900
いかにして GraphQL を組織に導入するか (新規開発編) / how we introduce GraphQL on scratch development
qsona
6
4k
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.3k
GraphQL を活用したスキーマ駆動開発の実践 / schema-driven development with GraphQL
qsona
6
5.2k
GraphQL を利用したアーキテクチャの勘所 / Architecture practices with GraphQL
qsona
37
15k
Other Decks in Technology
See All in Technology
Fraxinus00tw assembly manual
fukumay
0
110
IAMのマニアックな話2025
nrinetcom
PRO
4
820
4th place solution Eedi - Mining Misconceptions in Mathematics
rist
0
150
NFV基盤のOpenStack更新 ~9世代バージョンアップへの挑戦~
vtj
0
360
OSS構成管理ツールCMDBuildを使ったAWSリソース管理の自動化
satorufunai
0
650
AIエージェント時代のエンジニアになろう #jawsug #jawsdays2025 / 20250301 Agentic AI Engineering
yoshidashingo
8
3.7k
RemoveだらけのPHPUnit 12に備えよう
cocoeyes02
0
300
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
470
IoTシステム開発の複雑さを低減するための統合的アーキテクチャ
kentaro
1
120
RayでPHPのデバッグをちょっと快適にする
muno92
PRO
0
190
1行のコードから社会課題の解決へ: EMの探究、事業・技術・組織を紡ぐ実践知 / EM Conf 2025
9ma3r
11
3.9k
Goで作って学ぶWebSocket
ryuichi1208
3
2.8k
Featured
See All Featured
Speed Design
sergeychernyshev
27
810
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
430
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
GitHub's CSS Performance
jonrohan
1030
460k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
A Philosophy of Restraint
colly
203
16k
Done Done
chrislema
182
16k
Adopting Sorbet at Scale
ufuk
74
9.2k
Transcript
ϚΠΫϩαʔϏεͱΫϥΠΞϯτ: ཧͱݱ࣮ͷڱؒͰ @qsona / FiNC Technologies Inc. 2018-10-30 Microservices
Meetup vol.9 (FiNC App & Frontend)
ୈ1෦: ϚΠΫϩαʔϏεͷ݁߹ϨΠϠʔ
ϚΠΫϩαʔϏεͷྑ͞ !3 • ٕज़ҟ࣭ੑ – ͦΕͧΕ࠷దͳݴޠɾϥΠϒϥϦɾσʔλετΞΛར༻Ͱ͖Δ – ٕज़తෛ࠴ΛҾ͖ͣΓʹ͍͘ • ճ෮ੑ
(Resilience) – αʔϏεʹো͕ى͖ͯશମͷӨڹগͳ͍ • σϓϩΠͷಠཱ • খࣗ͘͞ɾಠཱͨ͠৫ – ίϛϡχέʔγϣϯύεΛݮΒ͠ɺҙࢥܾఆΛૉૣ͘
αʔϏεͷૄ݁߹͔ΒདྷΔ ߴ͍ࣗ༝ɾࣗ
αʔϏε͕ີ݁߹ʹͳΔͱ ϚΠΫϩαʔϏεͷྑ͞ফ͑Δ
ϚΠΫϩαʔϏεΛ݁߹͢Δऀୡ ... ݁߹ϨΠϠʔΛཧղ͠ɺ దʹରॲ͠ͳ͚ΕͳΒͳ͍ ࣄۀܭը, ΠϯϑϥετϥΫνϟ, ϑϩϯτΤϯυ, Ӧۀ, ԣஅతͳϏδωε, εΩϧηοτ,
σʔλੳ, ηΩϡϦςΟ, ίετϚωδϝϯτ, etc..
݁߹ͷྫ (1) ϚΠΫϩαʔϏεͱӦۀ !7 • ;ͭ͏ӦۀελοϑɺಛఆͷϚΠΫ ϩαʔϏεத৺ͷ৫ʹଐ͞ͳ͍ • ͔͠͠ɺ͠ଐ͍ͯͨ͠Βʁ –
Ӧۀελοϑ͕ࣗͷαʔϏεʹৄ͍͠ – αʔϏεͷมߋʹڧ͍ (αʔϏεʹมߋ͕͋ͬ ͨͱ͖ʹવӦۀελοϑʹप͞ΕΔ) – Ӧۀઌ͔ΒͷϑΟʔυόοΫ͕࣮ʹө͞ Ε͍͢ – αʔϏεͷڧ͍Ѫண͕࣋ͯΔ ϚΠΫϩαʔϏενʔϜA ϚΠΫϩαʔϏενʔϜB ΫϥΠΞϯτ(Ӧۀઌ)
݁߹ͷྫ (1) ϚΠΫϩαʔϏεͱӦۀ !8 • ͪΖΜ͜ΕΤϯυϢʔβʔΛແࢹ ͨ͠ص্ͷۭ – ϚΠΫϩαʔϏε(ػೳ)୯ҐͰӦۀ͞Εͯ ސ٬خ͘͠ͳ͍
– ΤϯυϢʔβʔϚΠΫϩαʔϏε͕౷߹͞ ΕͨମݧΛΜͰ͍Δ ϚΠΫϩαʔϏενʔϜA ϚΠΫϩαʔϏενʔϜB ΫϥΠΞϯτ(Ӧۀઌ)
݁߹ͷྫ (1) ϚΠΫϩαʔϏεͱӦۀ !9 • ӦۀνʔϜϚΠΫϩαʔϏεΛ౷߹ ͢Δ (݁߹ϨΠϠʔ) • νʔϜΛ·͕ͨͬͨίϛϡχέʔγϣ
ϯͷऔΓํΛߟ͑Δඞཁ͋Γ ϚΠΫϩαʔϏενʔϜA ϚΠΫϩαʔϏενʔϜB ΫϥΠΞϯτ(Ӧۀઌ) ӦۀνʔϜ
݁߹ͷྫ (2) ϚΠΫϩαʔϏεͱԣஅϏδωε !10 • ෳͷϚΠΫϩαʔϏεΛԣஅతʹར༻͢Δ ϏδωεϞσϧ • FiNCͰͷྫ: ಛεϚʔτΞϓϦ
– ಛఆͷܦ࿏͔ΒΞϓϦΛΠϯετʔϧ͢Δͱ ಛϢʔβʔʹͳΓɺ ಛઐ༻ΦϯϘʔσΟϯά͕࢝·Δ – ಛઐ༻ϛογϣϯ͕ղ์͞ΕΔ – ಛϢʔβʔ༻ʹΧελϚΠζ͞Εͨ push௨͕৴͞ΕΔ
݁߹ͷྫ (2) ϚΠΫϩαʔϏεͱԣஅϏδωε !11 • ෳͷϚΠΫϩαʔϏεΛԣஅతʹར༻͢Δ ϏδωεϞσϧ • FiNCͰͷྫ: ಛεϚʔτΞϓϦ
– ಛఆͷܦ࿏͔ΒΞϓϦΛΠϯετʔϧ͢Δͱ ಛϢʔβʔʹͳΓɺ ಛઐ༻ΦϯϘʔσΟϯά͕࢝·Δ – ಛઐ༻ϛογϣϯ͕ղ์͞ΕΔ – ಛϢʔβʔ༻ʹΧελϚΠζ͞Εͨ push௨͕৴͞ΕΔ • User Tag αʔϏε • Onboarding αʔϏε • Mission αʔϏε • Push௨ αʔϏε ͦΕͧΕ͕ ϚΠΫϩαʔϏεʹରԠ
݁߹ͷྫ (2) ϚΠΫϩαʔϏεͱԣஅϏδωε !12 • ίϛϡχέʔγϣϯܦ࿏͕ෳࡶʹͳΔ • ͷॴࡏ͕͍͋·͍ʹͳΓ͕ͪ – ֤αʔϏε͝ͱʹରԠࡁ·͍ͤͯΔ͕…
– end-to-end ͰͷڍಈͷνΣοΫ͕ෆेͩͬͨΓ – ʮಛεΩʔϜʯͱ͍͏ମݧͷશମΛୡ͢ΔͨΊͷϘʔϧ͕མ͍ͪ͢ • ༏ઌॱҐ͚ͮͷ – ࣗͷαʔϏεͷλεΫͱͲͪΒΛ༏ઌͤ͞Δͷ͔ – ಛͷ߹ʮ༏ઌॱҐ͕࠷ߴʯͰ͋Δ͜ͱ͕໌Β͔ͩͬͨͷͰɺ ͦ͜·ͰͰͳ͔ͬͨ
ୈ1෦ ·ͱΊ !13 • ͯ͢ͷϚΠΫϩαʔϏε͕ૄ݁߹ͳͷ͕ཧ – ٕज़ҟ࣭ੑ, খنͰࣗͨ͠৫, etc... •
ϚΠΫϩαʔϏεΛ݁߹͍ͯ͠ΔϨΠϠʔͷଘࡏ͕ݱ࣮ • ݁߹ʹΑΓى͖͏Δʹର͠ɺదʹରॲ͢Δඞཁ͕͋Δ – (۩ମࣄྫʹର͢Δղܾࡦɺࠓճ৮Ε·ͤΜ) – ͜ͷ2ͭͷࣄྫʹରͯ͋͠·Γ brilliant ͳղܾࡦͳ͍ɺͱ͍͏ҹ
ୈ2෦: ϑϩϯτΤϯυͰͷ݁߹
ϑϩϯτΤϯυ (Web, Native App, ...) ϚΠΫϩαʔϏεͷ݁߹ϨΠϠʔ
ϑϩϯτΤϯυͰͷ݁߹ !16 • ϑϩϯτΤϯυΤϯδχΞ ΤϯυϢʔβʔΛ࠷ڧ͘ҙࣝ͢Δ – ΤϯυϢʔβʔ͕ݟ͍ͨͷϚΠΫϩαʔϏεͰͳ͍ – ౷߹͞ΕͨϢʔβʔମݧ
ϑϩϯτΤϯυͰͷ݁߹ !17 (ҎԼɺຊจΑΓҾ༻) ʮFOLIOͰɺBackends For FrontendsʢBFFʣΛ࠾༻͍ͯ͠Δ ͷͰ͕͢ɺ͜ΕʹΑͬͯ͞·͟·ͳαʔϏεAPIΛఏڙ͢Δࡍ ͷΛΞʔΩςΫνϟతʹղܾ͠Α͏ͱࢼΈ͍ͯ·͢ɻ(தུ) FOLIOͷαʔϏεͰɺޱ࠲Λཧ͢ΔɺגՁΛදࣔ͢Δͱ͍ͬ ͨػೳ͕ɺͦΕͧΕϚΠΫϩαʔϏεͱͯ͠ػೳ͍ͯ͠·͢ɻҰ
ํͰɺϢʔβʔ͕ݟΔը໘͔ΒݸผͷαʔϏεΛݺͼग़͢ͱɺ ϒϥβͷෛՙ͕ߴ·ΓɺੑೳྼԽͳͲͷΛҾ͖ىͯ͜͠ ͠·͍·͢ɻBFFͰ֤ϚΠΫϩαʔϏεͷݺͼग़͠Λू͢Δ͜ ͱͰɺ͜ΕΒͷΛղܾ͍ͯ͠·͢ɻ·ͨBFFΛઃ͚Δ͜ͱ ͰɺαʔϏεUIͷ౷ҰײΛอ͍ͪ͢ͱ͍͏ར͋Γ·͢ɻϚ ΠΫϩαʔϏεͰଟذʹΘͨΔػೳ͕ͦΕͧΕಠཱͯ͠ಈ͍͍ͯ ͯɺϑϩϯτΤϯυͰɺͦΕΛूͯ͠1ຕͷը໘ͰݟͤΔɻ Ϣʔβʔ͕ཉ͍͠ͷ͋͘·Ͱը໘Λ௨ͨ͡“ମݧ”ͳͷͰɺͦ ΕΛεϜʔζʹఏڙ͢ΔͨΊʹ֤෦ॺͱ࿈ܞͯ͠ϑϩϯτΤϯυ ͷҰຕͷը໘ʹू͢Δɻ͔֬ʹ͜ΕϋϒతͳׂͰ͢Ͷʯ ϑϩϯτΤϯυΤϯδχΞશମΛͭͳ͙“ϋϒ”ͷΑ͏ͳଘࡏ ΤϯδχΞʹٻΊΒΕΔίϛϡχέʔγϣϯೳྗɹࣾͷ“ϋϒ”ͱͯ͠ػೳ͢ΔϑϩϯτΤϯυΤϯδχΞϦϯάʔFOLIO ݟ ༸ีࢯ - Forkwell Press
FiNC͕औΓΜͰ͖ͨ͜ͱ • APIͷϦιʔεࢦԽ • APIΨΠυϥΠϯ • iOS/AndroidͷઃܭΛἧ͑Δ • ৫ͷϦϑΝΫλϦϯά (ϏδωεͰνʔϜׂ͠ɺΫϥΠΞϯτΤϯδχΞͱ
αʔόʔΤϯδχΞ͕ಉ͡νʔϜͰ։ൃ) • Backends for Frontends • Micro Frontends ※͍ͣΕࠓͷΠϕϯτͷத Ͱ৮ΕΔτϐοΫͰ͢
APIͷϦιʔεࢦԽɾAPIΨΠυϥΠϯ !19 • Backend API ڧ͘ϦιʔεΛҙࣝ͢Δ – ಉ͡υϝΠϯΛද͢ͳΒಉ͡ܗࣜ • Backend
API ͷܗࣜΛͰ͖Δ͚ͩἧ͑Δ – ϖʔδϯάͳͲ – جຊతʹنΛकΔ͚ͩͰ͍͍ͷͰɺ όοΫΤϯυͷࣗ༝͕ୣΘΕΔΘ͚Ͱͳ͍ • Ͳ͏ͯ͠ඞཁͳΒҳͰ͖Δ • ͦͦAPI͕ྑ͘ఆٛ͞Ε͍ͯͳ͍ͱɺ ΫϥΠΞϯτͰͷ݁߹ͷෛ୲͕૿͑Δ
Backends For Frontends ͱ Micro Frontends !20 • ΞʔΩςΫνϟ͔Βͷ2ͭͷΞϓϩʔν –
ͨͩ͠ɺํੑେ͖͘ҟͳΔ • Backends For Frontends ... ੵۃతʹ݁߹ΛҾ͖ड͚ɺෳࡶ͞ʹରॲ • Micro Frontends ... ݁߹ϨΠϠʔΛϑϩϯτΤϯυͷUIʹͣΒ͠ɺബ͘͢Δ
ΤϯυϢʔβʔʹͱͬͯͷཧ ։ൃऀɾ৫ʹͱͬͯͷཧ ͦΕΒΛݱ࣮ʹམͱ͠ࠐΉ