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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
[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
20260912_スクラムにジェネラリストは必要か
ryugen04
0
390
NW運用でNWトポロジ可視化ツールに期待すること/shumoku-meetup1
corestate55
2
120
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
160
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
1
460
AIで仕事のやり方を変える
matsu7874
3
1.1k
消えない 動かない 効かない
yama3133
1
120
10分で知る最近のOmarchy
komagata
0
280
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
690
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
140
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
840
2026_devsumi_ozono.pdf
o3
3
460
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
630
Featured
See All Featured
The browser strikes back
jonoalderson
0
1.7k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
320
Color Theory Basics | Prateek | Gurzu
gurzu
0
460
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
580
Why Our Code Smells
bkeepers
PRO
340
58k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
280
Game over? The fight for quality and originality in the time of robots
wayneb77
1
270
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 - ドメインを型で守るときは型定義の一貫性を保つために 依存性を意識すると開発体験向上🚀🚀🚀🚀 - リポジトリが同じか分かれているかはサービスの結合度 とは独立した概念! モノレポにするかどうかは開発体験のウェイトを大きくして検討して 良い