BLOG

Azureのサーバーレスを解凍する

Table of contents

Azureサーバーレスを始めよう

サーバーレス・デプロイは、多くのクラウド環境で人気のオプションとなっている。各クラウド・プロバイダーは、サーバーレス・オファリングをカプセル化したいくつかのサービスを持っており、Microsoft Azureも同様だ。

このブログでは、Azure Functions、Azure Logic Apps、Azure Event Grid、Azure Event Hubs、Azure Container Apps、Azure Cosmos DBなど、いくつかの主要なサーバーレスサービスを取り上げます。

さらに、注文処理やイベント・ドリブン・ソリューションなど、さまざまなアーキテクチャ・フレームワークやユースケースについても触れている。

このブログでは、Azureサーバーレスアプリケーションをデプロイするためのベストプラクティスや、デプロイを容易にするツール、各サービスのコスト最適化手法なども紹介する。

さあ、荷解きを始めよう。


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

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

サーバーレス」という用語は、サーバーを完全に排除することを意味するのではなく、開発者がコード実行に必要な基礎インフラを管理するのではなく、主にコーディングに集中できるようにするモデルを指す。このサーバーレスアプリケーションの枠組みの中で、クラウドサービスプロバイダーは、効果的なコード実行を保証するために必要なインフラの自動プロビジョニング、スケーリング、管理の責任を負う。

サーバーレス」という言葉は、2つの異なる意味を含んでいる:サービスとしてのバックエンド(BaaS)とサービスとしての機能(FaaS)だ。しかし、どちらの概念も、開発者やDevOpsエンジニアがサーバーをデプロイ、設定、管理する必要がないという基本原則を共有している。

  • BaaSとは、データベースやストレージなどのバックエンド機能を提供するクラウドサービスを指す。これらのサービスはAPIを提供し、ソース・アプリケーションが直接接続できるようになっている。
  • FaaSは、ファンクションがクラウド・プロバイダーのホスティング環境内で実行されるコードの一部であるというモデルである。このモデルは、ファンクションを実行する基盤となるコードとサーバーを抽象化する。

下図は、Azure Blob Storageを使用して静的コンテンツを提供するように設計されたアプリケーションのAzureアーキテクチャを示すと同時に、Azure Functionsを介してAPIを統合している。このAPIは、Azure Cosmos DBからデータを取得し、結果をWebアプリケーションに返す。

この例は、AzureにおけるBaaSとFaaSの2つの意味を示している。具体的には、Azure FunctionsによるFaaSを指し、Azure Blob StorageはBaaSの例として機能する。

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

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

サーバーレスにはメリットとデメリットがある。メリットには以下のようなものがある:

  • コスト- 使用したリソースに対してのみ料金を支払うことで、ウェブサーバーやミドルウェアサーバーのようなアイドル状態のリソースに対する課金を回避し、オフピーク時の無駄を省くことができます。アクセスパターンを把握していれば、予約容量を購入することでさらにコストを削減できます。
  • メンテナンスの軽減- クラウド・プロバイダーが基盤となる複雑なサーバー管理を行うため、開発者はアプリケーションや機能の構築に専念できる。
  • スケーラブル- サーバーレスコンポーネントは、予測不可能なトラフィックパターンや上下するトラフィックパターンに対応できるよう、自動的にスケーリングできる。
  • サポート - 大規模なサポート・コミュニティが存在し、ほとんどのクラウド・プロバイダーがサーバーレス・コンポーネントと統合した、あるいはサーバーレス・コンポーネントを利用したサービスを提供している。

