プログラマでありたい

おっさんになっても、プログラマでありつづけたい

サーバレスアーキテクチャとは?

 サーバレスアーキテクチャの整理です。少し前は、2-Tier Architecture(クラウドネイティブなアーキテクチャ)と3-Tier Architecture(従来のアーキテクチャ)という対比で論じられることが多かったです。しかし、API Gatewayの登場により、3-Tierな構造でもクラウドネイティブなアーキテクチャにしやすくなりました。ということで、サーバレスアーキテクチャ(ServerLess Architecture)と呼ばれることが多いです。

サーバレスアーキテクチャのパターン



 それでは、従来型のアーキテクチャ(旧3-Tier)と2-Tierパターン、API Gatewayを利用したサーバレスアーキテクチャをそれぞれ見てみましょう。

従来型のパターン( アプリケーションサーバ・パターン)

 まずは従来型のアーキテクチャです。間にELBを挟んでAutoScaleにすることは多いですが、リクエストをEC2が受けてRDSやS3などをバックエンドに使うことパターンです。この構成のメリットは、既存のオンプレミスのサービスを簡単に移行できることです。実際に、このパターンでの利用が一番多いと思います。いわゆるアプリケーションサーバパターンです。

f:id:dkfj:20151019080105p:plain

2-Tierアーキテクチャー・パターン

 次に、Cognito等を利用してモバイルやJavaScriptのクライアントから直接AWSのリソースを利用する2-Tierアーキテクチャのパターンです。2014年にCognito,Lambdaが出てからの流行しました。この構成は、リソースの利用効率が極めて高く、かつコストも最小で更に負荷に対してほぼ自動に拡張できる構成にし易いことです。
f:id:dkfj:20151019080117p:plain

API Gateway・パターン

 最後にAPI Gatewayを使ったパターンです。従来の3-Tierの構成に似ているものの、サーバレスを実現しています。この構成のメリットは、APIを経由してサーバサイドにアクセスするため、クライアント側にSDKを組み込む必要もなくロジックを最小限にできることです。その為、クライアント側のマルチプラットフォーム化がし易いです。
f:id:dkfj:20151019080147p:plain

まとめ



 サーバレスアーキテクチャのうち、2-TierパターンはAWS自身がMobile Hubというフレームワーク(サービス)を出しています。API Gatewayは、JAWSやFluctというオープンソースのフレームワークが出てきています。どの形が主流になるか解りませんが、AWSのサービスのありようがアーキテクチャの考え方に影響する時代になっているというのは間違いありません。

※2016/5/8追記 この辺りの話をまとめて書籍化しています。サーバレスアーキテクチャの考え方や実装例など、600ページ超の大作となっています。是非、ごらんになってください。
Amazon Web Services クラウドネイティブ・アプリケーション開発技法


※2015/10/20追記 サーバレスという言葉の定義とBaaSとの違いについても、少しまとめてみました。
サーバレスアーキテクチャ(ServerLess Architecture)とBaaSの違い


See Also:
仮想サーバ、コンテナサービス、ファンクション
クラウドファーストとクラウドネイティブ
AWS Mobile HubとAmazon API Gatewayからモバイル開発の今後を考える
JAWSUG千葉で、API Gatewayの話をしてきました。