【特集】サーバーレスアーキテクチャを実現する
「Azure Functions」

  • このエントリーをはてなブックマークに追加

変化への柔軟な対応とスピーディーなサービス開発

ビジネスのデジタル化が進むなかで、企業は、膨大なデータの活用を通じて顧客が何を望んでいるかを知り、多様化する顧客に最適な顧客体験を提供していくことが求められています。

このようなビジネス環境の変化に柔軟に対応していくため、システム開発の考え方も変化しています。従来主流だった、すべての要件を固め、前工程の成果物の品質を確保しながら順々に開発を進める「ウォーターフォール型」と呼ばれる手法は、要求された仕様通りに開発が進むというメリットがある一方、開発途中で仕様に変更があった場合には柔軟に対応しにくいというデメリットがありました。

そこで「イテレーション」と呼ばれる、短い開発期間単位を反復することで、プロジェクト途中で発生する変化にも柔軟に対応できる「アジャイル型」の開発手法を採用する企業が増えているのです。

またシステムのアーキテクチャにも、変化が生まれています。

すべての機能が1つのプロセスとなっている、いわゆるモノリシックなシステムでは、大規模になればなるほど複雑化して開発に時間がかかったり、障害が起きたときには問題の切り分けや原因の特定が困難になるというデメリットがありました。 そこで提唱され始めたのが、個別に開発された小さなサービスを組み合わせて、大規模な1つのサービスを提供する「マイクロサービス」という考え方です。

これは、用途・目的ごとにコンポーネント化されたサービスをつくり、これらをAPIで連携させることで、変化に強くて柔軟性が高く、サービス障害にも対応しやすいシステムを構築しようというもので、現在、AmazonやLINE、クックパッドなどのコンシューマー向けインターネット企業を中心に採用されています。

アジャイルやマイクロサービスを支える「サーバーレスアーキテクチャ」

前述したアジャイルやマイクロサービスを支えるインフラとして、AzureをはじめとするPaaS型のクラウドサービスの利用が進んでいますが、最近注目されているのが「サーバーレスアーキテクチャ」という考え方です。

これは、画像処理や注文処理、ファイルの保守といった他のアプリケーションからの通信等のイベントをトリガーとして、その都度処理を実行する「非常駐型」のアプリケーションインフラのことです。

従来、アプリケーション開発者や管理者は、クラウドサービスを利用する際には、事前にサーバーやデータベース、ストレージといったインフラのリソースを最適化したり、アプリケーション開発後には、必要に応じてアプリケーションサーバーをスケールアウトする必要がありました。

こうしたプロビジョニングや運用管理の負荷を軽減しようと、各クラウド事業者では、サーバーレスアーキテクチャを実現するためのアプリケーション(サーバーレスアプリケーション)を提供しています。そして、Azureで提供されるサーバーレスアプリケーションが「Azure Functions」なのです。

Azure Functionsとは何か

Azure Functionsは、データの処理やシステムの統合、IoTデバイスの操作、APIで連携されたマイクロサービスの構築に適したソリューションで、マネージドサービスとして提供されています。

現在、プレビュー版が公開されており、利用者はアプリケーションサーバーを自前で用意することなく、またサーバーのスケーラビリティや運用管理なども気にせずに、容易に、システムを構築できます。

このシステムで可能なこととしては、例えばモバイルのカメラで画像を撮影したとき、カメラ撮影をトリガーにして撮影された画像を「Blob Storage」にアップロードし、アップロード完了を2番目のトリガーにして、画像をモバイルなどのデバイスにあわせたサイズにリサイズするなど、コンテンツ管理システム(CMS)におけるモバイル投稿などへの応用が考えられます。

Azure Functionsで可能になることの一例

Azure Functionsで可能になることの一例

Azure Functionsは、JavaScriptやC#、Python、PHPなど、さまざまな言語で機能を作成でき、サーバーレスにイベント主導の操作を実行できます。また、トリガーとなるイベントはAzureに限定されません。Azure App Serviceをはじめとする既存のAzureサービスや、サードパーティ、オンプレミスのサービスと統合が可能です。

課金は消費したリソースに対してのみ。コードが実行される時間分だけの料金を支払えば利用できます。

今後、アプリケーション開発のスピード向上や、ビジネス環境の変化に強いシステム開発に対するニーズは高まり、サーバーレスアーキテクチャはますます注目されていくことが考えられます。

システム開発から稼働、運用、修正、機能強化をできるだけ短期間で進めていくために、開発担当者と運用担当者が連携していくDevOpsを取り入れたいと考える企業にとっても、Azure Functionsは重要性を増していくでしょう。

photo:Thinkstock / Getty Images