サーバーレス・コンピューティングのデメリットもある:

  • パフォーマンス- パフォーマンスの問題は、デカップルド・サーバーレス・アーキテクチャの様々な局面で発生する可能性があり、どのAPIやコンポーネントが速度低下の原因なのかを特定するのは難しい。さらに、ファンクションがしばらく利用されていない場合、コールドスタートに遭遇する可能性がある。コールドスタートは、サービスプロバイダがファンクションの実行にリソースを割り当てる必要があるために発生します。
  • ベンダーロックイン- 一般的に、サーバーレスサービスはベンダーによって提供されるため、プラットフォームからの移行は困難でコストがかかる。
  • コントロールの制限- 基礎となるインフラをコントロールできないため、顧客はアクションの制限に直面する可能性がある。アプリケーションが特定の環境構成に依存している場合、サーバーレスでは適切に機能しない可能性がある。さらに、ランタイムの実行、関数の最大数、サポートされるプログラミング言語にも制約があることが多い。
  • セキュリティ- サーバーレス・サービスの基盤となるオペレーティング・システムとインフラはプロバイダーが責任を負うため、セキュリティはプロバイダーが実装する対策に大きく依存する。この状況は、各機能が攻撃のベクトルとして機能する可能性があるため、潜在的に脆弱性を生み出す可能性がある。

サーバーレスにAzureを選ぶ理由

多くのパブリッククラウドプロバイダーがサーバーレスアーキテクチャのフレームワークを提供しているが、Azureはいくつかの理由で際立っている:

  • より幅広い言語をサポート:Azureは多様なプログラミング言語に対応しており、開発者は好みの環境で作業できる。
  • ローカルデバッグ機能:Visual Studioのようなツールで、Azureはローカルデバッグを容易にすることで、開発者の生産性を高める機能を提供する。
  • 包括的なエコシステム:Azureは、効果的かつ効率的に連携するサービスにより、フロントエンドとバックエンド両方のアプリケーションに対応する完全なサーバーレスソリューションの作成を可能にする。Azureにより、開発者は機械学習やAIサービスのコードを簡単に統合した革新的なアプリを作成できる。

これらの利点から、Azureはサーバーレスアーキテクチャにとって魅力的な選択肢となる。


人気のAzureサーバーレス・サービス

Azure Functions
Azure Functions

Azure Functions

Azure Functionsはサーバーレスアプリケーションのバックエンドロジックとして機能し、FaaS(Function as a Service)の基盤を構成する。ファンクションはスケーラビリティを提供し、イベント駆動型のアーキテクチャをサポートする。さらにファンクションは、サードパーティの支払いプロセッサーなどの外部サービスを呼び出して、トランザクションを完了させることができる。

イベントドリブントリガーとバインディングの包括的な配列が含まれており、関数を他のサービスに簡単に接続し、コードを追加する必要性を排除します。

以下は、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は、複雑なワークロードの開発と管理のために特別に設計された、堅牢なサーバーレス・オーケストレーション・ソリューションを提供します。マイクロソフトのクラウドベースのサービスとしての統合プラットフォーム(iPaaS)として、さまざまなサービスやアプリケーションを接続するワークフローのシームレスな自動化を可能にします。

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

事前に定義されたテンプレートとコネクタを利用することで、ユーザーは異種システムを統合する高度なワークフローを迅速に確立し、イノベーションを促進し、全体的な生産性を向上させることができます。

Azure Logic Appsをワークフロー・オーケストレーションのために検討する価値がある主な特徴は以下の通りである:

  • 自動化されたビジネスプロセスやワークフローを作成するためのビジュアルデザイナー
  • トリガーとアクションを備えた1,400以上の組み込み済みコネクター
  • ローコード/ノーコード・アプローチ
  • これらのサービスで構築されたソリューションのホスティング、スケーリング、管理、監視、保守を担当するMicrosoft Azureによってホストされる。

サーバーレス・コンピューティングでは、サービスをミックス&マッチさせることはよくあることだ。例えば、Logic App ワークフローから関数を呼び出したり、関数から Logic App ワークフローを呼び出したりすることができる。次の表は、Azure Functions と Azure Logic Apps の主な相違点の一覧です。


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

コスト最適化のテクニック:


Azureイベントグリッド

Azureイベントグリッド

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 イベントハブ

Azure イベントハブ

Azure Event Hubsは、シンプルさ、セキュリティ、スケーラビリティを提供するフルマネージドのリアルタイムデータインジェストサービスです。AMQP、HTTPS、Apache Kafkaなどの一般的なプロトコルをサポートしています。このサービスは、毎秒数百万のイベントを取り込むことができます。

