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
BFFとmicroservicesアーキテクチャ
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
hirac
May 19, 2022
Technology
1
770
BFFとmicroservicesアーキテクチャ
hirac
May 19, 2022
Tweet
Share
More Decks by hirac
See All by hirac
クラウドサービスベンダーのセキュリティチェックシート対応
hirac1220
0
310
スタートアップのエンジニア採用広報.pdf
hirac1220
1
330
CTOとしてプロダクト価値を上げるために実施したこと
hirac1220
1
260
フルリモート環境でのスクラム開発
hirac1220
1
550
開発リーダーとしてやったことリスト
hirac1220
0
1.6k
Other Decks in Technology
See All in Technology
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
160
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
3
210
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.2k
超初心者からでも大丈夫!オープンソース半導体の楽しみ方〜今こそ!オレオレチップをつくろう〜
keropiyo
0
120
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
FinTech SREのAWSサービス活用/Leveraging AWS Services in FinTech SRE
maaaato
0
130
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
600
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.5k
20260204_Midosuji_Tech
takuyay0ne
1
160
OpenShiftでllm-dを動かそう!
jpishikawa
0
130
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
250
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
250
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
55
Deep Space Network (abreviated)
tonyrice
0
64
How to build a perfect <img>
jonoalderson
1
4.9k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
180
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
200
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
The browser strikes back
jonoalderson
0
390
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.6k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
740
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
100
Transcript
hirac CTO@sweeep sweeep Boxにおける BFFとmicroservicesアーキテクチャ
©hirac 1 BFFとmicroservicesアーキテクチャ採用の背景 GraphQL/BFF導入のメリットと課題 まとめと今後の課題 Point 2 Point 3 Point
©hirac 3 自己紹介 { "日立": "CTスキャナの制御ソフト開発リーダー ", "フィリップス": "医療IT製品のテクサポ・技術リーダー ",
"シーメンス": "医療IT製品のPM", "オリンパス": "クラウドサービスの開発 PM", "CAPS": "電カル・AI問診など開発エンジニア ", "フリーランス": "SREやテックリード", "sweeep": "CTO" , "twitter": "@kimi_hira" }
本当に紙をやめたい人のための請求書管理ツール
©hirac 5
©hirac 6 新サービス:sweeep Box
©hirac 1 BFFとmicroservicesアーキテクチャ採用の背景 GraphQL/BFF導入のメリットと課題 まとめと今後の課題 Point 2 Point 3 Point
©hirac 8 モノリスなアーキテクチャ Web mobile Backend DB Frontend Backend
©hirac 技術負債 ・モノリスなアーキテクチャを同時修正でコンフリ ・単一DBでデータの肥大化。マイグレーションなど大変 ・凝集度が低く修正箇所漏れ
©hirac Web mobile BFF ServiceX ServiceZ DB DB Frontend BFF
Backend DB BFF & microservicesアーキテクチャ ServiceY
©hirac microservicesで技術負債の解消 ・モノリスなアーキテクチャを同時修正でコンフリ → microservicesで少人数で各service修正 ・単一DBでデータの肥大化。マイグレーションなど大変 → microservices毎にDBをもつ ・凝集度が低く修正箇所漏れ → 適切なドメインで凝集度上げる
©hirac microservicesの課題 ・複数DBにおける情報の集約化 ex. :支払情報とユーザ情報など別DB ・複数リソースにおけるFEの工数増・肥大化 ex. :上記支払情報にあるuser_idとユーザ情報を紐付け → BFFで情報の集約と紐付けを実施し、GraphQLで
集約した情報を返す(複数同時更新のユースケースも)
©hirac 複数リソースにおける情報の集約化 type Payment { """ 支払情報 """ Id: Int!
# 支払管理ID userId: Int! # 担当者ID userName: String! # 担当者名 ... } GraphQL BFF ユーザ DB 支払 DB XXX DB
©hirac 1 BFFとmicroservicesアーキテクチャ採用の背景 GraphQL/BFF導入のメリットと課題 まとめと今後の課題 Point 2 Point 3 Point
©hirac GraphQLメリット ・スキーマ駆動 & mockで並行開発 ・クエリライクで複数リクエストなしに情報を取得できる
©hirac スキーマ駆動 & mockで並行開発 ・スキーマから生成したプログラムなので齟齬がない ・MockによりClient/Server並行開発
©hirac GraphQLスキーマからClient/Server生成 $npm run graphql-codegen --config ./path/to/config.yml Client (TS) →
client/model生成 config.yml /schema: http://localhost:3000/graphql documents: ./src/**/*.graphql generates: ./src/types.ts: plugins: - typescript - typescript-operations $go run github.com/99designs/gqlgen generate BFF (Go) → resolver/model生成 gqlgen.yml schema: "*.graphql" exec: filename: generated.go model: filename: models_gen.go resolver: type: Resolver layout: follow-schema dir: . models: ...
©hirac BFFメリット ・各microservicesリソースをFEの必要な情報に束ねて返す ex.:BFFでUser情報 + 支払い情報を束ねる → FEで情報の操作が必要ない ・EndpointがBFF一箇所で済む →
ない場合はBE (microservices)を意識する必要がある
©hirac → ユーザ情報と支払情報を束ねる BFF無とBFF有の比較 (情報の集約) BFFなし BFFあり
©hirac BFF無とBFF有の比較 (Endpointの集約化) ユーザ DB 支払 DB XXX DB BFF
ユーザ DB 支払 DB XXX DB
©hirac GraphQLの課題 ・GraphQL ↔ Protobufの値の詰め替えが発生 Request:model.xxxInput → pb.xxxRequest Response:model.xxx ←
pb.xxxResponse ex. : GraphQLではintしかサポートしていない Protobufだとint32/64 → Protobuf -> GraphQL生成なども将来検討
©hirac GraphQL ↔ Protobufの値の詰め替え # ユーザ情報Input type UserInput { Id:
Int # ユーザID ... } # ユーザ情報 type User { Id: Int! # ユーザID ... } GraphQL Protobuf // ユーザ情報Request message GetUserRequest { int32 id = 1; // ユーザID ... } // ユーザ情報Response message GetUserResponse { int32 id = 1; // ユーザID ... } toPb int → int32 toGraphQL int ← int32
©hirac BFF課題 ・BFF開発分の工数増・メンテ増 ・ただmicroservices → BFF → FEと透過的に情報を渡して いるだけで冗長に感じることがある ・反面、BFFでいろいろやらせる(=やらせたくなる)と
Fatになるので気をつける → GraphQL Gateway (Apollo Federation)なども将来検討
©hirac 1 BFFとmicroservicesアーキテクチャ採用の背景 GraphQL/BFF導入のメリットと課題 まとめと今後の課題 Point 2 Point 3 Point
©hirac まとめ:GraphQL & BFFメリット ・GraphQLはスキーマ駆動・情報の集約という点でメリット ・BFFはmicroservicesのEndpointの集約・仲介役でメリット → BFFを後から入れるのはインパクトが大きく (BFFの新規開発/Web &
Mobile側の工数/インフラ etc…) 最初に決断してよかった
©hirac 後からBFF新規/Endpoint入替/情報集約... ユーザ DB 支払 DB XXX DB BFF ユーザ
DB 支払 DB XXX DB
©hirac 今後の課題 ・BFF開発分の工数増で冗長に感じることも多いが、 無いとFEで頑張らないといけなかったりする 次のサービスではGraphQL Gatewayなど検討したい ・GraphQL & BFFは現在はWeb &
Mobile共通のため、同時 リリース。共通化やアジリティを下げない仕組みに課題 → アーキテクチャにも「銀の弾丸」はないので改善し続ける
©hirac 参考資料 ・sweeep Box - 書類保管AI ・sweeep Boxで使用している技術スタック ・スタートアップのCTOとして何を考え何を変えたか ・GraphQL
Code Generator ・gqlgen ・みんなで育てる GraphQL スキーマ, それを支える Protobuf / GraphQL and Protobuf
©hirac フロントエンドエンジニア募集してます! ・ご興味のある方は下記リンクよりご応募お待ちしております! sweeep株式会社の募集・採用・求人情報 - Wantedly
©hirac まずはカジュアルに話したい方 ・下記リンクよりお申し込みください! 請求書クラウドAIの開発について共有とCTOとゆるーく雑談 ・会社の雰囲気 sweeep株式会社の働き方とストーリー - Wantedly
©hirac Thank you!