Slide 1

Slide 1 text

@sosomuse TiDB Serverless ~理想のServerless DBを考える~

Slide 2

Slide 2 text

自己紹介 普段はWebサービス開発してます。 最近はAWS CDK,CDKTFが推しです。 西村 爽 So Nishimura フロントエンド: React バックエンド: Go,TypeScript インフラ: AWS,Cloudflare @sosomuse

Slide 3

Slide 3 text

アジェンダ 2. TiDB Serverlessとは 3. Cloudflare Workers&TiDB Serverless 1. なぜServerless DBなのか

Slide 4

Slide 4 text

皆さんサーバーレスなDBサービス使ってますか? 突然ですが

Slide 5

Slide 5 text

メインで使っているDBサービス RDB(Amazon Aurora) NoSQL(Amazon DynamoDB) その他(Redisなど。ここでは扱わない) メインで使ってきた(使っている)DBサービス

Slide 6

Slide 6 text

RDB(Amazon Aurora) 実家のような安心感 SQLが書ける!! 設計の知見が豊富 課題 いいところ スケーリング問題 常時稼働でコストが発生。開発環境の料金嵩みがち マネージドとはいえ運用管理の手間が発生しがち

Slide 7

Slide 7 text

NoSQL(Amazon DynamoDB) サーバーレス!! 高速な読み書き トランザクション(上限あり) 強整合性サポート(条件付き) 課題 いいところ 設計が難しい! 検索が制限されるので、RDBに逃がすなど調整が必要になる

Slide 8

Slide 8 text

理想のDBサービスって? サーバーレスであること トランザクション・強整合性 運用コストは掛けたくない 低コスト RDB程度の検索機能&パフォーマンス 個人的にSQLも書けるとグッド! マネージドサービス 従量課金 オートスケーリング

Slide 9

Slide 9 text

どんな選択肢を考えた?① Amazon Aurora Serverless(v2) Auroraから移行するなら一番適性あり エッジ上で動作するSQLiteベースのDB 最大DBサイズ10GBやクエリ実行時間30秒など制限あり https://developers.cloudflare.com/d1/platform/limits/ それなりに最低料金がかかる バージニア北部: 約$43/月 東京: 約$73/月 Cloudflare D1

Slide 10

Slide 10 text

どんな選択肢を考えた?② Supabase BaaS(DB内包) サーバレスなMySQLサービス Aurora Serverlessと同じく最低料金がかかる フロントエンドから呼び出してバックエンドはSupabaseということも可能 独自的な設計は必要になる PlanetScale

Slide 11

Slide 11 text

どんな選択肢を考えた?③ CockroachDB Serverless NewSQL NewSQL MySQL互換 PostgreSQL互換 TiDB Serverless(今回試してみる)

Slide 12

Slide 12 text

アジェンダ 2. TiDB Serverlessとは 3. Cloudflare Workers&TiDB Serverless 1. なぜServerless DBなのか

Slide 13

Slide 13 text

TiDBとは NewSQL(分散型DB) OSS MySQL互換 SQLで書ける https://github.com/pingcap/tidb 一部違いはあるが、大抵の場合困ることは無い印象 https://docs.pingcap.com/ja/tidbcloud/mysql-compatibility#unsupported-features トランザクション・強整合性 スケーラビリティ MySQL互換

Slide 14

Slide 14 text

TiDB構成 参考: [変化と挑戦:NoSQLとNewSQL Serverless Databaseの技術革新とマルチテナンシーの秘密] ( ) https://speakerdeck.com/yoshiitaka/serverless-database

Slide 15

Slide 15 text

TiDB Serverless サーバーレス!! 現状 Provider が AWS のみ セルフホストのTiDBやDedicatedに比べていくつか制限あり シングルAZ Public接続 or AWS Private Link経由で接続

Slide 16

Slide 16 text

アジェンダ 2. TiDB Serverlessとは 3. Cloudflare Workers&TiDB Serverless 1. なぜServerless DBなのか

Slide 17

Slide 17 text

前提 社内の技術実験用プロジェクトで試してみる テックブログのようなもの API Server: ECS&NestJS→Cloudflare Workers×Hono DB: DynamoDB→TiDB Serverless 置き換えと検証が一通り終わったらどこかで資料にしたい 実験プロジェクトなのでダイナミックに置き換える 本スライドではWorkersとTiDBの接続のところまで

Slide 18

Slide 18 text

WorkersとTiDBの接続 TiDB公式ドキュメントで接続方法がサポートされている https://docs.pingcap.com/tidbcloud/integrate-tidbcloud-with-cloudflare/ Public接続

Slide 19

Slide 19 text

(2)スナップショットテストの導入 Workers作成

Slide 20

Slide 20 text

(2)スナップショットテストの導入 接続確認用コード

Slide 21

Slide 21 text

(2)スナップショットテストの導入 DATABASE_URLのenv追加 TiDB Cloudから取得したDBのPublic URLをWorkersのEnvに追加 WorkersのURLにアクセスしてデータが取れていることを確認

Slide 22

Slide 22 text

ご静聴ありがとうございました