毎秒数百万件のイベントを取り込み、リアルタイムでデータを分析する機能は、即時の洞察と変化するデータパターンへの応答性を必要とするアプリケーションにとって特に有益であり、最新のクラウドベースのアーキテクチャに不可欠なコンポーネントとなっている。

他のAzureサービスとの統合はシームレスに行われ、データに対する貴重な洞察を得ることができる。

Azure Event Hubsは、Stream Analyticsとシームレスに統合する包括的なサーバーレス・ストリーミング・ソリューションの構築を可能にします。

Azureのドキュメントが提供する使用例には、以下のようなものがある:

イベント・ハブ・アーキテクチャ https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-about

コスト最適化のテクニック:


Azureコンテナアプリ

Azureコンテナアプリ

Azureは、コンテナを扱うための2つの主要なサービスを提供している:Azure Container Apps(ACA)とAzure Kubernetes Service(AKS)だ。主な焦点はAzure Container Appsですが、違いを理解し、それぞれのオプションを選択するタイミングを知ることが重要です。

ACAはユニークな「アプリケーション中心」のソリューションを提供し、コンテナ・オーケストレーションの複雑さと格闘する代わりにアプリケーションの構築に集中したい開発者にとって理想的なものとなっている。イベント駆動型の優れたアーキテクチャと、アプリケーションをゼロからスケールダウンできる機能が相まって、ACAは非常に費用対効果の高い選択肢となっている。

一方、Azure Kubernetes Serviceは「クラスタ中心」のオプションと見なされることが多く、より多くの制御と柔軟性を提供する。特にKubernetesに精通したチームにとっては、特定のカスタマイズが必要な複雑なアプリケーション向けに調整されている。

AKSの導入を簡素化するためのガイダンスが必要な場合は、遠慮なくDoiTにご連絡ください。

Azure Container Appsは、コンテナ化されたアプリケーションのスムーズで効率的な運用を促進するために設計された、先進的なサーバーレス・プラットフォームとして際立っている。サーバー管理のハードルを取り除くことで、開発者はインフラの課題を心配することなく、アプリケーションの作成とデプロイに集中できる。

このプラットフォームは、コンテナのオーケストレーションとデプロイメントを合理化し、ユーザーは構成の管理、運用の拡張、リソースの割り当てを容易に行うことができます。Azure Container Appsは、需要に応じた自動スケーリング、統合されたネットワーキング機能、組み込みの監視ツールなどの機能により、変化する市場環境に迅速に適応するために必要な柔軟性を企業に提供します。

さらに、このプラットフォームを活用することで、企業はダイナミックなクラウド環境で高い運用効率を維持しながら、イノベーション・サイクルを加速することができる。これにより、企業は新たな機会を素早く捉え、リソース利用を最適化し、アプリケーション全体のパフォーマンスを向上させることができます。

Azure Container Appsの日常的な使用例をいくつか紹介します:

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

Azure Container Apps上でアプリケーションを構築する利点は、以下の基準に基づいてスケーリングできることだ:

  • HTTPトラフィック
  • イベント・ドリブン・プロセッシング
  • CPUまたはメモリの負荷
  • すべてのKEDA対応スケーラー
Azure Container Apps の例:https://learn.microsoft.com/en-us/azure/container-apps/overview

コスト最適化のテクニック:


Azure Cosmos DB

Azure Cosmos DB

Azure Cosmos DBは、NoSQL、リレーショナル、ベクターデータベースなど、さまざまなデータモデルをサポートする高度なフルマネージドデータベースサービスです。この柔軟なプラットフォームは、通常1桁ミリ秒以内という卓越したレスポンスタイムを実現するように設計されており、ユーザーにハイパフォーマンスなエクスペリエンスを保証します。また、システムの規模や需要にかかわらず、信頼性の高いパフォーマンスを維持しながら容易に拡張できるアーキテクチャを採用しています。

さらに、Azure Cosmos DBは、アップタイムを約束するサービスレベルアグリーメント(SLA)と、機密データを保護し、規制要件に準拠するための包括的なエンタープライズレベルのセキュリティ対策により、堅牢なビジネス継続性を保証します。

