サーバレスアーキテクチャについて考える機会があったので、サーバレスアーキテクチャの概要とメリットデメリットを考えてみました。あとは各クラウドプラットフォームが提供するサーバレスアーキテクチャのソリューションサービスについても調べてみました。
目次
サーバレスアーキテクチャとは
サーバを必要とせず、処理ロジック=関数をクラウド上で実行するもの。実行に必要な環境はクラウドサービス側で管理される。関数の実行をマネージドにしたサービスとも言えるので、Function-as-a-Service
(FaaS)と呼ばれるそう。
メリット
- リソースを常に確保する必要がない
必要なときに必要なだけリソースを確保するのでコスト面で有利になる場合がある
特にリクエストが限られている場合、常にサーバを立ち上げておく必要がなくサーバレスの方が有利に
-
開発だけに集中できる
マネージドサービスを利用することにより開発者がインフラ面を考慮する必要がなくなる
環境構築、障害対策、攻撃対策さまざまなことを考えなくて良くなる・・?
デメリット
-
常にサーバで処理が動いているようなシステムには適用しづらい
なんせサーバがないので・・・
-
処理実行後は実行環境がすぐに破棄される
APの中に状態を持ち回って・・・なんて実装はできなくなる
ステートレスに実装しましょう
-
ベンダーロックイン
各プラットフォームごとに固有の形式でコードを記述する必要があるらしく、どの環境でもぽん乗せで動くわけでないらしい。
-
叩かれると初期化してから処理実行されるので常にスタンバってるサーバと比べると時間を要する
サーバレスアーキテクチャに向いてるも・向いていないもの
向いているもの
-
REST APIのバックエンド
RESTの設計原則が、ステートレスなクライアント/サーバプロトコルであるため
-
一日のリクエスト数、集中する時間が限られているもの
常にサーバでどっしり構えておく必要がないものはコスト面で有利になるんじゃないかって話
向いていないもの
-
リアルタイム性を要求される処理
オンラインゲームなど・・・
コンテナ起動時間がリアルタイム性を要求する処理には命取りに
-
実行時間が長いバッチ処理
AWS Lambdaの場合リクエストあたりの最大実行時間 は5分に制限されています
それ以上かかる処理は死にます。
各プラットフォームで提供するサーバレスのサービス
比較はここに詳しめにのっていた。
詳細比較は今後調べていきます。