Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Azureサーバーレス徹底解説

By Greg WiedemanJun 16, 202513 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

サーバーレスでのデプロイは、いまや多くのクラウド環境で定番の選択肢となりました。各クラウドプロバイダーはサーバーレスを実現する複数のサービスを揃えており、Microsoft Azureも例外ではありません。

本記事では、Azure Functions、Azure Logic Apps、Azure Event Grid、Azure Event Hubs、Azure Container Apps、Azure Cosmos DBといった代表的なサーバーレスサービスを取り上げます。

あわせて、注文処理やイベント駆動型ソリューションなど、さまざまなアーキテクチャパターンとユースケースも紹介します。

さらに、Azureサーバーレスアプリのデプロイで押さえておきたいベストプラクティスや、デプロイを支援するツール、各サービスのコスト最適化テクニックについても解説します。

それでは、さっそく見ていきましょう。

Azureサーバーレスコンピューティング入門

サーバーレスアーキテクチャとは?

「サーバーレス」と言っても、サーバーが完全になくなるわけではありません。開発者がコードを動かすための基盤インフラの管理から解放され、コーディングそのものに集中できるモデルを指す言葉です。サーバーレスアプリケーションでは、コードを確実に実行するために必要なインフラのプロビジョニング、スケーリング、管理を、すべてクラウドサービスプロバイダーが自動で担います。

「サーバーレス」には、Backend as a Service(BaaS)とFunctions as a Service(FaaS)という2つの意味があります。いずれも、開発者やDevOpsエンジニアがサーバーをデプロイ・構成・管理する必要がない、という点では共通しています。

  • BaaSは、データベースやストレージといったバックエンド機能を提供するクラウドサービスです。アプリケーションから直接接続できるAPIが用意されています。
  • FaaSは、クラウドプロバイダーのホスティング環境上で関数(コードの一部)を実行するモデルです。関数を動かす基盤コードやサーバーは抽象化されており、利用者から見えません。

下の図は、Azure Blob Storageで静的コンテンツを配信しつつ、Azure FunctionsによるAPIを組み合わせたアプリのAzureアーキテクチャを示しています。このAPIはAzure Cosmos DBからデータを取得し、その結果をWebアプリへ返します。

この例は、AzureにおけるBaaSとFaaSの両方を体現しています。具体的には、Azure FunctionsがFaaS、Azure Blob StorageがBaaSにあたります。

https://learn.microsoft.com/en-us/azure/architecture/web-apps/serverless/architectures/web-app

サーバーレスにはメリットとデメリットの両面があります。まずはメリットから見ていきましょう。

  • コスト — 使った分だけ支払う仕組みのため、Webサーバーやミドルウェアサーバーがアイドル状態でも料金が発生せず、オフピーク時間帯のムダを削減できます。アクセスパターンが見えているなら、予約済み容量を購入することでさらにコストを抑えられます。
  • 運用負荷の軽減 — 基盤サーバー周りの煩雑な管理はクラウドプロバイダーが引き受けるため、開発者はアプリと機能の開発に専念できます。
  • スケーラビリティ — サーバーレスのコンポーネントは、予測しづらいトラフィックや急激な変動にも自動でスケール対応します。
  • サポート — コミュニティの規模が大きく、主要クラウドプロバイダーの多くがサーバーレスと連携・統合するサービスを提供しています。

一方、サーバーレスには以下のようなデメリットもあります。

  • パフォーマンス — 疎結合なサーバーレスアーキテクチャでは、各所でパフォーマンスの問題が起こり得るうえ、どのAPIやコンポーネントが遅延の原因かを特定するのが難しくなります。また、しばらく呼び出されていない関数では、コールドスタートが発生することがあります。これはサービスプロバイダー側で関数実行用のリソースを割り当て直す必要があるためで、その分の時間がアプリのレスポンス低下につながります。
  • ベンダーロックイン — サーバーレスサービスは基本的に各ベンダー固有のものであるため、他プラットフォームへの移行には手間とコストがかかりがちです。
  • 制御の制限 — 利用者は基盤インフラを直接コントロールできないため、できることに制約が生じます。特定の環境設定に依存するアプリは、サーバーレスでは正しく動作しない場合があります。さらに、ランタイムの実行時間、関数の最大数、対応プログラミング言語などにも制限があるのが一般的です。
  • セキュリティ — 基盤OSやインフラはプロバイダーが管理するため、セキュリティはその対策に大きく左右されます。各関数が攻撃の入り口になり得るため、脆弱性の温床となる可能性も否定できません。

なぜサーバーレスにAzureを選ぶのか?

