Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DMS で AlloyDB に簡単移行!
Search
Hiroaki KARASAWA
June 26, 2023
0
30
DMS で AlloyDB に簡単移行!
Digital Native Leader’s Meetup #3 at Google
https://note.com/karszawa/n/n2f4122ddbcdd
Hiroaki KARASAWA
June 26, 2023
Tweet
Share
More Decks by Hiroaki KARASAWA
See All by Hiroaki KARASAWA
成功する技術選定について
karszawa
2
1.3k
飲食店のインフラサービス “ダイニー” のトラブル対応のすべて
karszawa
0
7
Google Cloud のモニタリング製品を徹底活用してみた
karszawa
0
30
ダウンタイム 30 秒で AlloyDB に移行した話
karszawa
0
82
【現場の本音】App Engine から Cloud Run に移行してみた
karszawa
0
130
cls-hooked による実行コンテキストの保存と利用
karszawa
0
760
Hasura の Relationship と権限管理
karszawa
0
790
React Native + Expo のバージョンアップと互換性の維持に関する運用と絶技
karszawa
0
740
ダイニーにおけるモニタリングと振り返りの仕組み
karszawa
1
240
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
Optimizing for Happiness
mojombo
376
70k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Building Adaptive Systems
keathley
38
2.3k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Transcript
Lightning Talk DMS で AlloyDB に簡単移行! dinii, inc Software Engineer
Hiroaki KARASAWA
自己紹介 Google Cloud “Champion Innovator” (2023/07/10-) HASURAward “Champion of The
Year” (2023/07/07-)
Cloud Run Node.js Hasura Hasura SRE React Native
本日のアジェンダ 1. dinii について & dinii の DB ワークロード 2.
移行前の状況 3. どうして AlloyDB への移行を決めたか 4. 移行方法 5. 移行当日のスケジュール 6. 移行後 7. まとめ
02 dinii について
10 Full-time SWEs
None
650万人
None
None
03 移行前の状況
dinii というミッションクリティカルなサービス dinii が動かなくなると… 1. 注文できない 2. 調理できない 3. 会計できない
システム構成(移行前) Hasura DB スキーマから GraphQL API を 提供してくれるスゴいミドルウェア
課題 Hasura の subscription の仕組みのせいで read がめちゃくちゃ重い • 1 query
/ 1 second for 1 user 🤯 • すでに Cloud SQL で設定可能な vCPU 数の上限 が近かった
AlloyDB のここが良さそう 1. Google の豊富なコンピューティング資源を活かす独自の実装 ⇒ なんかすごそう 2. Read Pool
により読み取り側の冗長性を高められる ⇒ 当座の危機を回避 3. columnar engine や index advisory などで OLAP でも雑に使える ⇒ 分析基盤の構築までは手が回っていなかったため
04 移行の手順
Database Migration Service を使用 1. PostgreSQL, MySQL, Oracle から Cloud
SQL or AlloyDB に移行 2. 論理レプリケーションの仕組みを利用して リアルタイム にデータを同期 3. ボタンを押して 数秒〜数分 で移行先へのレプリケーションが停止される
セットアップは GUI でサクサク • 移行元でのレプリケーション設定 • VPC Peering or TCP
Proxy で通信設定 ※ AlloyDB はプロジェクト内の VPC に配置されるが Cloud SQL は Google 管理の VPC 内にあるため疎通設定が地味に面倒くさい ⇒ サポートケースを大量に起票していたら DMS のプロダクトチームがユーザーヒア リングを実施してくれた。感謝! 🥰 各種リソースの設定画面 Datastream と似ている
移行計画 移行の方針を経営層と擦り合わせた上で、以下を 1ヶ月ぐらいで実施 1. パフォーマンス検証 2. アプリケーション動作検証 3. DMS の構成
4. 社内周知・顧客案内 5. 移行実行 6. 移行後の監視
移行計画 移行の方針を経営層と擦り合わせた上で 、以下を1ヶ月ぐらいで実施 1. パフォーマンス検証 2. アプリケーション動作検証 3. DMS の構成
4. 社内周知・顧客案内 5. 移行実行 6. 移行後の監視
移行計画 移行の方針を経営層と擦り合わせた上で 、以下を1ヶ月ぐらいで実施 1. パフォーマンス検証 2. アプリケーション動作検証 3. DMS の構成
4. 社内周知・顧客案内 5. 移行実行 6. 移行後の監視 このままだと XX までに 参照系が全部止まりますね 今期中に何か手を打たないと マズイですね me CTO DB 移行はビジネスインパクトの 大きい仕事 ⇒ 頭出し大事!
1. パフォーマンス検証 ⇒ 主要な OLTP 操作の負荷テストを Cloud SQL と AlloyDB
で比較 ⇒ 同時実行数に比例した性能悪化が無いことを確認 ⇒ 本番 DB のスペックも決定 2. アプリケーション動作検証 3. DMS の構成 4. 社内周知・顧客案内 5. 移行実行 6. 移行後の監視 性能悪化がないなら 本番の tps と CPU 使用量から簡単に類推可能
1. パフォーマンス検証 2. アプリケーション動作検証 ⇒ ステージング環境を AlloyDB に移行して通常の互換性確認試験を実施 ⇒ ステージングなので問題があればデータを捨てて
Cloud SQL に戻すだけ 3. DMS の構成 4. 社内周知・顧客案内 5. 移行実行 6. 移行後の監視 4000 項目以上の豊富な試験項目と QA チームに感謝
1. パフォーマンス検証 2. アプリケーション動作検証 3. DMS の構成 ⇒ ネットワーク構成周りが地味に大変だった …
4. 社内周知・顧客案内 5. 移行実行 6. 移行後の監視 とはいえドキュメントも豊富なので頑張っ てやるだけ
1. パフォーマンス検証 2. アプリケーション動作検証 3. DMS の構成 ⇒ ネットワーク構成周りが地味に大変だった …
4. 社内周知・顧客案内 5. 移行実行 6. 移行後の監視 とはいえドキュメントも豊富なので頑張っ てやるだけ
1. パフォーマンス検証 2. アプリケーション動作検証 3. DMS の構成 4. 社内周知・顧客案内 ⇒
顧客に多大な影響を与えうる計画のため、社内全体にリスクを周知する 5. 移行実行 6. 移行後の監視
1. パフォーマンス検証 2. アプリケーション動作検証 3. DMS の構成 4. 社内周知・顧客案内 5.
移行実行 ⇒ ステージング・ベータで入念に練習した上で … ⇒ 当日のタイムラインと共に紹介します! 6. 移行後の監視
本番移行のタイムライン 3:55 起床 4:00 同期開始 6:44 同期完了 6:45 レプリカへのクエリを AlloyDB
で処理する 6:55 DMS 移行開始 6:56 DMS 移行完了 7:00 メトリクス監視 7:40 動作確認完了 7:45 完了報告 シンプルに辛い! 前日も緊張で眠れない!
本番移行のタイムライン 3:55 起床 4:00 同期開始 6:44 同期完了 6:45 レプリカへのクエリを AlloyDB
で処理する 6:55 DMS 移行開始 6:56 DMS 移行完了 7:00 メトリクス監視 7:40 動作確認完了 7:45 完了報告 本来は前日にやる予定だったがトラブルがあ り実施できなかった データ量は WAL 抜きで 100GB ほど
本番移行のタイムライン 3:55 起床 4:00 同期開始 6:44 同期完了 6:45 レプリカへのクエリを AlloyDB
で処理する 6:55 DMS 移行開始 6:56 DMS 移行完了 7:00 メトリクス監視 7:40 動作確認完了 7:45 完了報告 移行先がレプリカとして機能して いるため先に変えておく Hasura & GraphQL で Read だけ上 手く分離できているからこそ可能
本番移行のタイムライン 3:55 起床 4:00 同期開始 6:44 同期完了 6:45 レプリカへのクエリを AlloyDB
で処理する 6:55 DMS 移行開始 6:56 DMS 移行完了 7:00 メトリクス監視 7:40 動作確認完了 7:45 完了報告 ダウンタイムはここだけ!
本番移行のタイムライン 3:55 起床 4:00 同期開始 6:44 同期完了 6:45 レプリカへのクエリを AlloyDB
で処理する 6:55 DMS 移行開始 6:56 DMS 移行完了 7:00 メトリクス監視 7:40 動作確認完了 7:45 完了報告 やり切る!
移行時の監視状況 エラーが発生している時間帯をダウ ンタイムと考えると 30s ほど 実際はバックグラウンドでのデータ取得な どユーザー影響が無い API が多数
移行後初の週末を無事に乗り切ることができた様子
AlloyDB への要望 これができたらすごい! 1. リードプールのオートスケーリング Cloud SQL では出来ているので期待 2. Maintenance
Window への対応 3. Datastream とのネイティブでの対応 4. Cloud Run との通信のためのネットワーク構成を楽にやりたい
まとめ AlloyDB の良さは 手軽さ と パフォーマンス を両立しているところ • DMS のおかげで簡単に移行できる
• PostgreSQL 完全互換なので挙動が分かりやすい • Google Cloud の DB のデフォルト選択肢として期待!