Azure Cosmos DBは、管理、更新、パッチ適用などのさまざまなタスクを自動化するフルマネージドサービスです。キャパシティを処理するための費用対効果の高いサーバーレスオプションを提供し、アプリケーションのニーズに合わせて調整する自動スケーリング機能を備えているため、キャパシティを需要に合わせることができます。

保証された高可用性、優れたスループット、最小限のレイテンシ、調整可能な一貫性により、Azure Cosmos DBは、AI、小売およびマーケティング、IoTおよびテレマティクス、ゲーム、ソーシャルプラットフォームのパーソナライゼーションなど、さまざまなアプリケーションに最適です。

以下に挙げるアプリケーションは、Azure Cosmos DBとの優れた互換性を実証しており、この強力なデータベースプラットフォームの高度な機能を効果的に統合して活用し、さまざまなシナリオでパフォーマンスとスケーラビリティを向上させる能力を強調しています。

  • 反復開発のための柔軟なスキーマ。 アプリケーションは多くの場合、柔軟で最新のDevOpsプラクティスを導入し、機能のデプロイタイムラインを短縮しようとしている。
  • 遅延に敏感なワークロード。 遅延に敏感なワークロードとは、IoTデバイスの状態管理や遠隔測定など、大量のデータを効率的に処理する必要があるワークロードを指す。
  • 弾力性の高いワークロード。 その一例がコンサート予約プラットフォームで、需要の変動に対応しなければならない。
  • 高スループットのワークロード。 高スループットのワークロードとは、IoTデバイスの状態管理や遠隔測定など、大量のデータを効率的に処理する必要があるワークロードを指す。
  • 可用性の高いミッションクリティカルなワークロード。顧客向けのWebアプリケーションはその重要な例であり、ユーザーに効率的にサービスを提供するためには可用性と信頼性を維持する必要があります。

以下のアプリケーションは、Azure Cosmos DB での使用には適していません:

  • 分析ワークロード(OLAP)には、インタラクティブ、ストリーミング、バッチ分析があり、データサイエンティストやデータアナリストのニーズに対応している。Microsoft Fabricは価値ある選択肢かもしれない。
  • ホワイトラベルのCRMソリューションのような高度にリレーショナルなアプリケーションは、検討する価値がある。代わりに、Azure SQL、Azure Database for MySQL、またはAzure Database for PostgreSQLを検討してください。

コスト最適化のテクニック:

以下の無料オプションも利用できる:


結論

要約すると、Azureのサーバーレスコンピューティングモデルは、アプリケーション開発を簡素化し、インフラ管理の課題を軽減しようとする開発者に堅牢なソリューションを提供する。Azure Functions、Azure Logic Apps、Azure Cosmos DBなどのサービスを利用することで、企業は、進化するユーザーニーズに迅速に適応するスケーラブルなイベント駆動型アプリケーションを構築できる。

Azureは、コスト削減、メンテナンスの軽減、スケーラビリティ、強固なサポートコミュニティなどのメリットを提供する一方で、パフォーマンスの問題、ベンダーロックイン、コントロールの制限、セキュリティリスクなどの潜在的な課題を認識することが不可欠である。

結局のところ、Azureの膨大な数のサーバーレスソリューションによって、開発者はインフラストラクチャの管理ではなく、イノベーションと機能開発に集中できるようになり、Azureはクラウドコンピューティングの活用を検討している企業にとって魅力的な選択肢となります。デジタルトランスフォーメーションを採用する企業が増える中、Azureサーバーレスは、将来のニーズに容易に適応できる、弾力的で効率的なアプリケーションを構築するための先進的なアプローチを提供します。


DoiTのクラウドインテリジェンスがどのようにお客様のエクスペリエンスを向上させ、成果を上げることができるのか、今すぐ当社の専門チームにデモとお電話をご予約ください!

Schedule a call with our team

You will receive a calendar invite to the email address provided below for a 15-minute call with one of our team members to discuss your needs.

You will be presented with date and time options on the next step

Schedule a call with our team

You will receive a calendar invite to the email address provided below for a 15-minute call with one of our team members to discuss your needs.

You will be presented with date and time options on the next step