サーバーレスのフレームワークを提供しているパブリッククラウドは数多くありますが、Azureには次のような際立った強みがあります。

  • 幅広い言語サポート: Azureは多様なプログラミング言語に対応しており、開発者は使い慣れた環境で開発を進められます。
  • ローカルデバッグ機能: Visual Studioをはじめとするツールと連携し、ローカル環境でのデバッグをサポートして開発生産性を高めます。
  • 充実したエコシステム: フロントエンドからバックエンドまで、効率的かつ効果的に連携するサービス群により、エンドツーエンドのサーバーレスソリューションを構築できます。さらに、機械学習やAIサービスのコードもスムーズに組み込めるため、革新的なアプリの開発にも適しています。

こうした特長から、Azureはサーバーレスアーキテクチャの有力な選択肢となっています。

代表的なAzureサーバーレスサービス

Azure Functions

Azure Functions

Azure Functionsは、サーバーレスアプリのバックエンドロジックを担う、Function as a Service(FaaS)の中核となるサービスです。スケーラビリティに優れ、イベント駆動型アーキテクチャをサポートします。サードパーティの決済処理サービスといった外部サービスを呼び出して、トランザクションを完結させることも可能です。

関数を他のサービスとシームレスにつなぐ、豊富なイベント駆動型のトリガーとバインディングを備えており、追加コードを書かずに連携できます。

Azure Functionsの目的と主なユースケースは次のとおりです。

https://learn.microsoft.com/en-us/azure/azure-functions/functions-overview

Azure Functionsは多彩な言語に対応しており、サーバーレスコンピューティングの強力な選択肢となります。サポート言語は以下のとおりです。

https://learn.microsoft.com/en-us/azure/azure-functions/supported-languages?tabs=isolated-process%2Cv4&pivots=programming-language-csharp

Azure Durable FunctionsはAzure Functionsを拡張し、オーケストレーターパターンを用いてステートフルなワークフローや調整ロジックを構築できるようにします。これにより、長時間実行・スケーラブル・高信頼性を兼ね備えたサーバーレスアプリの開発が可能になります。

コスト最適化のポイント:

Azure Logic Apps

Azure Logic Apps

Azure Logic Appsは、複雑なworkloadsの開発と管理に特化した、堅牢なサーバーレスオーケストレーションサービスです。Microsoftのクラウド型統合プラットフォーム(iPaaS)として、多様なサービスやアプリをつなぐワークフローをシームレスに自動化します。

統合プロセスを効率化することで、業務効率の向上、手作業の削減、変化するビジネスニーズへの迅速な対応を可能にします。

用意されたテンプレートやコネクタを活用すれば、異なるシステムをつなぐ高度なワークフローを短時間で構築でき、イノベーションと生産性の向上を後押しします。

Azure Logic Appsをワークフローオーケストレーションの選択肢として検討する価値がある、主なポイントは以下のとおりです。

  • 業務プロセスやワークフローを自動化するビジュアルデザイナー
  • トリガーとアクションを備えた1,400以上の組み込みコネクタ
  • ローコード/ノーコード対応
  • ホスティング、スケーリング、管理、監視、保守はすべてMicrosoft Azureが担当

サーバーレスでは、複数のサービスを組み合わせて使うのが一般的です。たとえば、Logic Appsのワークフローから関数を呼び出したり、関数からLogic Appsのワークフローを起動したりできます。下の表は、Azure FunctionsとAzure Logic Appsの主な違いをまとめたものです。

https://learn.microsoft.com/en-us/azure/azure-functions/functions-compare-logic-apps-ms-flow-webjobs

コスト最適化のポイント:

Azure Event Grid

Azure Event Grid

Azure Event Gridは、各種AzureサービスやカスタムソースからのイベントをAzure Functions、Logic Apps、Webhook、任意のHTTPエンドポイントなどのサブスクライバーへルーティングし、イベント駆動型アプリの開発をスムーズに進められるようにするサービスです。

スケーラブルでフルマネージドな本サービスは、パブリッシュ/サブスクライブ(Pub/Sub)モデルで動作し、MQTT v3.1.1およびv5.0プロトコル、HTTPに対応します。これにより、データパイプライン、アプリケーション統合、イベント駆動型サーバーレスアーキテクチャを構築できます。さらに、IoT(モノのインターネット)向けにメッセージのパブリッシュ・サブスクライブにも対応し、プッシュ型・プル型の双方の配信方式を選択できます。

加えて、Event GridはCloudEvents 1.0仕様に準拠しており、さまざまなシステム間の相互運用性を確保しています。

下の図は、Azure Event Gridの全体像を示したものです。

https://learn.microsoft.com/en-us/azure/event-grid/overview

