Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DMMプラットフォームにおけるTiDBの導入から運用まで

pospome
July 04, 2024

 DMMプラットフォームにおけるTiDBの導入から運用まで

TiDB User Day 2024の登壇資料です。

pospome

July 04, 2024
Tweet

More Decks by pospome

Other Decks in Programming

Transcript

  1. 目次 1. New SQLを採用した背景 2. Google Cloud Spanner vs TiDB/TiDB

    Cloud 3. TiDB Cloudで本番アプリケーションを運用してみて実際どうか
  2. 目次 1. New SQLを採用した背景 2. Google Cloud Spanner vs TiDB/TiDB

    Cloud 3. TiDB Cloudで本番アプリケーションを運用してみて実際どうか
  3. New SQLの特徴 • RDBに比べるとレイテンシは高くなる。 ◦ ノード間の通信が発生する。 ◦ データが複数のノードに分散する。 ◦ レプリカ間の整合性を取る処理が必要になる。

    • 費用が高くなる傾向にある。 ◦ 同じリソース量の場合はRDBの方が高いパフォーマンスを出せる。 • MySQL, NoSQLの上位互換ではない。 ◦ 適材適所である。
  4. TiDB Cloudについて • TiDBを開発しているPingCAPが提供するDBaaSである。 • AWS, Google Cloud に対応している。 •

    WebUIの管理画面がある。 クラスターのスケールアップや各種メトリクスが確認できる。
  5. 目次 1. New SQLを採用した背景 2. Google Cloud Spanner vs TiDB/TiDB

    Cloud 3. TiDB Cloudで本番アプリケーションを運用してみて実際どうか
  6. Spanner vs TiDB/TiDB Cloud 1. システムアーキテクチャ 2. パフォーマンス 3. 既存DBとの互換性

    4. OLAP(オンライン分析処理) 5. ローカル開発 6. クラウド費用 7. GCPとの連携
  7. Spanner vs TiDB/TiDB Cloud 1. システムアーキテクチャ 2. パフォーマンス 3. 既存DBとの互換性

    4. OLAP(オンライン分析処理) 5. ローカル開発 6. クラウド費用 7. GCPとの連携
  8. Spanner vs TiDB/TiDB Cloud 1. システムアーキテクチャ 2. パフォーマンス 3. 既存DBとの互換性

    4. OLAP(オンライン分析処理) 5. ローカル開発 6. クラウド費用 7. GCPとの連携
  9. Spanner vs TiDB/TiDB Cloud 1. システムアーキテクチャ 2. パフォーマンス 3. 既存DBとの互換性

    4. OLAP(オンライン分析処理) 5. ローカル開発 6. クラウド費用 7. GCPとの連携
  10. Spanner vs TiDB/TiDB Cloud 1. システムアーキテクチャ 2. パフォーマンス 3. 既存DBとの互換性

    4. OLAP(オンライン分析処理) 5. ローカル開発 6. クラウド費用 7. GCPとの連携
  11. OLAP(オンライン分析処理) • New SQLはデータが複数のノードに散るので、 各種分析に必要な集計処理(sum, average, etc)が苦手である。 ◦ RDBも得意というわけではない。 •

    TiDBは分析処理をサポートしている(HTAP)。 TiFlash(列指向のストレージコンポーネント)を 導入することによってOLAPが可能になる。
  12. TiFlashのコスパについて • TiFlashノードを常時稼働させる必要があるのでコスパは微妙。 ◦ 推奨環境は CPU 48コア, Memory 128GB, 2ノード

    である。 • 可用性を気にしないなら1ノードでも問題ない。 ◦ 分析用途なら1ノードでもよさそう。 ◦ TiDB Cloudの最小構成だと月額980ドルくらい。
  13. SpannerとBigQueryの連携 • Change Streamsを利用してデータをBQに連携する。 ◦ Spannerから送られる更新情報を DataflowやストリーミングのAPIを利用してBQに連携する。 • BQのクエリ連携を利用する。 ◦

    BQがSpannerのデータを直接クエリする(コピーしない)。 ◦ BQネイティブに比べるとパフォーマンスが劣る可能性がある。 ◦ BQがサポートしないデータ型は扱えない。 別の型にキャストする必要がある。
  14. Spanner vs TiDB/TiDB Cloud 1. システムアーキテクチャ 2. パフォーマンス 3. 既存DBとの互換性

    4. OLAP(オンライン分析処理) 5. ローカル開発 6. クラウド費用 7. GCPとの連携
  15. ローカル開発 • TiDBはtiupというCLIツールを利用すると、 ローカルPCに軽量な形でTiDBを立ちあげることができる。 ◦ 本物のTiDBが立ち上がるので各種検証にも利用できる。 ◦ OSSならではのメリットである。 • Spannerは開発/テスト用途のエミュレーターを提供している。

    ◦ 本番相当のAPIを提供しているがあくまでエミュレーターである。 ◦ SpannerはクライアントとgRPCで通信するので、 本物のSpannerを立ててローカルからアクセスすればいーのでは。
  16. Spanner vs TiDB/TiDB Cloud 1. システムアーキテクチャ 2. パフォーマンス 3. 既存DBとの互換性

    4. OLAP(オンライン分析処理) 5. ローカル開発 6. クラウド費用 7. GCPとの連携
  17. Spanner vs TiDB/TiDB Cloud 1. システムアーキテクチャ 2. パフォーマンス 3. 既存DBとの互換性

    4. OLAP(オンライン分析処理) 5. ローカル開発 6. クラウド費用 7. GCPとの連携
  18. 結論:Google Cloud Spanner vs TiDB • Spannerの方が完成度が高い。 • Googleの資金力や開発力に勝つのは難しい。 ◦

    特にインフラも含めて最適化されている点はどうしようもない。 • クラウドサービスとしての品質もGoogle Cloudには敵わない。 ◦ 今まで積み上げてきた実績やエコシステムが存在する。
  19. 目次 1. New SQLを採用した背景 2. Google Cloud Spanner vs TiDB/TiDB

    Cloud 3. TiDB Cloudで本番アプリケーションを運用してみて実際どうか
  20. 目次 1. TiDB Cloudは安定して動くのか 2. コスパはどう? 3. バージョンアップ戦略 4. MySQL互換が嬉しい

    5. 意外と便利なTTL機能 6. 監視 7. Redis廃止しようかな 8. オートスケーラー 9. マルチテナント型クラスター
  21. 目次 1. TiDB Cloudは安定して動くのか 2. コスパはどう? 3. バージョンアップ戦略 4. MySQL互換が嬉しい

    5. 意外と便利なTTL機能 6. 監視 7. Redis廃止しようかな 8. オートスケーラー 9. マルチテナント型クラスター
  22. TiDB Cloudは安定して動くのか? • TiDBノードのCPU利用率が80%になるとレイテンシが悪化する。 ◦ 80%未満 … 数ミリ〜数十ミリ秒のレイテンシ ◦ 80%以上

    … 数百ミリ秒のレイテンシ • TiDBノードのCPU使用率が80%を超えないように キャパプラしている。
  23. 目次 1. TiDB Cloudは安定して動くのか 2. コスパはどう? 3. バージョンアップ戦略 4. MySQL互換が嬉しい

    5. 意外と便利なTTL機能 6. 監視 7. Redis廃止しようかな 8. オートスケーラー 9. マルチテナント型クラスター
  24. 別チームではコスパが理由でTiDBの採用を見送った • AWS Auroraと同等のQPSを出そうとすると インフラ費用が2倍以上かかるので採用を見送った。 レイテンシの悪化はアプリケーション全体で60msec程度だった。 ◦ シンプルに Aurora がすごい。

    • 十分なリソースを用意することができれば、 アプリケーション全体のレイテンシの悪化は 100msec以内に収まる感じがする。 • NewSQLはRDBの上位互換ではない。
  25. 目次 1. TiDB Cloudは安定して動くのか 2. コスパはどう? 3. バージョンアップ戦略 4. MySQL互換が嬉しい

    5. 意外と便利なTTL機能 6. 監視 7. Redis廃止しようかな 8. オートスケーラー 9. マルチテナント型クラスター
  26. 目次 1. TiDB Cloudは安定して動くのか 2. コスパはどう? 3. バージョンアップ戦略 4. MySQL互換が嬉しい

    5. 意外と便利なTTL機能 6. 監視 7. Redis廃止しようかな 8. オートスケーラー 9. マルチテナント型クラスター
  27. そんなに甘くないMySQL互換 • TiDBはMySQL互換だが、裏側はTiDB & TiKVで構成されている。 モノとしてはMySQLとは別物である。 • TiDBを利用して開発・運用するための学習コストがかかる。 ◦ MySQLの知見が100%役に立つわけではない。

    ◦ TiDB, TiKVのキャパプラやトラブルシューティングは 試行錯誤している。 ◦ エンタープライズサポートは契約した方がいい。 ▪ 月額費用の20%がサポート費用として上乗せされる。
  28. 目次 1. TiDB Cloudは安定して動くのか 2. コスパはどう? 3. バージョンアップ戦略 4. MySQL互換が嬉しい

    5. 意外と便利なTTL機能 6. 監視 7. Redis廃止しようかな 8. オートスケーラー 9. マルチテナント型クラスター
  29. 目次 1. TiDB Cloudは安定して動くのか 2. コスパはどう? 3. バージョンアップ戦略 4. MySQL互換が嬉しい

    5. 意外と便利なTTL機能 6. 監視 7. Redis廃止しようかな 8. オートスケーラー 9. マルチテナント型クラスター
  30. 監視 • TiDB CloudはDatadog, New Relicと連携することができる。 • Datadog, New Relic上のメトリクスが高く出てしまう。

    ◦ TiDB Cloudのインフラが原因らしい。 ◦ Datadog, New Relicの監視やダッシュボードが使い物にならない。 ▪ 特に監視は誤発火するので困る。 • TiDB Cloudの管理画面を利用するしかない。
  31. 目次 1. TiDB Cloudは安定して動くのか 2. コスパはどう? 3. バージョンアップ戦略 4. MySQL互換が嬉しい

    5. 意外と便利なTTL機能 6. 監視 7. Redis廃止しようかな 8. オートスケーラー 9. マルチテナント型クラスター
  32. Redisを廃止しようかな • 認証チーム、認可チームのレガシーシステムはRedisを利用している。 ◦ SET, GETが2msec未満くらい。 • Write/Readが水平にスケールするのでTiDBに寄せることが可能。 ◦ 単純なKey-Valueデータの操作は4~15ミリ秒で済む。

    ◦ キャッシュのパージ戦略を考慮しなくていい。 ◦ システムアーキテクチャがシンプルになる。 ◦ SQLによる高度なデータ操作が可能になる。 • 費用が高くなりそうなので要検討。
  33. 目次 1. TiDB Cloudは安定して動くのか 2. コスパはどう? 3. バージョンアップ戦略 4. MySQL互換が嬉しい

    5. 意外と便利なTTL機能 6. 監視 7. Redis廃止しようかな 8. オートスケーラー 9. マルチテナント型クラスター
  34. 目次 1. TiDB Cloudは安定して動くのか 2. コスパはどう? 3. バージョンアップ戦略 4. MySQL互換が嬉しい

    5. 意外と便利なTTL機能 6. 監視 7. Redis廃止しようかな 8. オートスケーラー 9. マルチテナント型クラスター
  35. まとめ • プロダクトとしての完成度はSpannerの方が高い。 ◦ Googleによってインフラレベルで最適化されている。 • TiDBも良いプロダクトであり、Spannerとの棲み分けができてる。 ◦ 国内の企業であれば十分使える。 ◦

    オンプレの会社やMySQL利用者に刺さる。 • TiDB Cloudは安定して動くが、管理画面が使いづらい。 ◦ なんだかんだ実用に耐える形になっているので プロダクト設計上手いなと思った。