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
21
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
Google Cloud のモニタリング製品を徹底活用してみた
karszawa
0
28
ダウンタイム 30 秒で AlloyDB に移行した話
karszawa
0
60
【現場の本音】App Engine から Cloud Run に移行してみた
karszawa
0
110
cls-hooked による実行コンテキストの保存と利用
karszawa
0
690
Hasura の Relationship と権限管理
karszawa
0
760
React Native + Expo のバージョンアップと互換性の維持に関する運用と絶技
karszawa
0
710
ダイニーにおけるモニタリングと振り返りの仕組み
karszawa
1
230
ダイニーにおける本番 Hasura 運用
karszawa
1
2k
Hasura Con'21 Recap - GraphQL subscriptions
karszawa
0
450
Featured
See All Featured
Music & Morning Musume
bryan
46
6.1k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
504
140k
Fontdeck: Realign not Redesign
paulrobertlloyd
81
5.2k
Fashionably flexible responsive web design (full day workshop)
malarkey
404
65k
Making the Leap to Tech Lead
cromwellryan
132
8.9k
Code Reviewing Like a Champion
maltzj
519
39k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Ruby is Unlike a Banana
tanoku
96
11k
Producing Creativity
orderedlist
PRO
341
39k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
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 のデフォルト選択肢として期待!