Azure Event Gridの中核となる2つの機能は次のとおりです。

  • MQTTメッセージングにより、IoTデバイスとアプリがMQTT経由で相互に通信できます。Event GridはMQTTを介して、メッセージをAzureサービスやカスタムエンドポイントにルーティングし、追加の分析、可視化、保存に活用できます。

MQTTメッセージング https://learn.microsoft.com/en-us/azure/event-grid/overview

  • プッシュ型・プル型の配信モードによるデータ配信 — データパイプラインの任意のポイントで、HTTPアプリはプッシュ/プルAPIを使ってメッセージを取得できます。

イベントメッセージング https://learn.microsoft.com/en-us/azure/event-grid/overview

コスト最適化のポイント:

Azure Event Hubs

Azure Event Hubs

Azure Event Hubsは、シンプルさ・セキュリティ・スケーラビリティを兼ね備えたフルマネージドのリアルタイムデータ取り込みサービスです。AMQP、HTTPS、Apache Kafkaといった主要プロトコルに対応し、毎秒数百万件規模のイベントを取り込めます。

毎秒数百万件のイベントを取り込みながらリアルタイムで分析できる能力は、即時のインサイトと変化するデータパターンへの俊敏な対応が求められるアプリにとって大きな強みであり、現代のクラウドアーキテクチャに欠かせない要素です。

他のAzureサービスとの統合もスムーズで、データから有用なインサイトを引き出したり、同じストリームに対してマイクロバッチ処理を行ったりできます。

Azure Event Hubsを使えば、Stream Analyticsとシームレスに連携する包括的なサーバーレスストリーミング基盤を構築できます。

Azureの公式ドキュメントで紹介されている主なユースケースは以下のとおりです。

Event Hubのアーキテクチャ https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-about

コスト最適化のポイント:

Azure Container Apps

Azure Container Apps

Azureには、コンテナを扱うための代表的なサービスとしてAzure Container Apps(ACA)とAzure Kubernetes Service(AKS)の2つがあります。本記事ではAzure Container Appsを中心に取り上げますが、両者の違いと使い分けを押さえておくことが大切です。

ACAは「アプリ中心」のアプローチを採用したユニークなサービスで、コンテナオーケストレーションの複雑さに頭を悩ませることなく、アプリ開発そのものに集中したい開発者に最適です。優れたイベント駆動型アーキテクチャに加え、アプリをゼロまでスケールダウンできるため、コスト効率も非常に高いのが特徴です。

一方のAzure Kubernetes Serviceは「クラスター中心」のサービスで、より細やかな制御性と柔軟性を備えています。特定のカスタマイズが求められる複雑なアプリや、Kubernetesに精通したチームに向いています。

ACA vs AKS: コンテナアプリの実行に適したAzureサービス \ Azure Container Apps(ACA)とAzure Kubernetes Service(AKS)のどちらを選ぶべきか…\ techcommunity.microsoft.com

AKSのデプロイをよりシンプルにしたいとお考えなら、ぜひDoiTにご相談ください。

Azure Kubernetes Service | AKS | DoiT \ Azure上のKubernetes。Azure Kubernetes Service(AKS)で、Kubernetesを迅速かつシームレスに刷新・デプロイ・運用…\ www.doit.com

Azure Container Appsは、コンテナ化アプリをスムーズかつ効率的に運用できる先進的なサーバーレスプラットフォームです。サーバー管理の煩わしさを取り除き、開発者がインフラの心配をせずにアプリの開発とデプロイに集中できる環境を提供します。

コンテナのオーケストレーションとデプロイを効率化し、構成管理、運用のスケーリング、リソース割り当てを容易に行えます。需要に応じた自動スケーリング、統合ネットワーク機能、組み込みの監視ツールなどを備え、変化する市場環境に素早く対応できる柔軟性をもたらします。

このプラットフォームを活用すれば、変化の激しいクラウド環境でも高い運用効率を維持しつつ、イノベーションのサイクルを加速できます。新たな機会を逃さず捉え、リソース利用を最適化し、アプリ全体のパフォーマンスを底上げすることが可能になります。

Azure Container Appsの代表的なユースケースは次のとおりです。

  • APIエンドポイントのデプロイ
  • バックグラウンド処理ジョブのホスティング
  • イベント駆動型処理
  • マイクロサービスの実行

Azure Container Appsでアプリを構築する利点として、次の基準でスケールできる点が挙げられます。

Azure Container Appsの利用例: https://learn.microsoft.com/en-us/azure/container-apps/overview

コスト最適化のポイント:

Azure Cosmos DB

Azure Cosmos DB

