APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【Azure】App Serviceとは?

f:id:tarutaru_pyorne:20210609131846p:plain

はじめに

Azureコンテナソリューショングループ)土居です。
我々の部署は2021年1月から本格的始動し、ここ数年で躍進しているクラウドネイティブ関連の技術を追求しお客様をサポートしていきます。 特にAzureにフォーカスをあてて規模感を問わず様々なお客様に対して価値を提供していきます。 これからAzureに関して日々紹介していきますので宜しくお願いします。

今回からApp Serviceについて連載で取り上げます。
各機能の詳細については次回以降の投稿にし、まず第一弾ではApp Serviceの概要を掴んでもらいたいと思います。

App Serviceとは

App ServiceはWeb ホスティングサービスを提供するAzure上のPaaSです。
Azureサービスの中でも歴史は古く、正式リリースは2012/6からなのでかれこれ8年以上も改修が続けれられている洗練されたサービスになっています。 フルマネージドのため、アプリケーション開発者はランタイム以下のインフラを意識する必要なくサービスを利用することができます。

f:id:tarutaru_pyorne:20210303181648p:plain

意識することなくと書きましたが、実際にはOSやミドルウェア・ランタイムなどは随時パッチ適用やバージョンアップが行われていくためアプリケーション開発者はそれに追従できるようにアプリケーションの改修などを行わなくてはなりません。

昔は「業務システムに影響が出ることもあるからできるだけサーバにはパッチを適用しない」という風潮がありましたが、そもそもApp Service自体がインターネット公開を前提としているサービス(後述するApp Service Environmentは別)のため脆弱性などを放置しておくはずもなく、また複数顧客に提供している共通基盤であるためこのあたりは割り切って使うしかありません。

以下マイクロソフト公式ドキュメントの記載がありますので参考下さい。
OS とランタイムの修正プログラムの適用頻度 - Azure App Service | Microsoft Docs

また、OSのアップデート時は下記のようにアプリケーション停止の影響を極力少なくするように配慮されています。
Demystifying the magic behind App Service OS updates - Azure App Service

  1. Appsがデプロイされていないインスタンスを先にアップデート
  2. 既存のAppsのコードを1のインスタンスへMove(コールドスタンバイ、動作が重くなる等)
  3. Appsを移し終わったインスタンスのアップデートを行う

Modernizationシナリオに最適

企業はクラウドを使う理由が色々あると思いますが、ここで言いたいのはApp Serviceは一般的に以下のようなシナリオの場合に最適なプラットフォームであるという点です。

  • 既存資産の流用
  • 運用コストの軽減
  • 小規模~中規模サービスのホスト

特にSQL Databaseなどのマネージドデータベースサービスと連携させてWEB+DBのシステムをオンプレミスからリフト&シフトするケースで多様されます。
いわゆるModernization(モダナイズ)に相当するものですが、これと似ている概念にInnovation(イノベーション)があります。 Innovationはクラウドの様々なサービスを利用して高速な新規サービス開発とデジタル変革を実現するため、Azureで利用するプラットフォームの選定が少し変わってきます。 App Serviceも様々な機能が追加されてきてできないことはないですが、それぞれのシチュエーションに即したサービスを選定して利用しましょう。

App ServiceプランとApp Serviceの正しい理解

App ServiceにはApp Serviceプランという概念が存在します。
App ServiceプランはApp Serviceを提供するコンピューティングリソースです。
下記にApp Serviceの価格が記載されていますが、正確にはApp ServiceではなくApp Serviceプランにかかる料金です。
App Service の料金 | Microsoft Azure

このApp Serviceプランには複数のApp Serviceを同居させることができます。
1つのApp ServiceプランにApp Serviceを同居させた場合、コンピューティングリソースを共有するためコスト効率はよいですが、1つのApp Serviceの影響が同居しているApp Serviceにも影響するため注意が必要です。
また、App ServiceプランがFree、Basicの場合はコンピューティングリソースは他ユーザーと共有になるため、クォータ制限(1日あたりのCPU使用制限など)があります。
本番環境では、コンピューティングリソースがユーザー専用となるStandardプラン以上を推奨します。

f:id:tarutaru_pyorne:20210304142429p:plain

App Service手前のロードバランサーは、App Serviceを作成すると同時に自動でマイクロソフトが運用管理しているロードバランサーに紐づくのでユーザー側が特に意識する必要はありません。
このロードバランサーも専有にしたい場合は、App Service Environmentを利用する必要があります。

App Service Environment

App Serviceプランには、1つだけ特殊なIsolatedというプランが存在します。
これは、App Service Environmentで利用するためのApp Serviceプランです。

前述したようにApp Serviceはインターネット公開を前提としているサービスですが、App Service EnvironmentではApp Serviceをユーザー独自のVNetにデプロイし専用環境でのアプリケーション実行を可能にします。

  • セキュリティ要件でリソースを完全専有(分離)したい
  • VNet内のAzureリソースと連携したい
  • プライベートアクセスでWeb ホスティングサービスを利用したい
  • 最大のスケーラビリティを確保したい

などの場合に利用を検討します。

f:id:tarutaru_pyorne:20210304142545p:plain

App Service EnvironmentはApp Service Isolatedプランの価格だけでなく、App Service Environment環境をサブスクリプションで構成するために固定スタンプ料金もかかり高額になりやすいです。
通常のApp ServiceでもVNet統合やプライベートエンドポイントなどを利用する事でセキュアに構成できるようになっているので、要件にマッチしたプラン選定を行って下さい。

複数の言語とフレームワークのサポート

随時更新されていくので必ずこちらを確認下さい。
各言語やOSプラットフォーム毎に個別の制限がある場合もあります。
また、コンテナーもサポートしているためすでに利用しているカスタムコンテナをリポジトリにアップロードし、そのままApp Serviceにデプロイする事も可能です。

概要 - Azure App Service | Microsoft Docs

参考資料

本記事の記載にあたり、以下資料を参考にしています。 特に、日本マイクロソフト社様の動画は非常に分かりやすく解説されているため、お時間ある方は是非一度見て頂いて損はないかと思います。

Azure App Service のドキュメント - Azure App Service | Microsoft Docs

Microsoft Azure PaaS 構成方法 (Web Apps & SQL Database)
Microsoft Azure PaaS 構成方法 (Web Apps & SQL Database) [技術概要] | 日本マイクロソフト - YouTube