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
徹底解説!Insight SQL Testingを活用したデータベース移行の実践ポイント
Search
coconala_engineer
July 11, 2024
Technology
630
0
Share
徹底解説!Insight SQL Testingを活用したデータベース移行の実践ポイント
db tech showcase 2024の登壇資料。
https://www.db-tech-showcase.com/2024/schedule/
coconala_engineer
July 11, 2024
More Decks by coconala_engineer
See All by coconala_engineer
マルチロールEMが実践する「組織のレジリエンス」を高めるための組織構造と人材配置戦略
coconala_engineer
3
1.1k
『誰の責任?』で揉めるのをやめて、エラーバジェットで判断するようにした ~感情論をデータで終わらせる、PMとエンジニアの意思決定プロセス~
coconala_engineer
2
2.1k
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
1.6k
「守りのIT」から「攻めの基盤」へ!上場前後でやりきった情シス・モダナイゼーション
coconala_engineer
0
120
障害対応訓練、その前に
coconala_engineer
0
330
生成AI時代を勝ち抜くエンジニア組織マネジメント
coconala_engineer
0
48k
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
780
SwiftTestingによる_モダンなiOSテスト手法とBDD.pdf
coconala_engineer
0
360
SRE × マネジメントレイヤーが挑戦した組織・会社のオブザーバビリティ改革 ― ビジネス価値と信頼性を両立するリアルな挑戦
coconala_engineer
0
1.1k
Other Decks in Technology
See All in Technology
システムは「動く」だけでは 足りない - 非機能要件・分散システム・トレードオフの基礎
nwiizo
9
3.5k
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
4
13k
TanStack Start エコシステムの現在地 / TanStack Start Ecosystem 2026
iktakahiro
1
350
Data Intelligence Engineering Unit 部門と各ポジション紹介
sansantech
PRO
0
130
AWSで2番目にリリースされたサービスについてお話しします(諸説あります)
yama3133
0
130
MCPゲートウェイ MCPass の設計と実装 エンタープライズで AI を「運用できる」状態にする
mtpooh
1
170
New CBs New Challenges
ysuzuki
1
150
プロダクトを育てるように生成AIによる開発プロセスを育てよう
kakehashi
PRO
1
850
AWS DevOps Agent or Kiro の使いどころを考える_20260402
masakiokuda
0
190
OPENLOGI Company Profile
hr01
0
83k
Databricks Appsで実現する社内向けAIアプリ開発の効率化
r_miura
0
340
🀄️ on swiftc
giginet
PRO
0
130
Featured
See All Featured
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
160
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
260
We Have a Design System, Now What?
morganepeng
55
8.1k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Raft: Consensus for Rubyists
vanstee
141
7.4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
27
3.4k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.4k
Amusing Abliteration
ianozsvald
1
150
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
A Tale of Four Properties
chriscoyier
163
24k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
280
Transcript
Copyright coconala Inc. All Rights Reserved. 徹底解説! Insight SQL Testingを活用した
データベース移行の実践ポイント 株式会社ココナラ 川崎 雄太・片桐 英斗 2024/07/11 db tech showcase 2024
Copyright coconala Inc. All Rights Reserved. 自己紹介(川崎 雄太) 2 川崎
雄太 Yuta Kawasaki @yuta_k0911 株式会社ココナラ システムプラットフォーム部 部長 / Head of Information SRE / 情シス / セキュリティ領域のEM SRE NEXT 2024のコアメンバー 今年の抱負:現状打破✨
Copyright coconala Inc. All Rights Reserved. 自己紹介(片桐 英斗) 3 片桐 英斗(かたぎり えいと)
システムプラットフォームグループ インフラ・SREチーム所属 2022年4月 ココナラ入社 プロダクトインフラの運用・改善をしています マイブームは家で挽きたてコーヒーを淹れる こと☕
Copyright coconala Inc. All Rights Reserved. 4 ココナラの事業内容
Copyright coconala Inc. All Rights Reserved. ココナラのエンジニア数の変遷 5 事業拡大に合わせて3年で約3倍の組織規模に成長 2020年
2023年 フェーズ 上場前 上場後 エンジニア数 20人強 70人強 リポジトリ数 45 170以上
Copyright coconala Inc. All Rights Reserved. 短期間で会社・プロダクトが成長している =「技術負債解消 < プロダクトのグ
ロース」の年月が長いです。 ※ベンチャーあるあるかも…🤔 6
Copyright coconala Inc. All Rights Reserved. もちろん(?)データベースに関する技 術課題もたくさんありました。 本セッションではココナラで実施した 打ち手とともにご紹介します😁
7
Copyright coconala Inc. All Rights Reserved. 8 Agenda ココナラで抱えていたデータベースの課題 課題にどう向き合ったか?
Insight SQL Testingの利活用 振り返り 今後の取り組み 1 2 3 4 5
Copyright coconala Inc. All Rights Reserved. ココナラで抱えていたデータベースの課題 Chapter 01 9
Copyright coconala Inc. All Rights Reserved. 「データベースの課題」といっても、 さまざまな切り口がありますよね🤔 ココナラでもたとえば、QCDの バランス確保やライフサイクルへの
追随で悩んできました😓 10
Copyright coconala Inc. All Rights Reserved. ひとことで言うと、スケーラビリティが確保できていなかった 11 設定したKPIより、AWS RDSのSLAの方が低い
KPIとして設定している目標はリクエ スト成功率が99.96%以上。 一方で、Amazon RDS(マルチAZ クラスタ)のSLAは99.95%となって おり、そもそも自社でコントロールでき ないところで、KPI達成が難しい状況 … イコール、意図せずKPIとして無理が ある設定になっていた。
Copyright coconala Inc. All Rights Reserved. IOPS(1秒あたりのI/Oアクセスの数)も限界が迫っていた 12 このままだと、近い未来にIOPSの上限に抵触する Amazon
RDSのインスタンスサイズは 適切なものを利用していたので、CPU やメモリなどは問題なかったが、 IOPSの上限に抵触しそうになっ た。 暫定的にデータベースのデータ量と無 関係にストレージを拡張すること で、IOPSの上限を上げていった が、一時しのぎであった。
Copyright coconala Inc. All Rights Reserved. 前述の課題に加えて、MySQL 5.7 EOL 対応も迫ってきた…😓
放っておいても数年後には限界を 迎えることも自明😭 本腰を上げたのが、2022年の春頃! 13
Copyright coconala Inc. All Rights Reserved. 課題にどう向き合ったか? Chapter 02 14
Copyright coconala Inc. All Rights Reserved. Amazon Auroraへの移行 15 設定したKPIの達成に向けてAmazon
Auroraを採用 Amazon AuroraのSLA(マルチ AZクラスタ)は99.99%なので、定 めているリクエスト成功率(99.96%) よりも高い。 また、IOPSの上限も撤廃されるた め、2つの課題を一気にクリアできる ことを期待して、Amazon Auroraへ 移行することに意思決定した。 Amazon Aurora Amazon RDS
Copyright coconala Inc. All Rights Reserved. DB移行は一大プロジェクトなので、マイルストーンを設定し、経営層と合意形成 16 MySQL5.7 EOL期限をデッドラインとして、計画を策定
経営層に「技術課題として、一番リスクと 難易度が大きいもの」とインプットするため に対応するタスクの整理と、マイルストーン 設定から着手。 MySQL5.7 EOL期限から逆算して、1年半が かりのプロジェクトを立ち上げ、ナレッジを 徐々に蓄積できるように5つのデータ ベースを影響が少ないところから順に対 応していく計画とした。
Copyright coconala Inc. All Rights Reserved. AWS社とディスカッションを進め、最速で品質の高いアプローチを模索する 17 定例MTGで議論を進めていき、検討を加速化
Copyright coconala Inc. All Rights Reserved. メンテナンス時間削減を目的としたブルーグリーンデプロイの採用 18
Copyright coconala Inc. All Rights Reserved. それらに加えて、8億本ものSQLを どのようにしてテストをするか?を 全力で考えていきました🤔 次のアジェンダで上記課題に対する
打ち手をご紹介します! 19
Copyright coconala Inc. All Rights Reserved. Insight SQL Testingの利活用 Chapter
03 20
Copyright coconala Inc. All Rights Reserved. プロダクトで利用しているDBのなかでも 「メインDB」は常時膨大な量のSQLが流れており、 MySQLメジャーバージョンアップ&Auroraへの移行後 (AuroraMySQL3化)に問題なく動作するか懸念されてい
た。 検証環境ではワークロードが違いすぎて網羅的にSQL動 作の確認がしきれない点が浮き彫りになった。 そのため、メインDBは本番環境相当のSQLを使った 性能テストを実施して移行時の品質向上を狙う。 重厚に性能テストを行うワケ 21 メインDBは桁違いに難易度の高い移行対象
Copyright coconala Inc. All Rights Reserved. 22 一度、スロークエリを対象に新旧バージョンの2DBにSQL 実行したが、SQL 200本程度でも実行から結果をまとめ
るのに時間・労力がかかった… これでは全量だと年単位で時間がかかってしまう恐れ があり、残された期間で効率的に実施できる方法を模索 していた
Copyright coconala Inc. All Rights Reserved. 重要ポイントを満たす選択肢として Insight SQL Testingを採用
23 移行後の品質を担保するために ・実際に流れているSQL(クエリログ: general log)を利用できること ・新旧バージョンの2DBに同一SQLを実行して結果を比較できること を重要視しており、それを満たしていたのが決め手。
Copyright coconala Inc. All Rights Reserved. Insight SQL Testing利用イメージ 24
Copyright coconala Inc. All Rights Reserved. 事前にPoCを行うことで、一発本番のリスクを軽減させる 25 進めるなかで「クエリログのサイズが大きいとInsight SQL
Testing側のクエ リログ取り込みに失敗してしまう」問題に直面 ただ、PoCでありながらインサイトテクノロジー社が親身にサポートくださり、 回避策に切り替えることで先に進めた。その後の正式利用時にはパッチが 適用され、この問題は解消された。 PoCの機会をいただき、一連の流れを経験
Copyright coconala Inc. All Rights Reserved. ただ、都合によりPoC時点では本番相当のクエリログを充分に用意 できていなかった😭 そのため今後イレギュラーが起きることを考慮して、予定よりも性能 テストフェーズの開始時期を前倒して更に2段階に分けて性能
テストを実施できるよう計画を変更した。 また、本来は1週間分取得して行う予定だったが、 ・1時間分のクエリログのテスト実行だけで4時間かかる ・取得したクエリログの保管コストがバカにならない ことがわかったため、取得範囲を狭めた。 26
Copyright coconala Inc. All Rights Reserved. ・連続24時間分 ・週次・月次定期バッチ処理の時間分 ・月次社内処理の時間分 網羅性を担保しつつテストする
全体量を削減することができた👏 27 実際に利用したクエリログ
Copyright coconala Inc. All Rights Reserved. 実際に利用した構成がコチラ 新旧バージョンの2DBに対し て並列でSQLを実行し、 その結果から
・新DBのみ失敗 ・2DBで取得結果が異なる ・新DBで性能劣化 と判定されたSQLの影響度合い を調査した。 指定時間分メインDBからクエリログを取得して性能テストを実施する仕組みを構築 28
Copyright coconala Inc. All Rights Reserved. ただ、正式に性能テストを実施していくなかで問題が出た。 PoCはGUIベースで性能テストを試していたが、 ・性能テストの実施オプションを毎回入力する必要があり非効率 ・単一クエリログサイズが大きく(≒SQL本数が多い)、時短のために
性能テストの「SQL並列実行数」オプションを大きくすると 途中でInsight SQL TestingのインスタンスがOOM になってしまい、テストがFailしてやり直しに 本番相当の性能テスト構成での詰まりポイント 29
Copyright coconala Inc. All Rights Reserved. REST APIが提供されていたので bashスクリプトを作成してテスト実行・結果取得の処理を効率化した。 ※APIリファレンス参照にはライセンスが必要なため具体スクリプト内容は割愛
本番相当の性能テスト構成での詰まりポイント(対策) 30 テストのオプションを毎回入力 途中でInsight SQL TestingのインスタンスがOOM インスタンスのメモリを増設しても解消しなかったので、 インサイトテクノロジー社サポートを頼りつつ、 1回のテストに使うクエリログ時間を1時間→1分に 分割して回すことで、性能テストが失敗したときの影響を軽減させた
Copyright coconala Inc. All Rights Reserved. 最終的にテスト対象のSQLは約8億本、 「新DBのみ失敗、2DBで取得結果が異なる、新 DBで性能劣化」結果から重複排除などを行い 影響調査が必要だったのは約200本、
事前に改修が必要だったのは約30本 となった。 事前に改修を終えることができ、 「その他は問題なし」と言い切れる安心感ができ た。 性能テストを実施してどうなったか? 31 事前に注力するべきSQLの本数は激減した
Copyright coconala Inc. All Rights Reserved. それでも念の為イレギュラーを考慮して切り 替え当日は厚めに体制を敷いて臨んだが AuroraMySQL3への移行は無事に完了! 現在もサービス影響なく稼働
させることができています😁 事前に問題点を洗い出すことができ、切り替え当日は無風 32 Amazon Aurora
Copyright coconala Inc. All Rights Reserved. 振り返り Chapter 04 33
Copyright coconala Inc. All Rights Reserved. 影響の大きいメインDBのAuroraMySQL3化が無事故で終えられた のは性能テストで事前に問題点を洗い出せたから。 Insight SQL
Testingを利用することで性能テストの品質を担保し つつかける工数を削減できた。 また、サポートという正式に頼るルートがあったおかげで、詰まった ときにも自分たちだけで抱え込まずに済んだ。 メインDBのAuroraMySQL3化はココナラ史上最大の課題だった 34
Copyright coconala Inc. All Rights Reserved. 社内外さまざまな協力・支援があったおかげで、1年半という期間 を計画的かつ大きな問題なく進めることができた。 途中でイレギュラーが起きた際にも計画を見直すことで死守する べき期限を変えずに完遂できた。
ただ、性能テストはPoC前にMTGなどでイメージ感や具体 ユースケースのすり合わせなど、もう少し解像度高く取り組むこ とができたはず。こちらからもう少し熱量を持ってコミュニケー ションできれば良かった。 対応してみてどうだったか? 35 確実に自分たちだけでは完遂できなかった
Copyright coconala Inc. All Rights Reserved. IOPS上限問題 抱えていた課題はどうなった? 36 SLO未達問題
EOL期限問題
Copyright coconala Inc. All Rights Reserved. 今後の取り組み Chapter 05 37
Copyright coconala Inc. All Rights Reserved. データベース移行はやっぱり事前の準備が大事 38 集められる情報は集めて、自社としての最適解を見つける 「データベース移行」といっても、システム構
成やシステム特性によって、考慮するポイ ントはさまざま。 類似したアーキテクチャーを採用しているシ ステムの情報を参考に「自社のベストプラク ティス」を探すことが重要。 なんといっても、数年に一度は必ず訪れる イベント・・・
Copyright coconala Inc. All Rights Reserved. システムメンテナンスの無い世界を目指していきたい 39 無停止でメンテナンスイベントをこなす最適解を見つける クラウドサービスを使っている限り、「基盤の
メンテナンス」は切っても切れないイベント になる。(全てがライブマイグレーションにな れば、みんなHappyだけど…) ココナラは「全てがそろうスキルマーケット」を 目指しているので、極力システムメンテナ ンスがない世界を実現するための机上 / 実機検証を続ける。
Copyright coconala Inc. All Rights Reserved. ココナラでは、Insight SQL Testing なしではQCDのバランスの取れた
移行作業はできませんでした。 1年近く伴走していただき、 本当にありがとうございました!! 40
Copyright coconala Inc. All Rights Reserved. データベースはどの企業でも利用してい るので、ナレッジを公開している企業も たくさんあります。 過去の知見や、AWS等のベンダーを
使い倒して、長きに渡るデータベース 移行を安全に乗り切りましょう!!😁 41
Fin