サーバレスアーキテクチャ比較、Lambda、Cloud Functions、Azure Functionsのどれを選ぶ?(1/3 ページ)
サーバレスアーキテクチャの導入を検討する際に留意すべきポイントや、サービスを選ぶ際の選定ポイント、効果が表れやすいユースケースなどについて解説する。
この数年で、クラウドアプリケーション開発のための新たなスキームとして一気に注目を集めるようになった「サーバレスアーキテクチャ」。PaaSのマネージドサービスや、「FaaS(Function as a Service)」と呼ばれるイベントドリブン方式のプログラム実行基盤を活用することで、ユーザーがサーバの存在を一切意識することなくアプリケーションを開発・運用できるようにする技術だ。
今回は、サーバレスアーキテクチャの導入を検討する際に留意すべきポイントや、サービスを選ぶ際の選定ポイント、効果が表れやすいユースケースなどについて解説する。特に「サーバレスにすると本当にコストが削減されるのか」「AWS Lambda、Cloud Functions、Azure Functionsといったサービスの中からどれを選ぶべきか」「どのようなアプリケーションに合っているのか」といった疑問に答える情報を紹介していくので、検討時の参考資料としてほしい。
まずは、実際にサーバレスアーキテクチャでアプリケーションを開発する際、留意すべきポイントを幾つか紹介する。
内部仕様のカスタマイズ性や柔軟性の要件に注意
コストや運用効率、スケーラビリティなどの面で多くのメリットがあるサーバレスアーキテクチャだが、どんなシステムにも向いているというわけではない。例えば、特定のタイミングで定期的に発生する処理があるような場合、そもそもサーバレスアーキテクチャの実装に向いていないといえるだろう。
また「仕様の柔軟性」という面でサーバレスアーキテクチャには制約がある。データベースやアプリケーションサーバなどのクラウドサービスを、FaaSをハブにして互いに連携させることでアプリケーション全体を構成するのが、サーバレスアーキテクチャの典型的な開発手法だ(図1)。この場合、既存のクラウドサービスの機能がベースになるため、各クラウドサービスが提供する機能を組み合わせる以外のカスタマイズは諦めざるを得ない。また、サービスによっては開発言語が限られているという制約にも注意が必要だ。
こうした面に目をつぶってでもコストやスケーラビリティのメリットを享受したい場合は、サーバレスアーキテクチャの利用に向いているといえる。逆に、顧客の細かな要望や仕様変更に適宜柔軟に応える必要があるSI案件などのケースでは、サーバレスアーキテクチャは向いているとはいえない。
マイクロサービスに基づく設計スキルが必要
サーバレスアーキテクチャは、FaaSを介してさまざまなクラウドサービスを何段階にも渡って連携させていくことで、かなりの規模のシステム開発にも対応可能だ。ただし、そのようなシステムを設計するには独自のノウハウが必要である。特に、独立したサービス同士の疎結合でシステム全体を構成するアーキテクチャという意味で相性のよい、「マイクロサービス」の考え方をよく理解している必要があるだろう(マイクロサービスの解説記事はこちら)。
また、サーバレスアーキテクチャを前提としたパッケージソフトウェアやソフトウェア実行フレームワークなども、現時点ではまだ存在していない。そのため、サーバレスアーキテクチャをベースにシステムを構築する場合は、毎回一からシステムを設計・開発する必要がある。場合によっては、サーバ構築を前提にした通常のパッケージソフトウェアの方が効率よくシステムを実現できるケースもよるため、慎重な見極めが必要だ。
障害復旧処理の実装コストが高くなる可能性も
FaaSは、プログラムが稼働した時間の分だけ利用料を払えばよく、ハードウェアはもちろんOSやミドルウェアの運用もクラウドベンダーに全て委ねられるため、導入・運用コストをかなり低く抑えられる。ただし、アプリケーションの開発コストまでが低くなるとは限らず、場合によっては逆に高くなってしまう可能性もあるということには留意しなければならない。
通常のビジネスアプリケーションでは、冗長性の確保や障害時の復旧などの処理をアプリケーション本体に実装する代わりに、運用で補う場合も多い。しかしサーバレスアーキテクチャの場合、インフラ運用が完全にブラックボックス化にあるため、障害の際にも簡単にシステムを触ることができない。このため、冗長化や障害復旧などの処理は、アプリケーション本体に実装するしかない。その分、旧来のアプリケーション開発手法と比べ、開発コストが高くなる可能性がある点に注意が必要だ。
サーバレスアーキテクチャという用語の定義は現時点ではかなり曖昧だが、アプリケーション開発者の間で「サーバレス」という用語が使われる場合は、アプリケーションのプログラムの最小実行単位、つまり「ファンクション」をクラウド上で実装する「FaaS」を使った開発手法の意味合いで用いられることが多いようだ。
近年多くのベンダーがFaaSサービスの提供を始めている。それらの中でも特に代表的なFaaSサービスを3つほどピックアップし、それぞれの特徴を以降で簡単に紹介する。
Copyright © ITmedia, Inc. All Rights Reserved.