こんにちは。今日は、Azure SQL DatabaseのElastic Poolという機能について理解を深めていきたいと思います。
Contents
Elastic Poolとは?
今回はこちらのドキュメントを読んで勉強しました。
https://docs.microsoft.com/ja-jp/azure/azure-sql/database/elastic-pool-overview
Azure SQL Database のエラスティック プールは、予期できない多様な使用ニーズを持つ複数のデータベースを管理しスケーリングするための、シンプルでコスト効率の高いソリューションです。 エラスティック プール内のデータベースは、単一のサーバー上にあり、設定された数のリソースを設定価格で共有します。 Azure SQL Database のエラスティック プールを使用すると、SaaS 開発者は、各データベースのパフォーマンスに弾力性を提供しながら、データベース グループの価格に対するパフォーマンスを所定の予算内で最適化できます。
公式ページより
ふむふむ、ポイントは以下のようです。
- 1つのデータベースサーバ上で複数のデータベースを管理できる
- CPU, メモリ,ストレージなどの物理リソースは各データベースで共有され、リソースが必要なデータベースが、必要なタイミングで必要な分だけリソースが得られるようなスケーリングが自動的に行われる(ユーザは最小/最大リソース量を指定しておくだけ)
- 単一のデータベースの複数持つよりもコストが抑えられる
- 課金は、個別のデータベースに対しては発生せず、エラスティックプール全体で利用していたDTUまたは、物理リソースに応じて発生する(後述)
どういう時にElastic Poolを選択すべきなのか?
こちらもポイントをメモしておきます。
- 普段は利用頻度が低いが、たまに利用の急増が見込まれるデータベースを複数保有している時
(逆に常に利用頻度が中〜高程度のデータベースはElastic Poolを利用すべきではない) - 単一データベースのリソースの総量が、プールに必要なリソースの 1.5 倍を超える場合、エラスティック プールのコスト効率の方が高くなる
こちらの公式ドキュメントに詳細の説明があるのでご覧になられることをお勧めします!
Elastic Poolの価格モデルは?
エラスティックプールの価格モデルは以下の2種類から選択できます。そして、公式ページによると、DTUベースと仮想コアベースでは、仮想コアモデルがデフォルトで推奨されているようですので、エラスティックプールについても同じことが言えそうです。
- eDTUベース(elastic DTUの略で、DTUのエラスティックプール版)
- 仮想コアベース
最新の具体的な料金についてはこちらから確認できます。
https://azure.microsoft.com/ja-jp/pricing/details/sql-database/elastic/
eDTUベースの価格モデル
DTUとは、Database Throughput Unitの略で、CPU、メモリ、読み込み・書き込み速度などを掛け合わせた、リソース量を示す性能指標になります。一言で言うと、最終的なパフォーマンスの水準を保証する課金モデルです。そのパフォーマンスを得るために必要なリソースが内部的に確保されます。クラウド独特のモデルですね・・!
DTUが2倍になれば、これらのリソースも2倍確保され、理想的には性能も2倍になると考えることができます。
eDTUではなくDTUですが、こちらに興味深い実験記事がありましたのでご参考までにリンクを貼っておきます。
さて、eDTUは、エラスティックプールにおけるDTUの考え方で、個別のデータベースではなく、プール全体のDTUとして定義される点が異なりますが、課金モデルの考え方としては、DTUと同じです。
価格ページをみると、以下のような一覧にまとめられています。(Standardサービスレベルの例)エラスティックプールのeDTUを決めにいくためには、プールあたり最大データベース数、及データベースあたりの最大eDTUを目安に決定することができそうです。
個別のデータベースの必要DTUは、Microsoftが提供する以下のツールから見積もることができるようです。
https://dtucalculator.azurewebsites.net/
仮想コアベースの価格モデル
仮想コアは論理CPUを示しており、この価格モデルではハードウェアの世代と物理特性(コア数、メモリ、ストレージ サイズなど)を選択することができます。
仮想コアベース価格モデルでは、コンピューティングリソース、データ・ログストレージ、バックアップストレージに対してお金を支払います。
こちらの方が馴染みのある従来的なモデルと言えます。
価格モデルの決め方
公式ページによると、DTUと仮想コアモデルについては、以下の基準があるようです。
- データベースで消費量が 300 DTU を超える場合は、仮想コア ベースの購入モデルに変換すると、コストが減る可能性がある
Azure PortalでElastic Poolを作成してみる
それでは、Azure PortalからElastic Poolを作成してみます。
Azure SQL データベース(単一)を作成する
はじめに、エラスティックプールの上で動作させるデータベースを作成しておきます。既にデータベースリソースを作成済であれば読み飛ばしていただいて問題ありません。
データベースを稼働させるためには、物理的なリソースをもつサーバーが必要です。これは、事前に作成済のものがあればそれを指定すれば良いですし、なければSQLデータベース作成時に新規作成することができます。
SQLエラスティックプールを使用するかは、この段階では”いいえ”にしておいても問題ありません。同じサーバにエラスティックプールを作成すれば、後から追加可能です。
このデモでは、singledb013とsingledb014の2つの単一のSQLデータベースを作成しました。
SQL エラスティックプールを作成する
続いて、SQL エラスティックプールの作成です。
リソースの作成から、「SQL エラスティックプール」を選択します。
エラスティックプールに含めたいデータベースが決まっている場合は、そのデータベースが稼働しているサーバと同じサーバを指定しておく必要があります。
今回は、先ほど作成したSingle Databaseが稼働するサーバを指定します。
コンピューティングとストレージでは、エラスティックプールのSKUを選択します。今回はDTUベースのモデルの最も安い価格プランを選択しました。
以上で、エラスティックプールの作成が完了しました!
エラスティックプールにデータベースを追加する
エラスティックプールを作成したら、その中にデータベースを追加していきます。
エラスティックプールの「構成」ブレードから、「データベース」タブからデータベースの追加が行えます。
先ほど作成しておいた、エラスティックプールと同じサーバ上で動くSingle Database2つを選択して追加します。
追加すると、エラスティックプールのSKUのリソースに合わせたスケーリングが開始されるため、デプロイの完了には数分程度かかります。
エラスティックプールでできること
最後に、エラスティックプールについてポータル上で行える操作について確認しておきます。
「構成」ブレードでは、プールのSKUの変更、データベースの追加/削除、データベース毎に割り当てるDTUの最小〜最大値の設定を行うことができます。
SKUの変更では、仮想コアベース⇄eDTUベース間の変更も可能です。
続いて、「データベースリソースの使用率」ブレードからは、エラスティックプール、及び各データベースのリソース使用量を確認することができます。構成の見直しに活かすことができます。
その他は、他のリソースと共通でアラートやメトリック、診断ログの採取設定などが行えます。
データベースのスケーリングについては、自動的に行われるため、先ほどの最小/最大DTUを指定する以外の設定がなくてとてもシンプルですね。
以上、Azure SQL Databaseのエラスティックプールについて概要と、簡単なハンズオンを行ってみたまとめでした。
エラスティックプールの利用を検討されている方の参考に少しでもなれば幸いです。
最後までご覧いただきありがとうございました!
おしまい