パート1: Azure App Service API Appsの詳細とFAQ

Azure App Serviceとは何か?

3/24に、我々はAzure App Service (英語 / 日本語) を発表しました。簡単に言うと、これは、Webアプリ、モバイル アプリ、ロジック アプリ、APIアプリを開発できる、共通のプラットフォームです。これは、実績のあるテクノロジ、具体的には (Azure Web Appsと呼ばれるようになった) Azure Websitesを基にしています。共通のインフラストラクチャがあることによって、アプリを一緒に、または独立してスケールできること、リソースを共有できること、アプリをシームレスに統合できることなど、多数の利点を得られます。

APIアプリの構築

構築できる新しい種類のアプリの1つが、APIアプリです。単にWebアプリを作成して、そこにAPIを配置できないのか、と思うことでしょう。はい、できますが、API Appsは、単なるホスティングより多くの機能を持っています。APIアプリを構築する際の、いくつかの利点は次の通りです:

  • 自分のアプリからそのAPIを使用するために必要となるコードを、自動生成できます。
  • ロジック アプリ内で、自分のAPIアプリを使えます。
  • (パブリックのMarketplace、またはプライベートの) ギャラリーに、APIアプリを載せられます (現在のプレビューでは利用できません)。
  • APIアプリを自動更新できます (現在のプレビューでは利用できません)。

APIアプリは、.NET、Node.js、PHP、Python、Javaなど、Webアプリがサポートできる任意のテクノロジをサポートできます。APIアプリを構築、デプロイした際に、舞台裏では、我々があなたのためにWebアプリを作成し、それがAPIアプリであることを示す特殊ないくつかのメタデータを配置しています。また、APIアプリは、apiapp.jsonという特殊なファイルを、ルートに持つ必要があります。このファイルには、作者、概要、IDといった、APIアプリ関連のメタデータが含まれています。これらのメタデータは、現在のプレビューでは使われていませんが、今後活用される予定です。このページで (英語 / 日本語 / 日本語)、さらなる情報を得られます。ページの半ばに、apiapp.jsonファイルに追加できるすべてのプロパティの、詳細な説明があります。

image

APIアプリの構築を始めるには、最新のAzure SDKを入手していることを確認してください。現在、Azure App Service SDKは、Visual Studio 2013でのみ動作します。SDKをダウンロード (英語 / 日本語)、インストールしたら、既存のWeb APIを移行するか (英語 / 日本語 / 日本語)Web APIを新規作成する (英語 / 日本語 / 日本語) という、2つの選択肢があります。

APIアプリの動作

API Appsの力は、発見と使用が簡単であることから来ています。我々の長期ビジョンは、通常のREST APIからOData APIまでのすべてを、プラットフォーム上で実行し、そこから利点を得られるようにすることです。これを実現するには、我々は、これらのAPIが何をできるかを記述し、その機能を表現する拡張可能なモデルを持つ必要があります。Swagger 2.0 (英語 / 日本語) を使うことで、これを実現しています。APIアプリを適切に構成するためには、Swagger 2.0メタデータ エンドポイントを持つ必要があります。我々のプラットフォームが、このエンドポイントに到達し、APIの機能を発見し、効率的にAPI定義を見つけます。Swagger 2.0メタデータは、このためだけに必要です。あなたの顧客、あなた、APIを使用したい人は、特殊なツールを必要としないので、ここに結合はありません。我々のAzure APIアプリ クライアントを使う場合は、あなたが我々のツールでAPIアプリを指定すると、我々があなたのためにコードを生成します。APIアプリ クライアント生成は、任意の有効なSwagger 2.0メタデータ ファイルで動作するので、たとえAPIアプリが動作していなくても、あなたがSwagger 2.0メタデータ ファイルを持ってさえいれば、我々はあなたのためにコードを生成できます。コードはあなたのものであり、コードは部分クラスなので、好きなように拡張できます。

Azure App Service API Appsのアーキテクチャ概要

