近年ではDX化の推進により、あらゆるシステムがクラウドサービスとして利用できるようになりました。従来、Webサービスやアプリケーションなどのシステムを動かすためには、物理、仮想、環境問わずサーバーを構築しなくてはいけませんでした。
またシステムの多くは、いつでもどこでも利用できることが前提で設計されるため、サーバー環境も24時間365日安定稼働させる必要があり、運用負荷が非常に高いという問題があります。
そこで注目されているのがサーバーレスです。サーバーレスとは、サーバーの構築や運用などの管理をすることなく、サーバー上でのプログラムを実行してシステムを開発できるサービスです。FaaS(Function as a Service)や、サーバーレスアーキテクチャとも呼ばれています。本記事ではサーバーレスに関する基礎知識と、マイクロソフトが提供するサーバーレスサービスについて解説します。
サーバーレスアーキテクチャとは
サーバーレスとは、その名の通りサーバーを必要としない開発環境です。サーバーの構築や運用・保守が不要でプログラムを実行できる、クラウドサービスの一種です。
しかし、実際にはサーバーがないわけではありません。バックグラウンドでサーバーは動いており、クラウドサービスを提供する事業者側の責任において構築、運用・保守されています。つまり、ユーザーはサーバーに対する一切の責任を持つことなく、サービスを利用できるのです。ユーザー側から見て、各アーキテクチャには以下のような特徴があります。
サーバー レス |
オンプレミス サーバー |
クラウド サーバー |
レンタル サーバー |
|
---|---|---|---|---|
課金 形態 |
システムの実行時間による従量制 | 初期コストのみ 運用コストがかかる |
サーバーの稼働時間による従量制 | 月額固定性 |
管理 範囲 |
システムのみ ユーザー管理 |
すべての環境を ユーザー管理 |
インフラ以上のレイヤーをユーザー管理 | OS(ミドルウェア)以上のレイヤーをユーザー管理 |
柔軟性 | ほとんどのレイヤーにおいて高い柔軟性がある | ハードウェアの制約により柔軟性は低い | 高い柔軟性があるが個別設定が必要 | 事業者側の制約により柔軟性は低い |
クラウドサービスとしてのサーバーレスアーキテクチャについて
ここでは、サーバーレスのクラウドサービスにおける位置づけについて解説します。
クラウドサービスにおける責任分界点
クラウドサービスの大きな要素は責任分界点にあります。ユーザーが管理するべき範囲と、サービス提供事業者が管理するべき範囲を定めた責任分界点によって、サービスの仕様は大きく異なります。それぞれの形態について解説します。
IaaS(Infrastructure as a Service)
主にネットワークなどインフラ部分のプラットフォームを事業者が提供する形態です。プラットフォーム上に立てられたサーバーより上のレイヤーはユーザーの管理責任となります。
スペックに応じたサーバーの稼働時間によって利用金額が変わる従量制課金であり、最もスタンダードなクラウドサービスといえるでしょう。
PaaS(Platform as a Service)
OSやミドルウェア、データベースが設定されたプラットフォームを事業者側が提供する形態です。IaaSと比べてユーザー側の責任範囲は小さくなり、OSとミドルウェアの管理が省かれています。OSのセキュリティアップデートや、ミドルウェアの脆弱性対応などの運用面においても事業者側で行われます。
ユーザーの責任範囲はアプリケーションの管理です。例えば、アプリケーションなどで脆弱性が発覚した場合は、ユーザー側で対応する必要があります。
SaaS(Software as a Service)
Microsoft Office 365のようにインターネット上でアプリケーションを利用できるサービス形態です。SaaSは利用者のなかでもより多くのコンシューマーにフォーカスしていることから、他の利用形態とは規模が異なります。近年では、SaaS+サブスクリプションの利用形態が急速に普及しました。
FaaS(Function as a Service)
今回のメインテーマであるサーバーレスを提供するのがFaaSです。FaaSはインターネットを通じてプログラミングを作成し、実行のみをおこなうクラウドの利用形態です。
ファンクション(Functions)をトリガーに、プログラム実行に必要なリソースがシステムに割り当てられ、プログラムの終了後にリソースを開放する仕組みです。従量制課金で、プログラムの処理した量によって課金されます。
IaaS、PaaS、FaaSへ移行するにつれ、ユーザー側の管理負担が軽くなっていくのが特徴です。FaaSは、IaaSやPaaSよりも簡単にアプリケーションを開発して動かせる環境といえるでしょう。
次章では、Azureのサーバーレスサービス「Azure Functions」について解説します。
Azure Functionsとは
Azure Functions(アジュール ファンクションズ)は、マイクロソフトが提供するFaaS型のクラウドサービスです。Azure Functionsを活用することで、サーバーレスアーキテクチャの環境を容易に実現できます。Azure Functionsの概要、機能、料金プランについて解説します。
Azure Functionsの概要
Azure Functionsは管理範囲を最小化し、コスト節約を実現したサーバーレスソリューションです。アプリケーションの実行を維持するために必要な最新のリソースがクラウド環境から提供されるため、サーバー構築、運用、管理が不要です。ユーザーは開発作業に集中でき、アプリケーション開発の効率化につながります。
Azure Functionsの主な機能
関数
Azure Functionsは、コードが記載されたパターンテンプレートの中に任意のプログラムを実装できます。このテンプレートを関数と呼びます。また、Durable Functions と呼ばれるステートフル関数を記述できる拡張機能もあります。
トリガー・バインド
トリガーとはプログラムを動作させるきっかけを意味し、バインドは機能やデータを割り当てることを意味します。Azure Functionsは、このトリガーとバインドを組み合わせて利用することで、他サービスと統合するためのコードの記述が不要となり、効率的にプログラミングができる仕組みです。
オートスケール
スケールとは処理能力の高さであり、プログラミングの負荷状況に応じて自動的に処理能力を拡張できる機能です。スケールコントローラーにより、プログラムの実行状況を監視し、スケールアウトとスケールインの実行を判断します。
多言語対応
Azure Functionsでは、C#、JavaScript、Java、PowerShell、Python、TypeScript、Bash、PHPなどさまざまな言語に対応しています。一部プラットフォームによって実行可否が異なるため、詳細はAzure公式サイトをご確認ください。
パフォーマンスの可視化
Azure Functionsは通常のログデータの収集機能に加え、Azure Application Insightsを組み合わせて利用することで、アプリケーションのパフォーマンスを可視化して高度な監視環境を実現できます。
プログラミング実行タイマー機能
Azure Functionsでは、関数を定義したスケジュールに基づき実行時間を設定できます。リアルタイムに実行する必要がなく、あらゆるワークフローをスケジューリングして自動化できることから、効率性が高まります。
Azure Functionsは、Azure Portalの簡単なアサインからを始めることができます。これらの機能を駆使して、サーバーレスアーキテクチャの運用を実現しましょう。
Azure Functionsの価格
Azure Functionsの価格プランについて解説します。
従量課金プラン
従量課金プランは、1 秒あたりのリソースの使用量と実行回数に基づいて課金されます。従量課金プランの価格には、そのサブスクリプションに含まれるすべての関数アプリ全体にわたり、サブスクリプションあたり月次 1 百万回の要求と 400,000 GB のリソース消費が無料で従量課金制価格に含まれています。
Premium プラン
Premium プランでは、従量課金制プランの機能に加え、スケーリング機能を提供しています。Premium プランの課金は、インスタンス全体にわたって割り当てられたコア秒数とメモリに基づいています。プログラムの実行料金は発生せず、プレミアム機能により消費される vCPU 数と GB 数に基づいて、1 秒単位で課金されます。
まとめ
サーバーレスアーキテクチャは、従来のサーバー環境と比較して、最小限のコストで、より迅速な開発が可能です。ビジネススピードの速い現代においては、企業の開発環境を効率化して競争力を高めることが必須といえます。ぜひ、サーバーレスアーキテクチャの実現に最適なAzure Functionsの導入を検討してみてください。