公開日:2023年1月30日最終更新日: 2023年1月30日
インフラ構築において、近年注目されている仕組みが「サーバーレスアーキテクチャ」です。「サーバーレスアーキテクチャ」の仕組みを用いると、サーバー構築のコストや保守の手間を削減することができます。また、一度構築のプログラムを組んでしまえば、同様のシステムを簡易的に構築可能になります。
本記事では、サーバーレスの概要及びメリット、Azureで実装する際に利用するサービスをご紹介します。
目次 <Contents>
サーバーレスアーキテクチャとは
「サーバーレスアーキテクチャ」とは、サーバーの構築を行わずに、アプリケーションを実行させるアーキテクチャのことを指します。
本章では、Azureでのサーバーレスアーキテクチャの仕組みを用いて、インフラ構築を行うメリットを紹介します。
Azureサーバーレスアーキテクチャのメリット
「サーバーレスアーキテクチャ」を導入するメリットの一つは、「コスト削減」です。
インフラ構築において、アプリケーション動作のためにサーバーの構築は必要不可欠ですが、サーバーレスアーキテクチャを導入することで、自社でサーバーを用意する必要がなく、コストの大きな割合を占めるサーバーの維持費を削減することが可能です。
もう一つの大きなメリットは、「工数の削減」です。Azure側で開発者用のAPI、関数、コードなしのサービスが用意されているため、容易に構築することができ、サービス開始までの時間を短縮することができます。
また、必要に応じてスケーラビリティのリソースを自動で追加したり、ダウンサイジングなどを指示なく実行できるなどリソース面のメリットもあります。
Azureでサーバーレスを実現するための主要なサービス
Azureでは、サーバーレスを実現するに様々なサービスを提供しています。本章では、サーバーレスで使用される主なサービスを紹介します。
Azure Functions
コードや機能の一部をクラウド上に記述し、実行することが可能なサービスです。Azure Functionsは、C#、Pythonなど様々な開発言語を選択でき、コードブロック(関数)を使用すると記述するコードを減らすことが可能です。
また、アプリケーション実行に必要なリソースはすべて提供されるため、デプロイやサーバの管理については考える必要なく、コード開発に集中できます。
Event Grid
イベントの配信や他のサービスへイベントの通知をすることができるサービスです。
Blob StorageやSQL DatabaseなどAzure上のサービスをトリガーにすることが可能であり、複数の受信者へのイベント同時配信やポーリングの待機時間短縮など様々な機能を使用することが可能です。
Azure Blob Storage
データやファイルを格納することが可能なオブジェクトストレージです。テキストデータやバイナリデータなどの非構造化データも格納可能です。
階層型ストレージを使用することでのコスト最適化、柔軟なストレージ拡張、ポリシーでのアクセス制限、ライフサイクル管理など、システム運用に必要な機能が一通りそろっています。
価格は従量課金制であり、一か月に保存されたデータ量、選択したストレージオプションによって決定します。
Azure App Service
様々なデバイスやプラットフォームに対応したアプリケーションを短時間で構築、デプロイできるサービスです。.NET、Node.js、Java、Pythonなどのフレームワーク言語に対応しており、フルマネージドのサービスとして、プラットフォーム上からメンテナンスやセキュリティパッチ適用を行うことで操作を簡略化することが可能です。
また、Visual StudioやGitなどのサービスと連携することで、生産性を高めることができます。
サーバーレスでシステム(API)を構築する際に使用する主要なサービス
Azureでは、サーバーレス構築をサポートするサービスを提供しています。本章では、サーバーレス構築をサポートする主なサービスを紹介します。
Azure Logic Apps
自動化されたイベントをトリガーにしたワークフローを設計、開発するサービスです。トリガーを起因として、ワークフロー内の処理を実行することができ、データの変換などあらゆるアクションを組み合わせることが可能です。
また、数百種類のコネクタが用意されており、トリガーに組み込むことで、システム構築を簡略化することができます。
API Management
APIに関連するサービスを一元管理するサービスです。API Managementはサービスのプラットフォームであり、APIのライフサイクル全体をサポートしています。
システム構築では処理ごとに様々なサービスを使用しており、それらのサービスの運用、メンテナンスには多くの手間がかかります。API Managementを使用すると、APIの高速化、保護を行い、アプリを統合するコストを簡略化することができます。
また、API ManagementのコンポーネントであるAPIゲートウェイの機能を利用し、トラフィックフローを最適化でき、セキュリティとコンプライアンスの要件を満たすことが可能です。
Azureにおけるサーバーレスシステムの実装例
Azureの公式サイトには様々なサーバーレスの実装例が紹介されています。本章では、分かりやすい実例をご紹介します。
Event Gridによる画像分析システム
前章で説明したとおり、Event Gridは様々なイベントを検知して、トリガー発行をすることができます。Blob Storageコンテナーに新しい写真が格納されると、Event Gridが検知し、画像分析のサーバーレス関数を即時トリガーできる仕組みです。
この仕組みだとサーバーを用意する必要がなく、Blob Storage、Event Grid、Azure Functionsのみで完結します。
また、Blob Storageを使用することにより、運用におけるコスト面でもメリットがあります。
まとめ
今回はAzureでのサーバーレスアーキテクチャについてご紹介しました。サービス運用において、コスト削減は重要な要素の一つです。 サーバーレスの仕組みを利用すると、サーバーを使用してない分コスト削減が見込め、運用面においてもスケーリングの自動化など手間を減らすことができます。
現在システム構築において、サーバーレスはトレンドであり、コスト面や運用面に大きなメリットもあることから、今後需要が増えていくことが想定されます。
Azureでは、サーバーレス構築を手助けするための各種サービスが用意されていますので、この機会にシステムのサーバーレス化を検討してみてはいかがでしょうか。