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
2.1k
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
あなたはJVMの気持ちを理解できるか?
skrb
5
2k
消し忘れリソースゼロへ!私のResource Explorer活用法
cuorain
0
140
AWSエンジニアに捧ぐLangChainの歩き方
tsukuboshi
0
220
マルチデータプロダクト開発・運用に耐えるためのデータ組織・アーキテクチャの遷移
mtpooh
0
100
第27回クラウド女子会 ~re:Invent 振り返りLT会~ 宣言型ポリシー、使ってみたらこうだった!
itkr2305
0
290
EDRからERM: PFN-SIRTが関わるセキュリティとリスクへの取り組み
pfn
PRO
0
110
GitLab SelfManagedをCodePipelineのソースに設定する/SetGitLabSelfManagedtoCodePipeline
norihiroishiyama
1
120
ObservabilityCON on the Road Tokyoの見どころ
hamadakoji
0
210
Makuake*UPSIDER_LightningTalk
upsider_tech
0
200
Power BI は、レポート テーマにこだわろう!テーマのティア表付き
ohata_ds
0
120
オーティファイ会社紹介資料 / Autify Company Deck
autifyhq
10
120k
Japan AWS Jr. Championsがお届けするre:Invent2024のハイライト ~ラスベガスで見てきた景色~
fukuchiiinu
0
1.1k
Featured
See All Featured
RailsConf 2023
tenderlove
29
980
We Have a Design System, Now What?
morganepeng
51
7.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
Building an army of robots
kneath
302
45k
Visualization
eitanlees
146
15k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.4k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Designing for Performance
lara
604
68k
Statistics for Hackers
jakevdp
797
220k
The Pragmatic Product Professional
lauravandoore
32
6.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
98
18k
Building Adaptive Systems
keathley
39
2.4k
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.