Azure Cosmos DBは、NoSQL、リレーショナル、ベクトルなど多様なデータモデルに対応する、先進的なフルマネージドデータベースサービスです。一桁ミリ秒という卓越した応答性能を提供するよう設計されており、ユーザーに快適な体験を届けます。そのアーキテクチャは、規模や負荷の大小を問わず、安定したパフォーマンスを保ちながら容易にスケールできるよう作られています。

さらに、稼働率を保証するサービスレベル契約(SLA)と、機密データの保護や規制要件への準拠を支えるエンタープライズグレードのセキュリティ対策により、堅実な事業継続性を実現します。

フルマネージドサービスとして、管理、アップデート、パッチ適用などの作業を自動化。容量管理にはコスト効率の高いサーバーレスオプションが用意されており、アプリのニーズに合わせて自動でスケーリングし、需要に見合った容量を保ちます。

高可用性、優れたスループット、低レイテンシ、調整可能な整合性を兼ね備えるAzure Cosmos DBは、AI、小売・マーケティング、IoT・テレマティクス、ゲーム、ソーシャル向けパーソナライゼーションなど、幅広い用途に最適です。

以下のようなアプリは、Azure Cosmos DBとの相性が特に良く、その先進的な機能を活かしてさまざまなシナリオでパフォーマンスとスケーラビリティを向上させられます。

  • 反復開発に向けた柔軟なスキーマ。 機能リリースのスピードを上げるために、柔軟でモダンなDevOps手法を採り入れたいアプリに最適です。
  • レイテンシに敏感なworkloads。 IoTデバイスの状態管理やテレメトリのように、大量データを効率よく扱う必要があるworkloadsを指します。
  • 伸縮性の高いworkloads。 たとえば、需要が大きく変動するコンサート予約プラットフォームなどが該当します。
  • 高スループットのworkloads。 IoTデバイスの状態管理やテレメトリなど、大量データを効率よく処理する必要があるworkloadsを指します。
  • 高可用性が求められるミッションクリティカルなworkloads。代表例は顧客向けWebアプリで、ユーザーに確実にサービスを届けるために可用性と信頼性の維持が欠かせません。

一方、以下のようなアプリにはAzure Cosmos DBは適していません。

  • 分析workloads(OLAP)。データサイエンティストやデータアナリスト向けのインタラクティブ分析、ストリーミング分析、バッチ分析などが含まれます。代替としてMicrosoft Fabricを検討する価値があります。
  • ホワイトラベルのCRMソリューションのような強くリレーショナルなアプリ。こうしたケースでは、Azure SQL、Azure Database for MySQL、Azure Database for PostgreSQLの利用を検討してください。

コスト最適化のポイント:

以下のような無料オプションも用意されています。

  • Azure Cosmos DBの永続無料ティアでは、1,000リクエストユニットRU/sのスループットと25 GBのストレージを無料で利用できます。
  • Azure AI Advantageでは、Azure AIまたはGitHub CoPilotのお客様に対して、90日間で40,000 RU/sのスループット(最大6,000ドル相当)を提供します。
  • Azureアカウントを作成しなくてもAzure Cosmos DBを30日間無料で試せます。試用期間後の継続義務もありません。

まとめ

ここまで見てきたように、Azureのサーバーレスコンピューティングは、アプリ開発をシンプルにし、インフラ管理の負担を減らしたい開発者にとって心強い選択肢です。Azure Functions、Azure Logic Apps、Azure Cosmos DBといったサービスを組み合わせれば、変化するユーザーニーズに素早く対応できる、スケーラブルでイベント駆動型のアプリを構築できます。

Azureはコスト削減、運用負荷の軽減、スケーラビリティ、強力なサポートコミュニティといった魅力を備えていますが、一方でパフォーマンスの問題、ベンダーロックイン、制御の制約、セキュリティリスクといった課題があることも忘れてはいけません。

とはいえ、Azureが揃える幅広いサーバーレスソリューションは、開発者をインフラ管理から解き放ち、イノベーションと機能開発に集中できる環境を提供します。これは、クラウドコンピューティングを最大限に活用したい企業にとって大きな魅力です。デジタルトランスフォーメーションの動きが加速するなか、Azureサーバーレスは、将来の変化にも柔軟に対応できる、レジリエントで効率的なアプリづくりを支える前向きな選択肢となるでしょう。

Azureプラットフォームの可能性を最大限に引き出しましょう。今すぐデモと専属チームとの相談を予約して、DoiT Cloud Intelligenceがもたらす価値と成果をぜひご体感ください。

DoiT Platform | DoiT \ DoiTは、ClockwiseがAWSクラウドインフラをより効率的にスケールさせ、ビジネスの成長を加速できるよう支援しています。「私たちは…\ www.doit.com