$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TypeScriptのバックエンド開発について
Search
mimu
October 21, 2024
Programming
0
64
TypeScriptのバックエンド開発について
mimu
October 21, 2024
Tweet
Share
More Decks by mimu
See All by mimu
マルチレポだってスキーマ駆動開発がしたい!
mmrakt
0
56
lt.pdf
mmrakt
0
26
npm/Yarn/pnpmゆるふわ解説
mmrakt
0
1.2k
Type Script型パズル(?)超入門
mmrakt
0
78
まだWebpackで消耗してるの?
mmrakt
0
88
Other Decks in Programming
See All in Programming
Developing static sites with Ruby
okuramasafumi
0
310
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
130
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
350
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
390
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
110
UIデザインに役立つ 2025年の最新CSS / The Latest CSS for UI Design 2025
clockmaker
18
7.5k
sbt 2
xuwei_k
0
300
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
7
2.2k
関数実行の裏側では何が起きているのか?
minop1205
1
710
ハイパーメディア駆動アプリケーションとIslandアーキテクチャ: htmxによるWebアプリケーション開発と動的UIの局所的適用
nowaki28
0
430
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
150
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Facilitating Awesome Meetings
lara
57
6.7k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Why Our Code Smells
bkeepers
PRO
340
57k
Side Projects
sachag
455
43k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
740
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の信頼はきっと上がるはず!