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 Database Replace
Search
tsurumi
August 29, 2018
Programming
5
3.1k
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.4k
ZOZOTOWN Azure SQL Database 節約術 / ZOZOTOWN SQL Database Cost Reduction
tsurumi
1
1.9k
ZOZOTOWNリプレイスにおけるKubernetes活用 / zozotown replace kubernetes
tsurumi
8
8.3k
Other Decks in Programming
See All in Programming
技術サポートでよく見かけるパターンと便利な活用方法
tamai_63
0
150
Web 開発における Deno Fresh の活用例:ペアプロタイマー timer.team の開発
lef237
1
570
You may not need XXX in Node.js
masashi
5
920
設計の考え方 - インターフェースと腐敗防止層編 #phpconfuk / Interface and Anti Corruption Layer
okashoi
5
720
#KotlinFest 2024 : Kotlin sealed classを用いた、ユーザーターゲティングDSL(専用言語)と実環境で秒間1,000万評価を行う処理系の事例紹介
kazukima
0
360
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
1
740
Get started with Compose Multiplatform!
ogi2ogi
0
520
dbt v1.8で追加された単体テストを触ってみた
k_data_analyst
2
250
about #67401 //go:linkname
andpad
1
18k
ゼロから始める型安全なGraphQL開発
shachi_daikon55
0
100
日付と闘う-和暦は難しい / vs Dates - Japanese Chronology is Difficult
wkwkhautbois
0
190
Kotlin Collection関数をマスター
masayukisuda
0
1.8k
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
243
1.2M
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
10
3.6k
Side Projects
sachag
451
41k
Typedesign – Prime Four
hannesfritz
36
2.2k
Bash Introduction
62gerente
606
210k
[RailsConf 2023] Rails as a piece of cake
palkan
31
4.2k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
119
18k
The Cost Of JavaScript in 2023
addyosmani
25
4.1k
Docker and Python
trallard
36
2.8k
Happy Clients
brianwarren
93
6.5k
KATA
mclloyd
18
12k
The World Runs on Bad Software
bkeepers
PRO
62
10k
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. ご清聴ありがとうございました。