クラウド成功のカギを握る「クラウド ハンドシェイク」
このポストは、6 月 15 日に投稿された Cloud Success Comes in Completing the Cloud Handshake の翻訳です。
企業のお客様がクラウド コンピューティング プラットフォームを利用する際に必ず懸念されるのは、アプリケーションに関して明確なサービス レベルが保証されるかどうかということです。Microsoft Azure を始めとするクラウドの多くは、個々のサービスに対してサービス レベル アグリーメント (SLA) を発行していますが、これはアプリケーション自体を保証するものではありません。クラウドベース アプリケーションの可用性とパフォーマンスを保証し、お客様の不安を解消するためにはどうすればよいのでしょうか。
その答えは、「クラウド ハンドシェイク (Cloud Handshake)」の実現にあります。
クラウドベースのリソースを活用すると、マルチテナントの自動化されたスケーラブルなサービスを利用できます。これらのサービスは、複数の顧客が常に同じ方法で利用できるように設計されています。標準化により、他にはないマイクロソフト独自のスケール、パフォーマンス、従量制によるコスト効率といったメリットを活用でき、さらに定義済みの SLA も提供されます。標準化されたサービスに加えて、マイクロソフトでは構成オプションも提供しており、お客様のワークロードや目的に最適な形で複数のクラウド サービスを結合することができます。標準的なクラウド サービス以上の要素に精通していることで、必要なワークロードに固有の保証を得ることができるのです。クラウド ハンドシェイクは、マイクロソフトが提供するサービスの知識と、その知識に基づく適切なワークロードの構築と構成によって成立します。
簡単な例を挙げましょう。99.95% の SLA が保証されている Virtual Machines にデプロイされたアプリケーションに関して、99.99% の SLA を保証することは可能でしょうか。答えは「可能」です。アプリケーションを VM のクラスターにデプロイし、各クラスター ノードを個別のコンピューティング リソースで実行することで実現します。Azure ではこれを可用性セットと呼んでいます。さらに高い SLA を保証する必要がある場合は、まもなく 22 のリージョンで提供が開始されるサービスを利用して、ワークロードを複数の Azure リージョンに分散させ、データセンターのサービス停止や地域ごとの自然災害からワークロードを保護することができます。このシンプルな原則を実装のあらゆる側面 (ネットワーク、Storage、App Services、Cache など) に適用することで、クラウド ハンドシェイクを実現することができます。
ハンドシェイクを確実に行うために、企業が採用すべき開発および運用のアプローチのベスト プラクティスについて、マイクロソフトは以下の 5 点をご提案します。
- 反復可能な開発プロセスから始める。お客様のグループがアジャイル開発や継続的デリバリに移行した場合でも、引き続きウォーターフォール モデルを採用している場合でも、まずは明確な手法を確立し、コードのチェックイン、テスト自動化、デプロイに一貫したツールを活用することをお勧めします。Visual Studio Online では、これらのプロセスを自動化すると共に、複数の言語、ツール、ソース コード リポジトリ、デプロイ対象で作業しているプログラマの共同作業による設計を支援します。
- 運用分析を利用する。アプリケーションのパフォーマンスや実行状況を監視および評価し、コード、構成、デプロイの問題の発生を迅速に特定することで、開発や管理プロセスに迅速に還元することができます。新しい Visual Studio Application Insights サービスではコードを確認し、Azure 管理ポータルでは構成およびサービスの詳細を確認することができます。これらのツール (あるいは CLI や PowerShell) を使用して、しきい値やアラートを設定し、発生した問題の根本原因の特定に役立てることで、迅速に回避策を講じることができます。
- SLA の依存関係を理解する。前述の簡単な例では、SLA の低いサービスでも高い SLA 結果を得られることをご説明しました。しかし、相互に依存関係を持つ複数のサービスを結合したアプリケーションの場合には、反対のケースも起こり得ます。たとえば、SLA 99.95% の Web サービスを SLA 99.95% のデータベースに関連付け、SLA 99.95% の CRM SaaS サービスと統合したモバイル アプリケーション サービスを構築したとします。このときのサービス全体の SLA は 99.95% にはなりません。サービスの組み合わせによってダウンタイムが発生する可能性があるためです。常に SLA 99.95% を保証したい場合には、すべての依存関係について冗長性を確保しなければなりません。そのためには以下を実施する必要があります。
- 障害を想定して設計する。このクラウド アプリケーションの設計に関する手法は Netflix (英語) によって数年前に一般に広まり、今日も変わることなく伝えられています。クラウドの実装にて最良の結果を得るためには、発生し得る問題を想定し、コードの設計と、構成、テスト、デプロイ モデルの両方について、すべての可能性を確実に考慮する必要があります。これを一貫して行うために、クラウド業務の成熟と共に、過去の開発の前例からベスト プラクティスを学習する必要があります。マイクロソフトでは、すべてのお客様がベスト プラクティスを学び共有することで、最大限の成功を収めていただけるように、フォーラム、テンプレート (英語)、投稿型のドキュメント モデル (英語) の活用を強く推奨しています。マイクロソフトの Operations Management Suite は、アプリケーションのデプロイ先に関係なく、お客様の目的達成に必要な統制、バックアップと災害復旧、セキュリティ保護を提供します。
- テスト、シミュレーション、評価、反復を行う。最後に、学習を続けることが重要です。積極的な運用環境のデプロイ監視はもちろんのこと、顧客トラフィックに関するテスト、監視、追跡、シミュレーションを実施すればするほど、クラウド ハンドシェイクに関するスキルは向上します。Azure の従量課金モデルに加え、すべての MSDN アカウントにテスト/開発目的のクレジットが提供されるため、これを継続的に活用しない手はありません。学習で得た知識を開発チームに迅速に還元し、アプリケーションを拡張および調整することで、開発プロセスのループは完結します。
さらに深く学習したい場合は、Azure Machine Learning (英語) を活用することで、個々の要素やコードの評価だけでなく、顧客センチメント (英語)、操作性 (英語)、平均的なカスタマー エクスペリエンスに対する主要なカスタマー エクスペリエンス (英語) の分析、コスト最適化 (英語)、アプリケーション基本設計の範囲外の外部要因 (英語) の影響予測など、より広い範囲での知識を習得することができます。結局のところ、企業のお客様が最も気にするのはアプリケーションの稼働率やパフォーマンスであっても、顧客の関心は提供されるエクスペリエンス (英語) にあります。顧客にとって重要なのは、そのエクスペリエンスが自分のニーズにどれだけ合ったものであるか、そのエクスペリエンスを利用する背景 (英語) とタイミング、生活を充実させるかどうかといったことです。これらの期待に応えることで、ロイヤルティが構築 (英語) され、最終的には企業と顧客の両方の利益 (英語) につながります。
ここまでの説明で圧倒されてしまった方も、心配はご無用です。クラウド ハンドシェイクにおける課題を解決するのは、お客様 1 人ではありません。Azure エコシステム全体で取り組みます。実証済みの構成によってワークロードをデプロイしたい場合は、Azure リソース テンプレートを利用できます。構成固有の要件を減らしたいのであれば、Cloud Foundry といった Azure 上で実行されているいずれかのアプリケーション プラットフォーム サービスか Azure App Service を基盤としてアプリケーションを開発することができます。Azure App Service では、サービスに関する SLA が提供され、基盤となる構成はマイクロソフトが担当します。
クラウド ハンドシェイクに関するその他の役割管理についても、多数の Microsoft Azure クラウド パートナーがサポートします。このトピックについては、次回のブログでご紹介します。