Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
TiDB Serverless ~理想のServerless DBを考える~
soso
July 09, 2024
Programming
1
150
TiDB Serverless ~理想のServerless DBを考える~
soso
July 09, 2024
Tweet
Share
More Decks by soso
See All by soso
AWS CDKを4〜5年使ってたどり着いた最新構成
soso_15315
1
720
Next.jsで作ったブログ内に リンクカードを実装したときの知見
soso_15315
3
560
Reactにおける再レンダリングパフォーマンスチューニングの考え方と実践
soso_15315
2
290
React Hooks公開から1年で得られた知見
soso_15315
1
470
Other Decks in Programming
See All in Programming
Introduction of Happy Eyeballs Version 2 (RFC8305) to the Socket library
coe401_
0
210
Async Await: Mastering Python's Time-Bending Tricks - EuroPython2024
yanbo
1
240
さきがけから振り返るアーキテクチャ刷新 / Reflecting on the Architectural Renewal from the Vanguard
nrslib
2
560
APIのない大学ログインWebサービスをWKWebViewとJavaScriptでアプリ化した話
akidon0000
1
330
小さな開発会社を作った理由
polidog
0
1.5k
しくじり先生 Image Matching Challenge 2024 編
goosehaaan
0
760
CSC307 Lecture 11
javiergs
PRO
0
220
CSC307 Lecture 04
javiergs
PRO
0
260
Google Cloud で プロダクト開発 事業として成長させるZennの例 / grows-zenn-with-google-cloud
wadayusuke
3
330
I/O Extended Android in Korea 2024 ~ Whats new in Android development tools
pluu
0
220
最古の関数型言語「Lisp」ことはじめ / lisp_in_kamiyama
uhooi
1
180
Microservices rules (July 2024) : what good looks like
cer
PRO
0
1.4k
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
178
21k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
Facilitating Awesome Meetings
lara
46
5.8k
Faster Mobile Websites
deanohume
303
30k
Being A Developer After 40
akosma
72
580k
Building Effective Engineering Teams - LeadDev
addyosmani
47
2.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
228
16k
Git: the NoSQL Database
bkeepers
PRO
423
64k
Web development in the modern age
philhawksworth
203
10k
Designing for Performance
lara
604
67k
Atom: Resistance is Futile
akmur
261
25k
Building a Scalable Design System with Sketch
lauravandoore
458
32k
Transcript
@sosomuse TiDB Serverless ~理想のServerless DBを考える~
自己紹介 普段はWebサービス開発してます。 最近はAWS CDK,CDKTFが推しです。 西村 爽 So Nishimura フロントエンド: React
バックエンド: Go,TypeScript インフラ: AWS,Cloudflare @sosomuse
アジェンダ 2. TiDB Serverlessとは 3. Cloudflare Workers&TiDB Serverless 1. なぜServerless
DBなのか
皆さんサーバーレスなDBサービス使ってますか? 突然ですが
メインで使っているDBサービス RDB(Amazon Aurora) NoSQL(Amazon DynamoDB) その他(Redisなど。ここでは扱わない) メインで使ってきた��使っている)DBサービス
RDB(Amazon Aurora) 実家のような安心感 SQLが書ける!! 設計の知見が豊富 課題 いいところ スケーリング問題 常時稼働でコストが発生。開発環境の料金嵩みがち マネージドとはいえ運用管理の手間が発生しがち
NoSQL(Amazon DynamoDB) サーバーレス!! 高速な読み書き トランザクション(上限あり) 強整合性サポート(条件付き) 課題 いいところ 設計が難しい! 検索が制限されるので、RDBに逃がすなど調整が必要になる
理想のDBサービスって? サーバーレスであること トランザクション・強整合性 運用コストは掛けたくない 低コスト RDB程度の検索機能&パフォーマンス 個人的にSQLも書けるとグッド! マネージドサービス 従量課金 オートスケーリング
どんな選択肢を考えた?① Amazon Aurora Serverless(v2) Auroraから移行するなら一番適性あり エッジ上で動作するSQLiteベースのDB 最大DBサイズ10GBやクエリ実行時間30秒など制限あり https://developers.cloudflare.com/d1/platform/limits/ それなりに最低料金がかかる バージニア北部:
約$43/月 東京: 約$73/月 Cloudflare D1
どんな選択肢を考えた?② Supabase BaaS(DB内包) サーバレスなMySQLサービス Aurora Serverlessと同じく最低料金がかかる フロントエンドから呼び出してバックエンドはSupabaseということも可能 独自的な設計は必要になる PlanetScale
どんな選択肢を考えた?③ CockroachDB Serverless NewSQL NewSQL MySQL互換 PostgreSQL互換 TiDB Serverless(今回試してみる)
アジェンダ 2. TiDB Serverlessとは 3. Cloudflare Workers&TiDB Serverless 1. なぜServerless
DBなのか
TiDBとは NewSQL(分散型DB) OSS MySQL互換 SQLで書ける https://github.com/pingcap/tidb 一部違いはあるが、大抵の場合困ることは無い印象 https://docs.pingcap.com/ja/tidbcloud/mysql-compatibility#unsupported-features トランザクション・強整合性 スケーラビリティ
MySQL互換
TiDB構成 参考: [変化と挑戦:NoSQLとNewSQL Serverless Databaseの技術革新とマルチテナンシーの秘密] ( ) https://speakerdeck.com/yoshiitaka/serverless-database
TiDB Serverless サーバーレス!! 現状 Provider が AWS のみ セルフホストのTiDBやDedicatedに比べていくつか制限あり シングルAZ
Public接続 or AWS Private Link経由で接続
アジェンダ 2. TiDB Serverlessとは 3. Cloudflare Workers&TiDB Serverless 1. なぜServerless
DBなのか
前提 社内の技術実験用プロジェクトで試してみる テックブログのようなもの API Server: ECS&NestJS→Cloudflare Workers×Hono DB: DynamoDB→TiDB Serverless
置き換えと検証が一通り終わったらどこかで資料にしたい 実験プロジェクトなのでダイナミックに置き換える 本スライドではWorkersとTiDBの接続のところまで
WorkersとTiDBの接続 TiDB公式ドキュメントで接続方法がサポートされている https://docs.pingcap.com/tidbcloud/integrate-tidbcloud-with-cloudflare/ Public接続
(2)スナップショットテストの導入 Workers作成
(2)スナップショットテストの導入 接続確認用コード
(2)スナップショットテストの導入 DATABASE_URLのenv追加 TiDB Cloudから取得したDBのPublic URLをWorkersのEnvに追加 WorkersのURLにアクセスしてデータが取れていることを確認
ご静聴ありがとうございました