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.5k
Other Decks in Programming
See All in Programming
チームリードになって変わったこと
isaka1022
0
150
GitHub Actions × RAGでコードレビューの検証の結果
sho_000
0
120
Spring gRPC について / About Spring gRPC
mackey0225
0
200
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
1
310
Rubyでつくるパケットキャプチャツール
ydah
1
630
バックエンドのためのアプリ内課金入門 (サブスク編)
qnighy
8
1.6k
【PHP】破壊的バージョンアップと戦った話〜決断と説得
satoshi256kbyte
0
110
Djangoアプリケーション 運用のリアル 〜問題発生から可視化、最適化への道〜 #pyconshizu
kashewnuts
1
130
DevinとCursorから学ぶAIエージェントメモリーの設計とMoatの考え方
itarutomy
1
550
Alba: Why, How and What's So Interesting
okuramasafumi
0
240
ATDDで素早く安定した デリバリを実現しよう!
tonnsama
1
2.5k
『改訂新版 良いコード/悪いコードで学ぶ設計入門』活用方法−爆速でスキルアップする!効果的な学習アプローチ / effective-learning-of-good-code
minodriven
29
5k
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
171
14k
Docker and Python
trallard
43
3.2k
Code Review Best Practice
trishagee
65
17k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
11
910
The World Runs on Bad Software
bkeepers
PRO
67
11k
A Tale of Four Properties
chriscoyier
158
23k
VelocityConf: Rendering Performance Case Studies
addyosmani
327
24k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
3k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.2k
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. ご清聴ありがとうございました。