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

ダウンタイム 30 秒で AlloyDB に移行した話

Hiroaki KARASAWA
August 02, 2023
60

ダウンタイム 30 秒で AlloyDB に移行した話

Hiroaki KARASAWA

August 02, 2023
Tweet

More Decks by Hiroaki KARASAWA

Transcript

  1. ダウンタイム 30 秒で AlloyDB に移行した話 Database Migration Service で AlloyDB

    に簡単移行! AlloyDB Case Study Meetup 2023/08/02 Hiroaki KARASAWA from dinii, inc
  2. 自己紹介 Google Cloud “Champion Innovator” (2023/07/10-) HASURAward “Champion of The

    Year” (2023/07/07-) dinii, inc (2020~) 飲食店の POS と MO を作って CRM してます Full-stack Engineer フロント専門 ⇒ スタートアップ故の何でも屋 ひとこと 懇親会会場の調整はお任せください! 【実績】 • Google Cloud Innovators Meetup • Jagu'e'r Cloud Native Meetup
  3. 課題 Hasura の subscription の仕組みのせいで read がめちゃくちゃ重い • 1 query

    / 1 second for 1 user 🤯 • すでに Cloud SQL で設定可能な vCPU 数の上限 が近かった ※ Cloud SQL Enterprise Plus エディション (2023/07/12) で Cloud SQL 側も改善しています
  4. AlloyDB のここが良さそう 1. Google の豊富なコンピューティング資源を活かす独自の実装 ⇒ なんかすごそう 2. Read Pool

    により読み取り側の冗長性を高められる ⇒ 当座の危機を回避 3. columnar engine や index advisory などで OLAP でも雑に使える ⇒ 分析基盤の構築までは手が回っていなかったため
  5. Database Migration Service (DMS) を使用 1. PostgreSQL, MySQL, Oracle から

    Cloud SQL or AlloyDB に移行 2. 論理レプリケーションの仕組みを利用して リアルタイム にデータを同期 3. ボタンを押して 数秒〜数分 で移行先へのレプリケーションが停止される
  6. セットアップは GUI でサクサク • 移行元でのレプリケーション設定 • VPC Peering or TCP

    Proxy で通信設定 ※ AlloyDB はプロジェクト内の VPC に配置されるが Cloud SQL は Google 管理の VPC 内にあるため疎通設定が地味に面倒くさい サポートケースを大量に起票していたら DMS のプロダクトチーム がユーザーヒアリングを実施してくれた。感謝! 🥰
  7. 移行計画 移行の方針を経営層とすり合わせた上で、以下を1ヶ月ぐらいで実施 1. パフォーマンス検証 2. アプリケーション動作検証 3. DMS の構成 4.

    社内周知・顧客案内 5. 移行実行 6. 移行後の監視 このままだと X月Y日 までに 参照系が全部止まりますね 今期中に何か手を打たないと マズイですね me CTO DB 移行はビジネスインパクトの 大きい仕事 ⇒ “根回し” 大事!
  8. 1. パフォーマンス検証 ⇒ 主要な OLTP 操作の負荷テストを Cloud SQL と AlloyDB

    で比較 ⇒ 同時実行数に比例した性能悪化が無いことを確認 ⇒ 本番 DB のスペックも決定 2. アプリケーション動作検証 3. DMS の構成 4. 社内周知・顧客案内 5. 移行実行 6. 移行後の監視 性能悪化がないなら 本番の tps と CPU 使用量から簡単に類推可能
  9. 1. パフォーマンス検証 2. アプリケーション動作検証 ⇒ ステージング環境を AlloyDB に移行して通常の互換性確認試験を実施 ⇒ ステージングなので問題があればデータを捨てて

    Cloud SQL に戻すだけ 3. DMS の構成 4. 社内周知・顧客案内 5. 移行実行 6. 移行後の監視 4000 項目以上の豊富な試験項目と QA チームに感謝
  10. 1. パフォーマンス検証 2. アプリケーション動作検証 3. DMS の構成 ⇒ ネットワーク構成周りが地味に大変だった …

    4. 社内周知・顧客案内 5. 移行実行 6. 移行後の監視 とはいえドキュメントも豊富なので頑張っ てやるだけ
  11. 1. パフォーマンス検証 2. アプリケーション動作検証 3. DMS の構成 4. 社内周知・顧客案内 ⇒

    顧客に多大な影響を与えうる計画のため、社内全体にリスクを周知する 5. 移行実行 6. 移行後の監視
  12. 1. パフォーマンス検証 2. アプリケーション動作検証 3. DMS の構成 4. 社内周知・顧客案内 5.

    移行実行 ⇒ ステージング・ベータで入念に練習した上で … ⇒ 当日のタイムラインと共に紹介します! 6. 移行後の監視
  13. 本番移行のタイムライン 3:55 起床 4:00 DMSによるデータ同期 開始 6:44 DMSによるデータ同期 終了 6:45

    レプリカへのクエリを AlloyDB で処理する 6:55 DMS CDC 移行 開始 6:56 DMS CDC 移行 終了 7:00 メトリクス監視 7:40 動作確認完了 7:45 完了報告 DMS 職人の朝は早い! 前日も緊張で眠れない!
  14. 本番移行のタイムライン 3:55 起床 4:00 DMS によるデータ同期 開始 6:44 DMS によるデータ同期

    終了 6:45 レプリカへのクエリを AlloyDB で処理する 6:55 DMS CDC 移行 開始 6:56 DMS CDC 移行 終了 7:00 メトリクス監視 7:40 動作確認完了 7:45 完了報告 本来は前日にやる予定だったがトラブルがあ り実施できなかった データ量は WAL 抜きで 100GB ほど
  15. 本番移行のタイムライン 3:55 起床 4:00 DMS によるデータ同期 開始 6:44 DMS によるデータ同期

    終了 6:45 レプリカへのクエリを AlloyDB で処理する 6:55 DMS CDC 移行 開始 6:56 DMS CDC 移行 終了 7:00 メトリクス監視 7:40 動作確認完了 7:45 完了報告 移行先がレプリカとして機能して いるため先に変えておく Hasura & GraphQL で Read だけ上 手く分離できているからこそ可能
  16. 本番移行のタイムライン 3:55 起床 4:00 DMS によるデータ同期 開始 6:44 DMS によるデータ同期

    終了 6:45 レプリカへのクエリを AlloyDB で処理する 6:55 DMS CDC 移行 開始 6:56 DMS CDC 移行 終了 7:00 メトリクス監視 7:40 動作確認完了 7:45 完了報告 アプリケーションダウンタイムはここだ け!
  17. 本番移行のタイムライン 3:55 起床 4:00 DMS によるデータ同期 開始 6:44 DMS によるデータ同期

    終了 6:45 レプリカへのクエリを AlloyDB で処理する 6:55 DMS CDC 移行 開始 6:56 DMS CDC 移行 終了 7:00 メトリクス監視 7:40 動作確認完了 7:45 完了報告 やり切る!
  18. AlloyDB への要望 これができたらすごい! 1. リードプールのオートスケーリング Cloud SQL では出来ているので期待 2. Maintenance

    Window への対応 3. Datastream とのネイティブでの対応(現状では Compute Engine で Proxy を構成する必要あり) 4. Cloud Run との通信のためのネットワーク構成を楽にやりたい (こちらも現状では Serverless VPC Access connector を構成する必要あり)
  19. まとめ AlloyDB の良さは 手軽さ と パフォーマンス を両立しているところ • DMS のおかげで簡単に移行できる

    • PostgreSQL 完全互換なので挙動が分かりやすい • Google Cloud の DB のデフォルト選択肢として期待!