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.6k
ZOZOTOWN Azure SQL Database 節約術 / ZOZOTOWN SQL Database Cost Reduction
tsurumi
1
2.1k
ZOZOTOWNリプレイスにおけるKubernetes活用 / zozotown replace kubernetes
tsurumi
8
8.6k
Other Decks in Programming
See All in Programming
RuboCop: Modularity and AST Insights
koic
2
2.1k
VitestのIn-Source Testingが便利
taro28
8
2.3k
一緒に働きたくなるプログラマの思想 #QiitaConference
mu_zaru
77
19k
Lambda(Python)の リファクタリングが好きなんです
komakichi
3
230
Glue Studio Visual ETL実装時にハマったこと
kokitamura
0
100
大LLM時代にこの先生きのこるには-ITエンジニア編
fumiyakume
7
3.2k
Ruby on Railroad: The Power of Visualizing CFG
ydah
0
260
AIコーディングエージェントを 「使いこなす」ための実践知と現在地 in ログラス / How to Use AI Coding Agent in Loglass
rkaga
4
1.1k
カウシェで Four Keys の改善を試みた理由
ike002jp
1
110
Jakarta EE Meets AI
ivargrimstad
0
460
RubyKaigi Dev Meeting 2025
tenderlove
1
720
REALITY コマンド作成チュートリアル
nishiuriraku
0
110
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
336
57k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.6k
Building an army of robots
kneath
305
45k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.2k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Language of Interfaces
destraynor
157
25k
Done Done
chrislema
184
16k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
23
2.7k
Thoughts on Productivity
jonyablonski
69
4.6k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
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. ご清聴ありがとうございました。