APIアプリを作成したら、自分のAzureサブスクリプションにそれをデプロイしたいでしょう。APIアプリをデプロイする際に、いくつかのことを訊かれます:

  • アプリ サービス プラン: これは、基になるインフラストラクチャがどんな機能 (料金レベル、アプリをホストするVM数など) を持つかを記述します。
  • リソース グループ: これは、リソースの分離の単位です。異なるAPIアプリが利用可能なリソースを分離したいときや、APIアプリの発見を分離したいときに、リソース グループが役立ちます。あるリソース グループ内のロジック アプリは、そのリソース グループ内のAPIアプリだけを発見できます。また、すべての依存関係を確認できるので、このようにリソースを管理するのは非常に簡単です。
  • アクセス レベル: 誰がAPIにアクセスできるか? オプションは、パブリック匿名、内部、パブリック認証済みです。
  • リージョン: APIアプリをデプロイしたいリージョン。

image

デプロイが完了した後に、リソース グループ内に「Gateway」という別のアプリがあることに気付くでしょう。概念的には、すべてのAPIアプリは、ゲートウェイの背後に存在しています。ゲートウェイは、API管理や認証などの機能を処理し、今後、さらなる機能を処理する予定です。APIアプリにアクセスしようとすると、ゲートウェイとの通信があり、認証済みの呼び出しの場合には、ゲートウェイがアクセス対象のAPIアプリにトークンを渡します。また、ゲートウェイは、定義、名前、パッケージのバージョンといった、APIアプリのメタデータを持っています。

マイクロサービス アーキテクチャの実装

想像できるように、相互に通信し、独自の永続化レイヤーを持ち、認証を共有する、複数の独立したAPIアプリを作成できます。実際に、このようにしてマイクロサービス アーキテクチャを実装できます。現時点では正確な定義はありませんが、ビジネス機能を中心に構築され、自動デプロイやエンドポイントに関する情報を持ち、言語やデータに関して分散された、軽量なサービスを持つという (Martin Fowlerによる) 考えです (英語 / 日本語)。我々の場合、API Appsはこのように動作しています。

FAQ

  • APIアプリに対するコードを生成したら、サービスと密結合になりませんか? これは、「サービス参照の追加」のようなものではないですか?
    • いいえ、そうではありません。APIの機能を記述するために、Swagger 2.0メタデータが使われています。Azure APIアプリ クライアントを使ってコードを生成する際に、我々は参照を追加しません。APIにアクセスするためにあなたがどのみち書くであろうコードを、我々が生成しているだけです。コードを生成したくなければ、生成する必要はありません。HttpClientコードとJSONシリアル化を手動で書くことによって、他の任意のAPIと同様にAzure APIアプリを使用できます。
  • どのようにして、APIアプリを更新できますか?
    • ギャラリーとパッケージ化がリリースされるまでは、行う必要があるのは、Webアプリの場合と同様に発行 (デプロイ) を行うことだけです。ギャラリー機能がリリースされても、エクスペリエンスは簡単なままになる予定です。
  • APIはめったにアクセスされませんが、迅速な応答が必要です。どうすればいいでしょうか?
    • APIアプリの基になるコンテナーは、Webアプリです。共通のインフラストラクチャを使う利点は、一連の共通機能が提供されることです。これは、APIアプリのホストの「設定」に進み、「常時接続」(Always On) 機能を有効化できることを意味しています。プレビュー ポータルのAPIアプリのブレードを開き、「APIアプリ ホスト」(API app host)設定を見つけます。それをクリックすると、APIアプリ ホストが表示されるはずです。そこで、「設定」>「アプリケーション設定」をクリックし、開かれたブレードで「常時接続」オプションを見つけ、それを「オン」に切り替えます。「保存」をクリックすれば、完了です。

次は何でしょうか?

これは、API AppsとLogic Appsを説明する、一連のブログ ポストです。次のブログ ポストでは、Node.jsアプリをAPIアプリとして実行する方法を説明する予定です。

それまでは、SDKをダウンロードし、無料でプラットフォームで遊び始め、注目していてください!

質問がある場合は、遠慮なく私まで連絡してください。

関連情報

One thought on “パート1: Azure App Service API Appsの詳細とFAQ

Leave a comment