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
TypeScriptのバックエンド開発について
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
mimu
October 21, 2024
Programming
68
0
Share
TypeScriptのバックエンド開発について
mimu
October 21, 2024
More Decks by mimu
See All by mimu
マルチレポだってスキーマ駆動開発がしたい!
mmrakt
0
67
lt.pdf
mmrakt
0
35
npm/Yarn/pnpmゆるふわ解説
mmrakt
0
1.4k
Type Script型パズル(?)超入門
mmrakt
0
99
まだWebpackで消耗してるの?
mmrakt
0
98
Other Decks in Programming
See All in Programming
tRPCの概要と少しだけパフォーマンス
misoton665
2
270
決定論 vs 確率論:Gemini 3 FlashとTF-IDFを組み合わせた「法規判定エンジン」の構築
shukob
0
160
ついに来た!本格的なマルチクラウド時代の Google Cloud
maroon1st
0
420
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
300
mruby on C#: From VM Implementation to Game Scripting (RubyKaigi 2026)
hadashia
2
1.8k
Kingdom of the Machine
yui_knk
2
1.5k
AI時代だからこそ「Bloc」を採用する価値があるのかもしれない
takuroabe
0
160
運転動画を検索可能にする〜Cosmos-Embed1とDatabricks Vector Searchで〜/cosmos-embed1-databricks-vector-search
studio_graph
1
740
SREに優しいTerraform構成 modulesとstateの組み方
hiyanger
2
170
Surviving Black Friday: 329 billion requests with Falcon!
ioquatix
0
3k
Spec Driven Development | AI Summit Vilnius
danielsogl
PRO
1
150
Making the RBS Parser Faster
soutaro
0
710
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.3k
Discover your Explorer Soul
emna__ayadi
2
1.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
A Soul's Torment
seathinner
6
2.8k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
110
Statistics for Hackers
jakevdp
799
230k
A Tale of Four Properties
chriscoyier
163
24k
From π to Pie charts
rasagy
0
180
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
210
Become a Pro
speakerdeck
PRO
31
5.9k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
Transcript
TSのバックエンド開発に ついて
TOC - やってきたこと - 今後の課題 - まとめ
Challenges 1. AWS Lambda を用いた非同期処理実装 2. API 定義からTypeScriptの型生成&パッケージ共 有
Lambdaを用いた 非同期処理① - 「データの整合性をチェックしてExcel出力する機能」の処理が非常に重く、BE APIからのレスポンスでタイムアウトが発生 - FE ➡ BE APIの同期処理から、Lamdbaを用いた非同期処理に移行
- フロント->バックエンドAPIからLambdaをキックし(正確にはSNSを経由)、フ ロントに一旦レスポンスを返す - フロントから手動でポーリングし、LambdaによるExcel生成処理が終了して いればDL用のリンクを返す
Lambdaを用いた非同期処理② - 非同期化するも処理が想定以上に重く、今度は Lambdaがタイムアウト(Max15min) - ワークフロー構築サービスの AWS Step Functionsを用いてLambdaを処理単 位で分割&ボトルネック部分を並列実行させること
で何とかタイムアウトを解消
Lambdaを用いた非同期処理② - 非同期化するも処理が想定以上に重く、今度は Lambdaがタイムアウト(Max15min) - ワークフロー構築サービスの AWS Step Functionsを用いてLambdaを処理単 位で分割&ボトルネック部分を並列実行させること
で何とかタイムアウトを解消 ここまで辿り着くのに 2~3ヶ月費やすも、 ステークホルダーの信頼獲得&メンバーのレベル アップに繋がった(はず)
None
API定義からTSの型生成&パッケージ共有① - 機能開発の流れ - APIスキーマ定義->FEはそれを元にMSWのモックを利用して 開発 - 状況 - FEとBEどちらもTypeScriptを採用しているが、別repo(マルチ
レポジトリ)に別れており、型定義が共有できない問題 - 特にAPI周りのほぼ同じ型定義を自前で書いており、メンテコ ストが肥大化
API定義からTSの型生成&パッケージ共有① - APIのスキーマから型定義を自動で生成させる - Orvalを採用(他はopenapi-typescript、 swagger-typescript-apiなど色々存在) - 型定義をNpmパッケージ化し、GitHub Packagesでプライベート に公開することでFE・BE(その他repo)で利用可能に
- 残課題はあるものの、スキーマ駆動開発の土台は完成
Problems - BE Appのアーキテクチャ再考 - NoSQLのテーブル設計 - スキーマ駆動開発の推進 - CICD
強化 - Lambda は未だ温かみのある手動デプロイ - …etc
Problems - BE Appのアーキテクチャ再考 - NoSQLのテーブル設計 - スキーマ駆動開発の推進 - CICD
強化 - Lambda は未だ温かみのある手動デプロイ - …etc
BE Appのアーキテクチャ再考 - 現状はDDD(ドメイン駆動設計)を意識した(っぽい)アーキテクチャ で設計されているが、色々と柔い - ドメイン層からビジネスルールが漏れまくっていたり、ユースケースが入力 バリデーションからAPIレスポンス整形まで全部担ってしまったり。。。 - アーキテクチャに関する意思決定の証跡が残っていない問題。。
➡ADR活用中!
BE Appのアーキテクチャ再考 NBX主導のFEの大規模リファクタリングの成功に倣って、BEの リファクタも成功させたい! BEの設計について知見のあるエンジニアが少なく。。我こそはと いう方がもしいれば🙏🙏🙏
NoSQL(DynamoDB)のテーブル設計 - DBにDynamoDBを使用しているが、RDBとは思想や設計手法が 大きく異なる - テーブル数は極力少なく、正規化もしない(重複可) - RDBほどSQLの柔軟性がなく、セカンダリインデックスの活用等テクニック が求められる -
ちなみに採用した経緯も正確には不明。。
NoSQL(DynamoDB)のテーブル設計 - 現状はユーザー(とデータ量)も少ないため割とカジュアルに本番 データを入れ替えたり設計変更しているが、今後は事前の入念な 設計が必要になる - 本来スキーマレスではあるものの、テーブル設計の都合にア プリ側が引っ張られて非効率なコードが生まれている状況
Summary - 色々とチャレンジを成功させているものの、問題は山積み。。 - FE領域では既に信頼を獲得しているので、BEやインフラ周 りまで染み出せるとより評価は上がる! - 我々はFEが強みだが、BEもできるぜ!な人がより増えると CLの信頼はきっと上がるはず!