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
ZOZOTOWNの抱える巨大データのマイグレーションについて / ZOZOTOWN Datab...
Search
tsurumi
August 29, 2018
Programming
5
3.2k
ZOZOTOWNの抱える巨大データのマイグレーションについて / ZOZOTOWN Database Replace
ZOZOTOWN の巨大DB を新システム環境へ移行しました。
サービスを継続させたまま、安全に移行するまでの取り組みについて
ご説明します。
tsurumi
August 29, 2018
Tweet
Share
More Decks by tsurumi
See All by tsurumi
ZOZOTOWNを支える運用について / zozotown-ops-lightning-talks
tsurumi
1
1.5k
ZOZOTOWN Azure SQL Database 節約術 / ZOZOTOWN SQL Database Cost Reduction
tsurumi
1
2k
ZOZOTOWNリプレイスにおけるKubernetes活用 / zozotown replace kubernetes
tsurumi
8
8.5k
Other Decks in Programming
See All in Programming
Jakarta EE meets AI
ivargrimstad
0
150
Remix on Hono on Cloudflare Workers
yusukebe
1
290
シェーダーで魅せるMapLibreの動的ラスタータイル
satoshi7190
1
480
Tauriでネイティブアプリを作りたい
tsucchinoko
0
370
Better Code Design in PHP
afilina
PRO
0
120
Laravel や Symfony で手っ取り早く OpenAPI のドキュメントを作成する
azuki
2
120
みんなでプロポーザルを書いてみた
yuriko1211
0
260
macOS でできる リアルタイム動画像処理
biacco42
9
2.4k
TypeScript Graph でコードレビューの心理的障壁を乗り越える
ysk8hori
2
1.1k
初めてDefinitelyTypedにPRを出した話
syumai
0
410
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
120
AWS IaCの注目アップデート 2024年10月版
konokenj
3
3.3k
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
The Cost Of JavaScript in 2023
addyosmani
45
6.7k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
Being A Developer After 40
akosma
86
590k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
YesSQL, Process and Tooling at Scale
rocio
169
14k
RailsConf 2023
tenderlove
29
900
Transcript
© Start Today Technologies Inc. ZOZOTOWNの抱える巨大データ のマイグレーションについて
© Start Today Technologies Inc. ZOZOTOWNの抱える巨大データのマイグレーションについて ZOZOTOWN の巨大DB を新システム環境へ移行しました。 サービスを継続させたまま、安全に移行するまでの取り組みについて
ご説明します。
© Start Today Technologies Inc. 目次 ・ZOZOTOWN リプレイス ・DB マイグレーション
- 方針 / DB 構成 / データ移行 / Azure DB ・DB 構築自動化 ・DB スケールアウト ・まとめ
© Start Today Technologies Inc. ZOZOTOWN リプレイス
© Start Today Technologies Inc. リプレイスの経緯 ZOZOTOWN は開設から10年以上が経ち、オンプレミスでの システム環境も歳を取りレガシーなものとなりました。 年々、目覚ましい成長を遂げているZOZOTOWN
ですが、その一方で、 運用・開発での問題・課題も見えてきました。
© Start Today Technologies Inc. リプレイス以前の問題・課題 ・オンプレミスではリソース調達に時間がかかる。 ⇒ 柔軟にリソースを確保できるようにしたい。 ・システム停止をなるべく避けたい。
⇒ 障害やシステム変更に強いシステムにしたい。 ・エンジニア不足。 ⇒ 採用に力を入れると同時に、自動化できるところは自動化したい。 ・データ量増加に伴う処理速度の劣化。 ⇒ 現在のデータ量を考慮し、クエリやテーブルの改善をしたい。
© Start Today Technologies Inc. リプレイスについて 今回、問題や改題を含めてリプレイスした中で、 特に大変だったDB 移行についてご説明します。
© Start Today Technologies Inc. DB マイグレーション
© Start Today Technologies Inc. DB マイグレーション DB の視点から改善を考えました。
© Start Today Technologies Inc. DB マイグレーション方針 方針 ・柔軟なリソース獲得のためクラウド(Azure)を利用する。 ・学習コスト、移行コストを減らすためDB
はオンプレミスで利用している SQL Server をクラウドでも利用する。 ・マネージドDB を利用し、運用負荷を軽減する。 ・パフォーマンス改善のためDB 設定、テーブル構成、クエリの見直しを行う。 ・DB 周りで自動化できるところは自動化を行う。 ・システム停止なしで移行を行う。
© Start Today Technologies Inc. DB マイグレーション方針 方針に基づいたクラウドへのDB 移行実施に加え、 3つの改善を行いました。
© Start Today Technologies Inc. 対応内容 ・DB 構築の自動化 ・DB スケールアウト
/ スケールイン ・パフォーマンス改善
© Start Today Technologies Inc. 対応内容 ・DB 構築の自動化 ⇒ 環境作成の負荷を低減し、設定漏れ等の人的ミスも防ぐ。
・DB スケールアウト / スケールイン ⇒ 負荷分散のため、スケールアウトを可能にする。 ・パフォーマンス改善 ⇒ ZOZOTOWN の処理速度を改善する。
© Start Today Technologies Inc. 対応内容 ・DB 構築の自動化 ⇒ 環境作成の負荷を低減し、設定漏れ等の人的ミスも防ぐ。
・DB スケールアウト / スケールイン ⇒ 負荷分散のため、スケールアウトを可能にする。 ・パフォーマンス改善 ⇒ ZOZOTOWN の処理速度を改善する。
© Start Today Technologies Inc. リプレイス以前のDB 構成
© Start Today Technologies Inc. リプレイス以前のDB 構成 オンプレミスでSQL Server 複数台利用。※DB
3台の例。DB 以外の部分は省略。 オンプレミス
© Start Today Technologies Inc. リプレイス後のDB 構成
© Start Today Technologies Inc. リプレイス後のDB 構成 オンプレミスのSQL Server を幾つかクラウドへ移行。
オンプレミス クラウド 移行(専用線)
© Start Today Technologies Inc. リプレイス後のDB 構成 オンプレミスのSQL Server を幾つかクラウドへ移行。
オンプレミス クラウド 移行(専用線)
© Start Today Technologies Inc. データ移行
© Start Today Technologies Inc. 移行の考え方 ZOZOTOWN はデータ量も多く、更新量も多い。 このデータをシステム停止せずに移行する必要があります。 ※オンプレミスとクラウド間の通信は専用線を用います。
© Start Today Technologies Inc. 移行の考え方 データ移行方法は幾つか考えられます。 ・移行元バックアップからのリストア ・マイグレーションツールの利用 ・SQL
Server レプリケーションの利用
© Start Today Technologies Inc. 移行の考え方 データ移行方法は幾つか考えられます。 ・移行元バックアップからのリストア ・マイグレーションツールの利用 ・SQL
Server レプリケーションの利用 ZOZOTOWN の巨大データをシステム停止することなく 継続的にクラウドへ移行するために、 SQL Server レプリケーションが向いていると判断。
© Start Today Technologies Inc. Azure DB について
© Start Today Technologies Inc. Azure DB の利用 Azure で利用できるSQL
Server は IaaS 、PaaS の2種類があり、 どちらも利用します。 ・仮想マシン上のSQL Server(IaaS) ・Azure SQL Database(PaaS)
© Start Today Technologies Inc. IaaS 、PaaS の使い分け • 当初はマネージドDB
であるAzure SQL Database (PaaS)だけで構成 しようと検討。 • レプリケーションやリンクサーバー等の機能に制限があり、実現でき ない部分があり断念。 • 仮想マシン上のSQL Server (IaaS)を併用することにしました。
© Start Today Technologies Inc. 今後Azure DBで活用したい機能 ・Azure SQL Database
Managed Instance(2018/08時点プレビュー) ⇒ほぼ全てのSQL Server 機能が利用できるマネージドDB。 ・ Azure SQL 自動チューニング機能 ⇒Index 自動作成、 Index 自動削除、実行プラン強制。 ・ Azure SQL Database Elastic Pool ⇒リソース(DTU)をDB 間で分け合うことができる。
© Start Today Technologies Inc. DB 構築自動化
© Start Today Technologies Inc. DB 構築問題点 DB 構築時の問題点は次の通り。 ・DB
を幾つも作成する必要があるが設定が大変であり、時間もかかる。 ・構築手順が多いため設定が漏れてしまう可能性がある。
© Start Today Technologies Inc. DB 構築自動化について 問題点解消、及び、データ移行を簡単にするため、 クラウド上に DB
を作成するところから利用できる状態にするまで を自動化しました。
© Start Today Technologies Inc. DB 構築自動化について Terraform PowerShell Terraform
とPowerShell を組み合わせて自動化を実現しました。
© Start Today Technologies Inc. ・OS 設定 ディスクフォーマット / ローカルグループポリシー変更など
パフォーマンス最適化 ・DB 作成 ・DB 設定 メモリ割当 / ユーザ作成 / データ投入 / Index 作成など ・仮想マシン作成 ・SQL Server 作成 ・ディスク作成 ・各種設定 監視 / セキュリティ エージェントなど ・PowerShell 呼び出し DB 構築自動化について 仮想マシン上のSQL Server を自動構築(SQL Database の場合も同様の実装) 自動構築 開始 完了
© Start Today Technologies Inc. DB スケールアウト
© Start Today Technologies Inc. DB スケールアウトについて 今回採用したDBのスケールアウト戦略についてご説明します。
© Start Today Technologies Inc. DB スケールアウトについて プライマリDB(マスター)とセカンダリDB(リードレプリカ)を 負荷分散に用います。 プライマリDB
(マスター) セカンダリDB (リードレプリカ)
© Start Today Technologies Inc. イメージ1(スケールアウト前) 高負荷時の対策として、DB性能強化のスケールアップ、 セカンダリDB を増やすことでのスケールアウトが考えられます。 プライマリDB
セカンダリDB
© Start Today Technologies Inc. イメージ1(スケールアウト後) 高負荷時の対策として、DB性能強化のスケールアップ、 セカンダリDB を増やすことでのスケールアウトが考えられます。 プライマリDB
セカンダリDB追加
© Start Today Technologies Inc. イメージ2(スケールアウト前) DB 構築自動化により、参照系 DB であれば
プライマリDB を追加し、 構成自体をスケールアウトすることが容易になりました。 プライマリDB セカンダリDB
© Start Today Technologies Inc. イメージ2(スケールアウト後) DB 構築自動化により、参照系 DB であれば
プライマリDB を追加し、 構成自体をスケールアウトすることが容易になりました。 プライマリDB セカンダリDB プライマリDB追加 セカンダリDB追加
© Start Today Technologies Inc. イメージ3(スケールアウト前) 2種類のスケールアウト戦略を組み合わせることで、より柔軟にスケー ルさせることが可能となりました。 プライマリDB セカンダリDB
© Start Today Technologies Inc. イメージ3(スケールアウト後) 2種類のスケールアウト戦略を組み合わせることで、より柔軟にスケー ルさせることが可能となりました。 プライマリDB 追加
セカンダリDB追加 セカンダリDB プライマリDB セカンダリDB追加 セカンダリDB追加
© Start Today Technologies Inc. イメージ4(最終形) セカンダリDB プライマリDB セカンダリDB プライマリDB
セカンダリDB プライマリDB セカンダリDB セカンダリDB セカンダリDB セカンダリDB プライマリDB セカンダリDB 東日本リージョン 西日本リージョン
© Start Today Technologies Inc. イメージ4(最終形) セカンダリDB プライマリDB セカンダリDB プライマリDB
セカンダリDB プライマリDB セカンダリDB セカンダリDB セカンダリDB セカンダリDB プライマリDB セカンダリDB 東日本リージョン 西日本リージョン 複数のDB を東日本リージョン / 西日本リージョン それぞれに配置。 負荷分散、及び、耐障害性を高めています。
© Start Today Technologies Inc. まとめ
© Start Today Technologies Inc. まとめ DB 構築自動化するための Terraform 、PowerShell
を準備するまでが 大変でしたが、結果、DB 構築は楽になり、DB 移行もスムーズに 行えました。 また、スケールアウトによる負荷分散も容易となり、サービス向上に 繋がりました。 今後はさらに運用が楽に、そして、サービスが良くなるよう取り組みた いと思います。
© Start Today Technologies Inc. ご清聴ありがとうございました。