Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Rust製の業務WebアプリケーションをRustでリプレイス_220428
Search
[email protected]
April 28, 2022
Technology
820
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rust製の業務WebアプリケーションをRustでリプレイス_220428
[email protected]
April 28, 2022
More Decks by
[email protected]
See All by
[email protected]
製造業にRAGを導入する開発体制の変遷 / ManuAI1
caddi_eng
3
150
バラバラな見積明細と戦う話 / ManuAI2
caddi_eng
0
140
LLMに図面は読めるか – 製造業の「暗黙知」を突破するコンテキスト設計3つのアプローチ / LLMcontext
caddi_eng
1
290
「定型」を許さない製造業データへの挑戦 高度な絞り込みと意味検索を両立する実践 / ElasticON
caddi_eng
0
400
製造業ドメインにおける LLMプロダクト構築: 複雑な文脈へのアプローチ
caddi_eng
1
870
事業状況で変化する最適解。進化し続ける開発組織とアーキテクチャ
caddi_eng
1
17k
キャディでのApache Iceberg, Trino採用事例 -Apache Iceberg and Trino Usecase in CADDi--
caddi_eng
0
700
製造業の会計システムをDDDで開発した話
caddi_eng
3
2.4k
【CADDI VIETNAM】Company Deck for Engineers
caddi_eng
0
2.4k
Other Decks in Technology
See All in Technology
「図書館」という名前のままでいいのか -Code4Lib JAPANカンファレンス2026 アンカンファレンス報告- / Code4Lib JAPAN Conference 2026: Unconference Report
ykiyota
0
170
GoにおけるFFIのこれまでとこれから
goccy
5
2.5k
20260912_スクラムにジェネラリストは必要か
ryugen04
0
380
家のリアーキテクト・リファクタリング
suguruooki
0
140
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
10分で知る最近のOmarchy
komagata
0
280
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
160
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
200
Claude Code本って、 読む必要あるの?
oikon48
2
430
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
170
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
660
Code4Lib JAPANカンファレンス2026 開会挨拶 / Code4Lib JAPAN Conference 2026: Opening Remarks
ykiyota
0
350
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
The Curious Case for Waylosing
cassininazir
1
500
Skip the Path - Find Your Career Trail
mkilby
1
230
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
520
4 Signs Your Business is Dying
shpigford
187
23k
How to Talk to Developers About Accessibility
jct
2
540
How GitHub (no longer) Works
holman
316
150k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
900
Paper Plane
katiecoart
PRO
3
53k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
830
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Transcript
A B O U T Rust製の業務Webアプリケーションを Rustでリプレイス
A B O U T Rust製の業務Webアプリケーションを Rustでリプレイス のドサクサでBFF/FEを大整理した話
Ken Ogura 3 • フロントエンドエンジニア @CADDi • 受発注管理アプリケーションのBFF/FE開発 • 競技プログラミングが得意
• YouTuber
あらすじ • 受発注プロダクトBFF/FEの開発体験が下がり始めていた • BEを刷新することになったしBFF/FEも整理しよう!
技術スタック 5 5 FRONTEND ・React ・TypeScript ・Styled-Components ・Next.js ・Storybook ・Jest
・Apollo Client BFF ・TypeScript ・Node.js ・NestJS (Express) ・Apollo Server BACKEND (microservices) ・Rust ・diesel ・tonic GraphQL gRPC Infrastructure GCP, Docker, Kubernetes, Cloudflare, Datadog Event Bus Cloud Pub/Sub DevOps GitHub, CircleCI, ArgoCD, Kustomize
技術スタック 6 FRONTEND ・React ・TypeScript ・Styled-Components ・Next.js ・Storybook ・Jest ・Apollo
Client BFF ・TypeScript ・Node.js ・NestJS (Express) ・Apollo Server BACKEND (microservices) ・Rust ・diesel ・tonic GraphQL gRPC Infrastructure GCP, Docker, Kubernetes, Cloudflare, Datadog Event Bus Cloud Pub/Sub DevOps GitHub, CircleCI, ArgoCD, Kustomize ここの話をします
大整理その1 7 GraphQLを コードファーストに 統一
GraphQLをコードファーストに統一 8 • APIといえばこんな格好をしている
GraphQLをコードファーストに統一 9 • APIといえばこんな格好をしている • Schemaによってお互いのReq/Resの仕様の約束ができる
GraphQLをコードファーストに統一 10 • FE/BFF間は具体的にはこうなっている
GraphQLをコードファーストに統一 11 • オリジナルProductの最初期の依存関係はこう ◦ ServerをSchemaFirstで開発 ①スキーマを定義 ②スキーマに則って サーバを実装 凡例
GraphQLをコードファーストに統一 12 • 諸事情でこうなっていく ◦ 一部CodeFirstも生じる ②実装をもとに スキーマを自動生成 ①サーバを実装 凡例
GraphQLをコードファーストに統一 13 • 混在はまずいのでコードファーストに統一 ◦ ポリシーが統一されて開発体験向上🚀🚀 凡例
GraphQLをコードファーストに統一 14 • なぜコードファーストに統一したのか? ◦ 謎を解明するためにドメインの奥地に、、、
GraphQLをコードファーストに統一 15 • かつての依存関係はこうなっていた 凡例
GraphQLをコードファーストに統一 16 • BFFのGraphQLサーバー部分をコードファーストにすると、、、 凡例
GraphQLをコードファーストに統一 17 • BFFのGraphQLサーバー部分をコードファーストにすると、、、 ◦ 依存の方向が統一されてCleanな感じに! 凡例
GraphQLをコードファーストに統一 まとめ 18 • 実装方法のポリシーが統一された • クリーンな構造になったために責務の 切り分けを意識しやすくなった • 開発体験向上🚀🚀🚀
大整理その2 19 gRPCスキーマと BFFを 同じリポジトリで管理 ※実際のところ BEもFEも全部まとめてモノレポ化して います
モノレポ化 20 • かつては、gRPCスキーマ(ProtoBuf)を別リポジトリに管理 • 更新が大変 ◦ サブモジュールを更新し忘れて動かない ◦ PRがたくさんできる
◦ CIが複雑
モノレポ化 21 • リプレイス後はモノリポジトリに! • 開発時に行ったり来たりしなくても良い ◦ サービスのデプロイはCIで出し分ければ アーキテクチャの疎結合性は 保たれる。
その他整理 22 - GraphQLスキーマの設計、コンベンションに従う - Backにあるマイクロサービス群を オブジェクトのつながりという形でまとめあげる - BFFの責務が明確になる -
GraphQLでフィールドレベルのリゾルバを使う - N+1問題の解決をBE層まで引きずっていた過去との決別 - ほかにも細々と
まとめ 23 - ドメインを型で守るときは型定義の一貫性を保つために 依存性を意識すると開発体験向上🚀🚀🚀🚀 - リポジトリが同じか分かれているかはサービスの結合度 とは独立した概念! モノレポにするかどうかは開発体験のウェイトを大きくして検討して 良い