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 Azure SQL Database 節約術 / ZOZOTOWN SQL ...
Search
tsurumi
May 24, 2019
Technology
1
2k
ZOZOTOWN Azure SQL Database 節約術 / ZOZOTOWN SQL Database Cost Reduction
ZOZOTOWN で Azure SQL Database のコスト削減を行いました。
その具体的な方法についてお伝えします。
tsurumi
May 24, 2019
Tweet
Share
More Decks by tsurumi
See All by tsurumi
ZOZOTOWNを支える運用について / zozotown-ops-lightning-talks
tsurumi
1
1.5k
ZOZOTOWNリプレイスにおけるKubernetes活用 / zozotown replace kubernetes
tsurumi
8
8.5k
ZOZOTOWNの抱える巨大データのマイグレーションについて / ZOZOTOWN Database Replace
tsurumi
5
3.2k
Other Decks in Technology
See All in Technology
隣接領域をBeyondするFinatextのエンジニア組織設計 / beyond-engineering-areas
stajima
1
270
スクラムチームを立ち上げる〜チーム開発で得られたもの・得られなかったもの〜
ohnoeight
2
350
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
170
Evangelismo técnico: ¿qué, cómo y por qué?
trishagee
0
360
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
980
Taming you application's environments
salaboy
0
180
100 名超が参加した日経グループ横断の競技型 AWS 学習イベント「Nikkei Group AWS GameDay」の紹介/mediajaws202411
nikkei_engineer_recruiting
1
170
DMARC 対応の話 - MIXI CTO オフィスアワー #04
bbqallstars
1
160
dev 補講: プロダクトセキュリティ / Product security overview
wa6sn
1
2.3k
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
Python(PYNQ)がテーマのAMD主催のFPGAコンテストに参加してきた
iotengineer22
0
470
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Side Projects
sachag
452
42k
Embracing the Ebb and Flow
colly
84
4.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Six Lessons from altMBA
skipperchong
27
3.5k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Facilitating Awesome Meetings
lara
50
6.1k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Transcript
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 株式会社ZOZOテクノロジーズ 開発部
リーダー 鶴見 純一 / 杉山 弘二 ZOZOTOWN Azure SQL Database 節約術
Copyright © ZOZO Technologies, Inc. All Rights Reserved. プロフィール 2016年株式会社スタートトゥデイ工務店
(現 株式会社ZOZOテクノロジーズ)入社。 入社当初はWEARのバックエンドを担当。その後、 2017年冬からZOZOTOWNリプレースを担当。 ZOZOテクノロジーズ 開発部 リプレースチーム リーダー 鶴見 純一
Copyright © ZOZO Technologies, Inc. All Rights Reserved. プロフィール 2017年株式会社スタートトゥデイ工務店
(現 株式会社ZOZOテクノロジーズ)入社。 仕事はクラウド周り。趣味はiOSアプリ作り。 対応ジャンル幅広のクリエイター。 ZOZOテクノロジーズ 開発部 リプレースチーム 杉山 弘二
Copyright © ZOZO Technologies, Inc. All Rights Reserved. アジェンダ ・SQL
Database 節約の経緯 ・SQL Database オートスケール ・SQL Database Read Scale-Out ・監視設定
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
節約の経緯 オンプレで苦労した事の1つは、 データベースをスケールアップさせるのが容易ではない事。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
節約の経緯 オンプレで苦労した事の1つは、 データベースをスケールアップさせるのが容易ではない事。 要望:セール時だけスケールアップさせたい
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
節約の経緯 オンプレで苦労した事の1つは、 データベースをスケールアップさせるのが容易ではない事。 2018/01 冬セール 2018/05 ZOZOWEEKセール 2018/06 夏セール 2018/11 ZOZOWEEKセール / 福袋 ※2018年セール時期実績
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
節約の経緯 オンプレで苦労した事の1つは、 データベースをスケールアップさせるのが容易ではない事。 オンプレでの解決策 セールで耐えられるだけのリソースを事前に用意する。 (ハードウェア調達など)
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
節約の経緯 オンプレで苦労した事の1つは、 データベースをスケールアップさせるのが容易ではない事。 クラウドでの解決策 データベースをスケールアップさせることが可能。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
節約の経緯 参照系データベースをクラウドに移行した。 書込系データベース SQL Server 参照系データベース SQL Server オンプレミス
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
節約の経緯 参照系データベースをクラウドに移行した。 書込系データベース SQL Server 参照系データベース SQL Server オンプレミス
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
節約の経緯 参照系データベースをクラウドに移行した。 書込系データベース SQL Server オンプレミス 参照系データベース SQL Database クラウド(Azure) レプリケーション
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
節約の経緯 クラウドにデータベースを移行し柔軟にスケールできるようになったのは 良いが料金が高い(予算オーバー)・ ・ ・ コスト削減が必要に・ ・ ・
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
節約の経緯 Azure SQL Database 料金 リージョン:東日本 / ハードウェア世代:4世代 / モデル:vCore / サービスレベル:ビジネス クリティカル その他、容量も1GB単位で選択でき課金されます。 Core数 メモリ (GB) 月額 (¥) 4 28 約23.5万 8 56 約47.0万 16 112 約94.1万 24 157 約141.0万 2019年5月時点の金額
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
節約の経緯 コスト節約のために行った2つの事。 • SQL Database オートスケール。 • SQL Database Read Scale-Out。 `
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
オートスケール オートスケールは、2種類の方法が考えられる。 • データベースの CPU やメモリ使用率によってスケールを変更する。 • アクセスの増える時間が分かっていれば時間帯でスケール変更する。 `
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
オートスケール オートスケールについて ZOZOTOWN は1日のアクセスに波があるため、スケール変更を行いコスト削減する。 ` 朝~夕方 アクセス数:普通 夕方~夜 アクセス数:多い 深夜 アクセス数:少ない ZOZOTOWN の場合
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
オートスケール オートスケールについて ZOZOTOWN は1日のアクセスに波があるため、スケール変更を行いコスト削減する。 ` 朝~夕方 アクセス数:普通 夕方~夜 アクセス数:多い 深夜 アクセス数:少ない ZOZOTOWN の場合 CPU:8Core / メモリ:56GB CPU:16Core / メモリ:112GB CPU:4Core / メモリ:28GB
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
オートスケール 例えば、以下のような設定にする。 リージョン:東日本 / ハードウェア世代:4世代 / モデル:vCore / サービスレベル:ビジネス クリティカル ` 時間帯 Core数 メモリ (GB) 1時間 8:00 – 18:00 8 56 ¥644.2 18:00 – 24:00 16 112 ¥1288.5 00:00 – 8:00 4 28 ¥322.1
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
オートスケール 常に 16Core を利用した場合 ¥1,288.5 (16Core) * 24時間 * 30日 = ¥927,720 時間帯別にスケール変更した場合 ¥644.2 (8Core) * 10時間 * 30日 = ¥193,260 ¥1,288.5 (16Core) * 6時間 * 30日 = ¥231,930 ¥322.1 (4Core) * 8時間 * 30日 = ¥77,304 合計 ¥502,494 `
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
オートスケール Azure Automation により自動化させる。 Azure Automation は PowerShell を定期的に実行してくれるサービス。 `
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
オートスケール スケール変更する PowerShell を用意する。 Set-AzSqlDatabase -ResourceGroupName <resource_group> ` -DatabaseName <database_name> ` -ServerName <server_name> ` -Edition <edition> ` -ComputeGeneration <compute_generation> ` -VCore <core>
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
オートスケール Azure Automation の Runbook に PowerShell を登録し、 スケジュールを決めるだけでスケールできるようになる。 CPUやメモリの使用率でスケールさせる場合は、定期的にCPUやメモリのチェックを Azure Automation に組み込む。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
オートスケール メリット • コスト削減できる。 • 仕組み化したことでセール時も同様の対応が可能 デメリット • ビジネス クリティカルの場合、ZOZOTOWNだとスケール変更に30分程度かかる。 (スケールの時間はモデル、サービスレベル、容量により異なります) • スケール変更時(切替時)に10秒程度の切断がある。 • スケールダウンでメモリも小さくしすぎると、主要データがメモリに乗らなくなる可能性がある。 (パフォーマンス劣化の可能性) `
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
Read Scale-Out ユーザ
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
Read Scale-Out ユーザ Primary Replica Secondary Replica Secondary Replica DTUモデル Premium または、vCore モデル ビジネス クリティカルを利用すると3重化される。 Read Scale-Out にて Secondary Replica の1つを Read することが可能となる。 同期
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
Read Scale-Out 特徴 • Primary Replica はデータの Read / Write が可能。 • Secondary Replica はデータの Read のみ可能。 デフォルトで Read 機能は OFF になっているため利用するときは有効化が必要。 • Secondary Replica は2つ作成されるが、Read として利用できるのは1つのみ。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
Read Scale-Out Azure Portal から簡単に設定可能
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
Read Scale-Out PowerShell でも設定可能 Set-AzSqlDatabase -ResourceGroupName <resource_group> -ServerName <server_name> ` -DatabaseName <database_name> ` -ReadScale Enabled
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
Read Scale-Out 接続時に Primary Replica、Secondary Replica を指定する # Primary Replica接続 Server=tcp:<server_name>;Database=<database_name>;ApplicationIntent=ReadWrite; User ID=<user_id>;Password=<password> # Secondary Replica接続 Server=tcp:<server_name>;Database=<database_name>;ApplicationIntent=ReadOnly; User ID=<user_id>;Password=<password>
Copyright © ZOZO Technologies, Inc. All Rights Reserved. SQL Database
Read Scale-Out メリット • 1台のデータベース料金で、2台分の Read として利用できる。 デメリット • Secondary Replica のメトリクスが簡単に取得できない。 標準でメトリクス取得が用意されていないため、データベースに接続し 直接参照しないとメモリやCPUの値が取れない。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 監視設定 Read
Scale-Out のデメリットをどのように解決し、 運用しているかをお話させていただきます。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. Read Scale-Out
のデメリット ・Azure 標準の機能では、 Secondary Replica の メトリクス取得ができない。 ・監視できないサービスは運用できない。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. Read Scale-Out
のデメリット ・Azure 標準の機能では、 Secondary Replica の メトリクス取得ができない。 ・監視できないサービスは運用できない。 Secondary Replica も含めた、カスタムメトリクス収集システムを 自前で作って Datadog で運用している。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 監視ポイント システム監視の要件として、
Read Scale-Out を使用する場合でも、 CPU、メモリ、ディスクI/Oのメトリクスは必要。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 監視システムに必要な仕様 ・Secondary
Replica も含めた、定期的なメトリクス取得 ・ジョブやレプリケーションなどの、各種カスタムメトリクス取得 ・台数増減に合わせた稼働しているデータベースのメトリクスを動的に取得 ・安定した定期実行 など
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 定期実行を行うシステムを構築する場合の選択肢 ・Virtual
Machine を立てて cron で定期実行させる。 ・OSS系のジョブスケジューラーを使う。 など
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 定期実行を行うシステムを構築する場合の選択肢 ・Virtual
Machine を立てて cron で定期実行させる。 ・OSS系のジョブスケジューラーを使う。 ┗ kubernetes の 「CronJob」 を選択。 弊社では、クラウドで運用するアプリケーションを kubernetes で運用している。 監視システムの運用環境も kubernetes に統一することで、 管理の面でも運用負荷が下がることから、 kubernetes CronJob を選択した。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. kubernetesとは? 簡単に言うと、
コンテナ化したアプリケーションのデプロイ、スケーリング、および管理を行 うための、オープンソースのコンテナオーケストレーションシステム 現在では、主要クラウドベンダーがサポートする、プラットフォーム。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. kubernetes CronJob
とは? 定期実行を実現するための kubernetes リソース。 kubernetes CronJob を使用して、 ターゲットに合わせたカスタムメトリクス収集システムを稼働させ、 Datadog で可視化をして、監視システムを構築・運用している。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. CronJob のメリット:コンテナの鮮度
・定期実行で Jobコンテナが新規で起動するため、 毎回フレッシュなコンテナが起動し、終了後はコンテナは破棄される。 Jobコンテナ内にキャッシュやゴミがたまらない。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. CronJob のメリット:機能性
・ジョブスケジューラーなので cron にはない自動リトライや重複実行の制御、生存期間設定など 使いやすい。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. CronJob のメリット:汎用性・メンテナンス性
・マニフェストファイルに 環境変数や秘匿情報を設定できるため、 稼働設定の変更が容易。1種類の Jobイメージを全ターゲットに流用できるため、 汎用性・メンテナンス性が良い。 もちろん、汎用性を考慮したコンテナ設計は必要。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. CronJobのメリット:安定性 ・Job
のスケジュール実行の際、Node の空きスペースを考慮して、 いい感じに Pod を配置してくれるため、安定して稼働する。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. 使用する kubernetes
リソース ・Jobコンテナ: cronjob ( monitor-cronjob ) 対象データベース(Read-Scale-Out の Secondary Replica)のメトリクス情報を API に問い合わせ。取得したメトリクスを Datadog に送信する。 ・APIコンテナ: deployment ( monitor-deployment ) 任意のデータベースに DMV(動的管理ビュー)の情報取得クエリを発行し、JSON返却。 ・ClusterIP: service ( monitor-service ) deployment を Cluster内で名前解決させる。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. メトリクス収集システムの構成
Copyright © ZOZO Technologies, Inc. All Rights Reserved. Datadogによる、メトリクスの可視化 ・Read
Scale-Out を使用した場合でも、Primary Replica と Secondary Replica のメトリクスを取得・可視化することができた。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. Datadog による、Alerting
・メトリクスを使用して、閾値を利用してスラックへアラートする。
Copyright © ZOZO Technologies, Inc. All Rights Reserved. PagerDuty で
OnCall ・緊急時には、PagerDuty で監視担当者へオンコール
Copyright © ZOZO Technologies, Inc. All Rights Reserved. ちなみに、メトリクス収集システムを稼働している kubernetes
の監視はどうしてるの? ・Datadog には、「Azure Integration」や「kubernetes Integration」があり、 各種標準的なメトリクス取得ができるので、これを使う。 なお、Azure Integration では Secondary Replica のメトリクスは 現在、取得できない。 ※2019年5月23日現在
Copyright © ZOZO Technologies, Inc. All Rights Reserved. まとめ Azure
Automation、Read Scale-Out 、kubernetes CronJobを組み 合わせて システムを構築することで、当初のコストから約70%程度 削減することができた。 システム刷新する場合、コストも大事な要素。 ビジネスにも影響があるため、非常に良い取り組みとなった。
Copyright © ZOZO Technologies, Inc. All Rights Reserved.