Azure Service Fabric の一般提供を開始

執筆者: Mark Fussell (Principal Program Manager, Hyper-scale Compute )

このポストは 3 月 31 日に投稿された Azure Service Fabric is GA! の翻訳です。

 

本日 //Build カンファレンスにおいて、Azure Service Fabric の一般提供開始が発表されました。また、Windows Server 向け Service Fabric のプレビューも発表されました。これで Service Fabric をオンプレミスや他のクラウド サービスにインストールできるようになり、アプリケーションの移植性を最大限に高めることができます。この他、Linux 向け Service Fabric のプレビューも発表されました。

まずは、これまでの経緯について簡単にご説明しましょう。マイクロソフトもお客様と同じくクラウドへの移行を進めてきました。オンプレミスからクラウドへ、またモノリシック アプリケーションからマイクロサービス ベースのアプリケーションへというマイクロソフト内部の進化に対応するために、Service Fabric を数年前に開発して、課題に対処してきました。

Service Fabric は豊富な機能を備えた、完成されたマイクロサービス アプリケーション プラットフォームです。ライフサイクル管理、ステートレス サービス、ステートフル サービスを標準サポートし、大規模な環境に対応できるパフォーマンス、24 時間 365 日の可用性、優れたコスト効率といった特徴を備えています。マイクロサービス アーキテクチャおよびマイクロサービス プラットフォームのメリットについては、Mark Russinovich が解説するブログ記事ビデオ (英語) をご覧ください。

Service Fabric は 5 年以上にわたってマイクロソフトの運用環境で使用されており、Azure SQL Database、Azure DocumentDB、Intune、Cortana、Skype for Business など、幅広いサービスに活用されています。中でも最大の用途は、何百というサーバーの何十万のステートフル/ステートレスなマイクロサービスの管理です。マイクロソフトはこのテクノロジをそのまま「サービスとしての Service Fabric」として Azure でリリースしました。そして今回、スタンドアロンの Windows Server 向け Service Fabric のプレビューがリリースされたことで、お客様のデータセンターや他のクラウド サービスにクラスターを作成できるようになりました。

Visual Studio でのマイクロサービス アプリケーションの開発

Visual Studio では、Service Fabric のマイクロサービス アプリケーションをきわめて簡単に開発、検証、リリースすることができます。Visual Studio は Service Fabric とシームレスに統合されているため、コーディングやデプロイメントが容易です。また、Service Fabric と同じランタイム環境を使用できるため、1 台のローカル マシンで Service Fabric のマルチサーバー クラスターを再現して、テストやデバッグを行えます。開発者のマシンで動作するコードは Azure でも動作するので、エミュレーターを使用する必要はありません。さらに、Service Fabric には障害分析サービスが含まれており、ホスト マシンや個々のマイクロサービスの障害を人為的に発生させることで、運用環境で実際に障害が発生した場合のアプリケーションの耐久性を確認できます。

19c9d514-1386-4855-99eb-09c2db46bd94

プログラミング モデルとフレームワーク

Service Fabric には、Reliable Services と Reliable Actors という 2 種類のマイクロサービス ベースのプログラミング モデルが標準で用意されています。Reliable Services ではステートレスおよびステートフルなマイクロサービスがサポートされ、ステートフルなサービスは、Dictionary や Queue などの Reliable Collection によって実現されます。Reliable Actors プログラミング モデルでは、マイクロサービスを独立したオブジェクト (「アクター」) としてモデリングし、Service Fabric がデプロイメント、スケーリング、アクター間の通信を処理することで、マイクロサービスのデプロイメントを簡素化します。

Service Fabric では非常に柔軟な開発が可能で、Node.js や ASP.NET core など、他の任意の開発フレームワークを使用することもできます。また、マイクロサービス モデルにより、1 つのアプリケーションの中で複数マイクロサービスに対してフレームワークを組み合わせることができます。

Service Fabric による DevOps

Service Fabric では、宣言型かつモデル駆動型のマイクロサービス アプリケーション モデルを使用できます。このモデルでは、マイクロサービスの集合体からアプリケーションが構成され、各マイクロサービスは個別にバージョン管理され、個々にアップグレードが可能です。Service Fabric ではアプリケーション ライフサイクル管理を容易にするために、個々のマイクロサービスのローリング アップグレードをサポートしています。アップグレードに伴うアプリケーションの正常性の低下が検出されると、自動的に以前のバージョンへのロールバックが行われます。たとえば、あるマイクロサービスのバージョン 2 をデプロイしたことが原因でアプリケーションに障害が発生した場合、Service Fabric によってこのマイクロサービスがバージョン 1 にロールバックされます。この機能により、デプロイメントの安全性が保証され、アプリケーションが不整合または不明な状態になることがありません。

6eb76234-fcdb-4ef6-8d3e-834040625a30

Service Fabric は PowerShell (または Linux 上の Azure CLI) からスクリプトで操作でき、ユーザーのアプリケーション ライフサイクルに組み込むことができるため、マイクロサービス アプリケーションを管理するうえでシームレスな継続的インテグレーション (CI) および継続的デリバリ (CD) を実現できます。

 

ステートフルなマイクロサービス

PaaS プラットフォームの大半はステートレスなマイクロサービスのみをサポートし、状態は外部ストアまたは外部データベースに格納されます。Service Fabric の特徴は、ステートフルなマイクロサービスをネイティブにサポートする点です。ステートフルなマイクロサービスでは、状態はマイクロサービスのローカルに保持 (ローカル ディスクに永続化) され、マイクロサービスに障害が発生した場合には、Service Fabric がレプリカを使用することで高可用性が維持されます。ステートフルなマイクロサービスには、レイテンシの大幅な短縮、パフォーマンスの強化、外部ストアへの依存の軽減といったメリットがあり、アプリケーションの大規模なスケールアウトが可能になります。

 

Azure の Service Fabric

Microsoft Azure のサービスである Service Fabric は、Azure のさまざまな機能やサービスと統合されているため、運用や管理が簡単なうえ、Azure のクラウドのメリットを活用することができます。Azure で Service Fabric を実行することで、Azure Portal や Azure Resource Manager を使用してクラスターのプロビジョニングを効率化したり、ホスト OS の更新中の信頼性を強化したり、アプリケーションのダウンタイムのない Service Fabric ランタイムのアップグレードを自動化したりといったメリットが得られます。

b595dcdc-d6d4-4d5b-a689-f9679d453ca3

Service Fabric は Azure で追加料金なしでご利用いただけます。料金は、Service Fabric のクラスターやマイクロサービスによって使用される基礎部分のコンピューティング、ネットワーク、ストレージの分のみお支払いいただきます。BMW、TalkTalk (英語)、Schneider Electric、CareOtter (英語) をはじめさまざまな業界の 400 社以上のお客様が既に Service Fabric を使用してソリューションを構築しています。

今回の発表内容の詳細については、Service Fabric チームのブログ (英語) でご確認ください。

また、Channel 9 の Seth Juarez と Mark Russinovich による Service Fabric の解説ビデオ (英語) も併せてご覧ください。