Windows Azure 仮想マシンでの SQL Server か Windows Azure SQL データベースかを選択するうえでの判断基準
このポストは、2 月 14 日に投稿された Choosing between SQL Server in Windows Azure VM & Windows Azure SQL Database の翻訳です。
編集メモ : 今回は、SQL Server クラウド インフラストラクチャ チームの Madhan Arumugam と Guy Bowerman が共同執筆した記事をご紹介します。
概要
Windows Azure では、SQL データをホストする場所として、仮想マシン上で実行される SQL Server (以下 SQL/VM) と Windows Azure SQL データベース (以下 SQL DB) のいずれかを選択できます。SQL/VM と SQL DB はどちらも同じコードをベースとして作成されていますが、クラウド展開においてそれぞれのメリットがあります。この記事は、以前のブログ記事「Windows Azure 仮想マシン内の SQL Server と Windows Azure SQL データベースの比較」を踏まえ、Windows Azure を使用するうえでお客様のアプリケーションやサービスにとって最適な SQL データベース ソリューションを判断していただけるように、簡単なデシジョン ツリー(決定手法)をご紹介します。Windows Azure SQL DB は、マイクロソフトが提供するプラットフォームとしてのサービス (PaaS) であり、数年前にリリースされました。一方 SQL/VM は、マイクロソフトが提供するインフラストラクチャとしてのサービス (IaaS) です。統合的なデータベース サーバー インスタンスと一体となっており、事前構成済みのプラットフォーム イメージのセットとして提供されています。Windows Azure 仮想マシンは、現在プレビュー版を提供しています。
今回は、BI やレポート作成ではなく SQL エンジンを中心にご説明いたします。BI およびレポート作成に関する詳細は、今後の記事で解説する予定です。
Windows Azure で SQL を実行するメリット
Windows Azure はマイクロソフト製品群と深いレベルで統合されており、その一例として SharePoint と Active Directory のようなアプリケーション間の統合が挙げられます。また、統合開発環境によって、異なる展開モデル間でのライセンス統合も実現しました。この緊密な統合は、マイクロソフト製品群の連携について広範なテストを実施することで構築およびサポートされ、高度な相互運用性にもつながっています。さらに、Linux などの複数 OS のサポートに加えて、Windows Azure 仮想マシンは標準的な VHD 形式に準拠しているため、Azure 環境でのインポートおよびエクスポートが容易です。
緊密な統合、標準化、および相互運用性により、従来のオンプレミスからプライベート クラウド、パブリック クラウドにいたるマイクロソフト製品のシームレスかつ一貫性の高いエクスペリエンスを実現しながら SQL Server を実行する環境として、Azure は理想的なクラウド環境となっています。
既存のアプリケーションやサービスの管理に費やす総保有コストの削減、最新のクラウド アプリケーションおよびクラウド サービスに適した効率的なプラットフォームの提供を実現するため、現在、SQL/VM および SQL DB で技術革新が進められています。さらに、既存アプリケーションと新規アプリケーションを同一のホスト サービスで混在および適合させる機能、およびオンプレミスのアプリケーションとネットワークをハイブリッド モデルとして統合する機能により、非常に高い柔軟性が達成されています。
適切なデータベースソリューションの選択
マイクロソフトのデータベース製品は、物理的なオンプレミス マシン、プライベート クラウド環境、サード パーティのホスティングによるプライベート クラウド環境、パブリック クラウド環境などのさまざまな環境でお使いいただけるため、SQL Server をシームレスに使用可能で、緊密かつ柔軟性が高くオープンなデータ プラットフォームがクラウド環境で実現されています。
各製品は、インフラストラクチャ上でユーザーが管理できるレベル、およびデータベース レベルの統合と自動化によって達成される費用対効果の度合いで差別化されます。また、他にも互換性などの要素に違いがありますが、これについての詳細は、後述のデシジョン ツリーの項で説明します。
この記事では SQL/VM と SQL DB の違いに注目し、お客様が必要とする費用対効果および管理の自由度に応じて、どちらのデータベース サービスが適しているかを判断する方法をご説明します。
デシジョン ツリー
このデシジョン ツリーでは、アプリケーションおよびサービスに特有の判断基準として、主に以下の事項を考慮します。
1.アプリケーションおよびサービスが新規か既存か : 既存のアプリケーションを移行 (「リフト & シフト」) する場合はオンプレミス アプリケーションの動作のエミュレーションが必要なことがよくありますが、新規アプリケーションでは通常必要ありません。
2.アプリケーションおよびサービスの要件 : SQL/VM で必要とされる互換性、ネットワーク、セキュリティに関する要件を確認します。詳細については、「Windows Azure 仮想マシン内の SQL Server と Windows Azure SQL データベースの比較」をご覧ください。また、SQL DB と SQL/VM の互換性の違いをまとめたリストの完全版は、MSDN 記事「ガイドラインと制限事項 (Windows Azure SQL データベース)」をご覧ください。
3.データベースのサイズ: SQL DB はエディションに応じたサイズ制限があり、現時点での最大サイズは SQL DB 1 つあたり 150 GB となっています。SQL/VM では、現時点での仮想マシンの最大サイズは ExtraLarge (CPU コア 8 個、RAM 14 GB、最大ディスク空間 16 TB) です。仮想マシンのサイズについての詳細は、MSDN 記事「仮想マシンのサイズの構成方法」をご覧ください。
4.スケールメリットを考慮した ( 再 ) 構築 / パーティションの必要性: 「Windows Azure SQL データベースでのフェデレーション」にあるような、SQL DB のスケールアウト テクノロジによって対応できる柔軟性およびスケールアウトの要件を確認します。通常、SQL DB のスケール メリットおよび柔軟性を最大限に活用するには、アーキテクチャをある程度再構築する必要があります。SQL DB でスケールアウト可能な設計を実施する際の考慮事項は、こちらのページを参照してください。
その他の判断基準
上記に挙げた大まかな基準について考慮するにつれ、たとえば新しいアプリケーションで必要な機能が SQL DB ではサポートされていないなど、データベース ソリューションの選択に影響を与えるような、より細かい設計基準や必要サイズが明らかになっていきます。お客様のアプリケーションの要件をすばやく簡単に評価するためのフレームワークとして、このデシジョン ツリーをお役立てください。
重要な判断基準の 1 つとして、IaaS と PaaS の各データベース ソリューションの SLA があります。IaaS の場合、Windows Azure の SLA がすべての仮想マシンのストレージに適用されます。Windows Azure 仮想マシンは、一般提供開始後、仮想マシン レベルの SLA によって、1 つのアベイラビリティ セット内の 2 つ以上のインスタンスに対する 99.95% の可用性が保証される予定です。SQL DB は、データベース レベルの可用性が SLA で保証されます。詳細については、こちらのページをご覧ください。SLA 適用範囲外での運用は、お客様の責任となります。
IaaS と PaaS のいずれか一方のみが、アプリケーションおよびサービスに最適なソリューションとなるとは限りません。PaaS と IaaS の両方のサービスが含まれる混在モードのアプリケーション パターン (Azure で SQL DB と SQL/VM を併用するなど) が、アプリケーションの開発、展開において、現実的かつ実際的な選択肢となることもあります。混在させることで、BI やオンプレミスから移行したアプリケーションなどの互換性と管理が必要なコンポーネントを仮想マシンで実行するアプリケーションを利用すると同時に、SQL DB のデータベース機能を使用して DBA およびデータベースのコストを最小化することもできます。
まとめ
SQL DB と SQL/VM はどちらも、さまざまなデータベース アプリケーションの要件を満たすうえで有効なアプローチとなります。
簡単にまとめると、SQL/VM は次のような場合に適しています。
- オンプレミスの SQL Server と完全な互換性を確保する場合
- 既存のアプリケーションに最低限の変更を加えたい場合
- インフラストラクチャ レベルでの分離が必要な場合
- お客様のアプリケーションおよびサービスが「計画的なデータベース スケーリング (スケールアップ)」を考慮して設計されている場合
SQL DB は次のような場合に適しています。
- クラウド ベースのアプリケーションを新たに構築する場合
- データベースの管理コストを削減し、アプリケーション層に重点を置きたい場合
- データベース レベルでの分離が必要な場合
- お客様のアプリケーションおよびサービスが「計画的ではない無制限のデータベース スケーリング (スケールアウトによる柔軟性)」を考慮して設計されている場合
参考資料
Gregory Leake の投稿記事「Windows Azure 仮想マシン内の SQL Server と Windows Azure SQL データベースの比較」: https://blogs.msdn.com/b/windowsazurej/archive/2012/07/02/data-series-sql-server-in-windows-azure-virtual-machine-vs-sql-database.aspx
ガイドラインと制限事項 (Windows Azure SQL データベース)
Hyper-V 上の仮想化環境に適用される、仮想化環境で実行している SQL Server のサポートに関する声明 (機械翻訳): https://support.microsoft.com/kb/956893