マイクロサービス環境におけるDB戦略 in DMMプラットフォーム
by
pospome
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
マイクロサービス環境におけるDB戦略 in DMMプラットフォーム @pospome
Slide 2
Slide 2 text
登壇者 名前:pospome(ぽすぽめ) 所属:DMMプラットフォーム Twitter:@pospome
Slide 3
Slide 3 text
今回の発表内容について DMMプラットフォーム x マイクロサービス x DB戦略
Slide 4
Slide 4 text
DMMプラットフォームについて 扱う領域:DMM会員、決済、DMMポイント、不正対策など エンジニア数:120名以上 開発チーム数:16チーム マイクロサービス数:約40サービス ピーク時のリクエスト:19,000RPS
Slide 5
Slide 5 text
DMMプラットフォームで利用されているDB オンプレ ● MySQL ● Cassandra ● Couchbase GCP ● Firestore ● Spanner ● Cloud SQL AWS ● RDS Aurora(MySQL) ● Dynamo DB その他 ● TiDB Cloud
Slide 6
Slide 6 text
なんか多くない?(´・ω・`)
Slide 7
Slide 7 text
DMMプラットフォームのDB戦略 ● 各チームで適切にDB選定・運用してもらう方針に倒している。 ○ アプリケーション特性に左右される。 ■ 組織としてのデファクト・スタンダードは定義していない。 ○ クラウド環境ではマネージドなDBが多い。
Slide 8
Slide 8 text
DMMプラットフォームとDevOps ● DBに限らずDevOpsを徹底している。 ○ コミュニケーションコストの削減 ○ 独立性が高く、スピード感のある開発を実現 ● オンプレのDBはインフラ部が運用している。 ○ コミュニケーションコストが高く、上手くDevOpsできていない。 ○ クラウド化を進めている。
Slide 9
Slide 9 text
マイクロサービスのデータ管理 1. DBメンテナンスに伴うダウンタイムとの付き合い方 2. 既存方針における開発効率の悪さ 3. DMMにおけるデータ分析
Slide 10
Slide 10 text
マイクロサービスのデータ管理 1. DBメンテナンスに伴うダウンタイムとの付き合い方 2. 既存方針における開発効率の悪さ 3. DMMにおけるデータ分析
Slide 11
Slide 11 text
マイクロサービスのダウンタイムは面倒 ● マイクロサービスはダウンタイムを伴う変更がめんどくさい。 ○ 例:メンテナンス作業など ● 面倒な理由 ○ どこに影響があるか分からない。 ○ どの程度影響があるか分からない。 ○ 関係各所への連絡が必要になる。 ■ どの程度のダウンタイムであれば許容できるか。 ○ ダウンタイムなしで頑張るのもそれなりの工数がかかる。
Slide 12
Slide 12 text
DMMプラットフォームにおけるダウンタイムとの付き合い方 ● DMMプラットフォームは各サービスが共通利用する機能を提供する。 ○ ダウンタイムが結構クリティカル。 ○ 例:認証基盤がダウンするとほぼ全サービスが止まる。 ● DMMは60以上のサービスを展開している。 ○ ダウンタイムを伴う作業がとても大変。 ○ 調整コストが高い。
Slide 13
Slide 13 text
調整コストの高さ ● 各サービスの責任者に承認を得なければいけない。 ○ 60サービスあるけど・・・。 ○ 「その日はキャンペーンやっているので避けてほしい」とかある。 ■ 影響の度合いが読みづらい・・・。
Slide 14
Slide 14 text
調整コストの高さ ● 各サービスに特殊な?要件がある。 ○ DMM TV「生配信があるので、その日は避けて欲しい」 ○ DMM英会話「メンテナンスの曜日を固定にしないで欲しい」
Slide 15
Slide 15 text
調整に失敗したこともある ● ダウンタイムを伴うメンテを企画したが、 スケジュール調整が難航して、一度リスケになったことがある。 ○ 多くの人の工数を消費する一大イベントになってしまう。
Slide 16
Slide 16 text
DBのダウンタイムは極力避けたい・・・ ● ダウンタイムを伴うDBのメンテナンスは極力避けたい。 ○ 分散DBだとダウンタイムがない傾向にあるので嬉しい。 ● MySQLはダウンタイムを伴いがちだったが、最近はそうでもない。 ○ オンラインDDL ○ AuroraのBlue/Greenデプロイ機能 ■ 切り戻しにはダウンタイムを伴ってしまう・・・。 ■ 切り戻しを考慮して関係各所とやりとりするか・・・?
Slide 17
Slide 17 text
認証基盤ではTiDBを採用 ● TiDB ○ New SQL ■ Writeがスケールする ■ 強整合性 ○ MySQLプロトコル互換 ○ 分散DBなのでメンテナンスによるダウンタイムがない。 ■ 瞬断するのでリトライは必須 ● 中長期的に非機能要件を満たせる。
Slide 18
Slide 18 text
TiDB採用に関する登壇資料 フルマネージドNewSQLであるTiDB Cloudの可能性
Slide 19
Slide 19 text
マイクロサービスのデータ管理 1. DBメンテナンスに伴うダウンタイムとの付き合い方 2. 既存方針における開発効率の悪さ 3. DMMにおけるデータ分析
Slide 20
Slide 20 text
既存方針における開発効率の悪さ ● “各チームで適切なDBを選定し、運用する” のは効率が悪い面がある。 ○ 各チームのエンジニアリングスキルに大きく依存してしまう。 ○ チームによって利用するDBが異なるので、知見共有が難しく、 エコシステムも作りづらい。
Slide 21
Slide 21 text
DMMプラットフォームのDBをTiDBに寄せれば、 これらの問題が解決するのでは・・・? (´・ω・`)
Slide 22
Slide 22 text
TiDBに寄せたイメージ
Slide 23
Slide 23 text
TiDBに寄せたイメージ
Slide 24
Slide 24 text
TiDBに寄せたイメージ
Slide 25
Slide 25 text
TiDBに寄せたイメージ
Slide 26
Slide 26 text
TiDBに寄せた際のメリット ● 知見共有できるようになる。 ● プラットフォームチームがエコシステムを構築できるようになる。 ● プラットフォームチームがクラスター運用を担当する。 ○ 各チームの運用工数削減
Slide 27
Slide 27 text
TiDBに寄せれるか? ● MySQLプロトコル互換 ○ エンジニアの学習コストが低い。 ○ 既存のMySQLエコシステムが使える。 ● 強整合性を持っている。 ○ トランザクション処理が可能。 ● Writeがスケールする。 ○ Dynamo DBのようなKVSも寄せれそう。
Slide 28
Slide 28 text
TiDBに寄せれるか? ● HTAPもサポートしている。 ○ HBaseのような列指向NoSQLとしても利用できる。 ● マルチテナントによるリソース最適化 リソース制御機能があり、 DBごとに消費リソースを制限することができる。
Slide 29
Slide 29 text
なんか良さそう! (´・ω・`)
Slide 30
Slide 30 text
多くのハードル・・・ ● TiDBはゆーてNewSQLである。 ○ RDB, NoSQLが実現できる要件を満たせるとは限らない。 ○ 特にレイテンシの悪化は避けられない。 ■ MySQLからTiDBへの移行によってアプリケーションの p99のレイテンシが数十msec高くなった実績がある。 ● マルチテナントを運用する難易度 ○ リソース制御機能があったとしても、キャパプラ難易度が高い。
Slide 31
Slide 31 text
多くのハードル・・・ ● クラスターレベルのチューニングが難しい ○ すべてのアプリケーションにハマるチューニングできなさそう。 ● TiDBのバージョンアップで足並みを揃える必要がある。 ○ 各チームのスケジュール調整できるかな・・・?
Slide 32
Slide 32 text
なんか無理そうだけど、現在計画中・・・
Slide 33
Slide 33 text
マイクロサービスのデータ管理 1. DBメンテナンスに伴うダウンタイムとの付き合い方 2. 既存方針における開発効率の悪さ 3. DMMにおけるデータ分析
Slide 34
Slide 34 text
DMMにおけるデータ分析 ● 各部署が持つデータを突き合わせて分析する必要がある。 ○ 電子書籍の書籍データとDMMプラットフォームの会員データとか ● DMMにはこれを実現するデータプラットフォームがある。 ○ DMMプラットフォームとは別の部署である。 ○ ビジネス要件みたいなものまでヒアリングしてくれる。
Slide 35
Slide 35 text
データプラットフォームの仕組み
Slide 36
Slide 36 text
データプラットフォームの仕組み
Slide 37
Slide 37 text
データプラットフォームの仕組み
Slide 38
Slide 38 text
まとめ ● DMMプラットフォームはDevOpsの思想に基づいて、 各チームにDBに対するオーナーシップを持たせている。 ● マイクロサービスにおいてダウンタイムを伴う変更は大変。 ○ DBもダウンタイムがないものが理想である。 ● TiDBを中心としたDBaaSを計画している。 ● 分析のためのデータプラットフォームがある。