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
2.1k
ZOZOTOWNリプレイスにおけるKubernetes活用 / zozotown replace kubernetes
tsurumi
8
8.5k
Other Decks in Programming
See All in Programming
Androidアプリのモジュール分割における:x:commonを考える
okuzawats
1
280
週次リリースを実現するための グローバルアプリ開発
tera_ny
1
1.2k
歴史と現在から考えるスケーラブルなソフトウェア開発のプラクティス
i10416
0
300
AHC041解説
terryu16
0
370
watsonx.ai Dojo #6 継続的なAIアプリ開発と展開
oniak3ibm
PRO
0
170
どうして手を動かすよりもチーム内のコードレビューを優先するべきなのか
okashoi
3
870
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
3
590
Fibonacci Function Gallery - Part 2
philipschwarz
PRO
0
210
ゼロからの、レトロゲームエンジンの作り方
tokujiros
3
1k
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
6
1.4k
為你自己學 Python
eddie
0
520
PicoRubyと暮らす、シェアハウスハック
ryosk7
0
210
Featured
See All Featured
The Language of Interfaces
destraynor
155
24k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
A better future with KSS
kneath
238
17k
A Tale of Four Properties
chriscoyier
157
23k
The Invisible Side of Design
smashingmag
299
50k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
113
50k
Optimizing for Happiness
mojombo
376
70k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
What's in a price? How to price your products and services
michaelherold
244
12k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
230
52k
Typedesign – Prime Four
hannesfritz
40
2.5k
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. ご清聴ありがとうございました。