ボクココ

個人開発に関するテックブログ

サーバーレスアーキテクチャの所感

ども、@kimihomです。

最近色々と話題になってきたサーバーレスアーキテクチャ。サーバーレスアーキテクチャに早い段階から注目し、調査してきた私なりの意見を本記事でまとめてみようと思う。 単なる一個人の意見なので、そこは注意していただきたい。

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

またバズワード的なものか、と思われる方も多いかもしれない。基本的にサーバーレスアーキテクチャはAmazon Web Service におけるサービス群の中で、 Amazon S3AWS Lambda Amazon API Gateway の3つをうまく組み合わせて、 従来のWebアプリケーションで必要だった常に動くサーバーを用意することなく、必要な時にAPIで呼び、必要な時にだけプログラムを動かす、といったことを可能にするアーキテクチャであることが特徴だと考える。

Amazon API Gateway が登場してきてから、サーバーレスアーキテクチャという言葉が登場してきたので、おそらく Amazon API Gateway を使って サーバー構成を組むことがサーバーレスアーキテクチャなのではないか、と思っている。

f:id:cevid_cpp:20151128130815p:plain

CloudFront 噛ませるとか、スマホアプリからとか、そういうことを抜いたシンプルな構成だと上記のような図になるだろう。

サーバーレスアーキテクチャのメリット

サーバーレスアーキテクチャにすることで、従来のEC2を中心とした AWS で作るサーバー構成よりも良い点が生まれる。

  • リクエスト分の課金なので、安価に抑えられる
  • スケーラビリティを気にすることなく開発できる

他にもあると思うが、私が重要だと思うのは上記2点である。ただし、もちろんそれによるデメリットもある。

  • コードに集中できる、とあるが書かなければならないコードが多くなる
  • 未成熟な分野

最近は JAWS Framework というサーバーレスアーキテクチャをより高速に開発できるフレームワークが登場しつつあるが、まだ出来たてなのでやりたいことをしようとすると自分で一から開発しなければならないことが多くなる。JAWS Frameworkにも Module という Ruby でいう Gem みたいなものが出始めているそうだが、それでもまだまだ数が少なく、本当に一からコードを書いていかなければならない場面が多く出てくるだろう。それが今後のサーバーレスアーキテクチャの発展に寄与するためにやるって人ならチャレンジしてみるのもいいだろう。ただし未成熟な分野なので、あらゆる開発の壁に当たるだろう。

同じことをするんだったら 普通に Rails でサーバー建てた方が間違いなく高速に開発できる。

サーバーレスアーキテクチャの使い道

ではどんな時にサーバーレスアーキテクチャを選択するのが良いのだろうか?

私が思うに、リクエスト数が初めから大量に来るとわかっているようなページ、高い可用性が必要なページであり、かつプログラムを書かないといけない部分が少ないページ である時にとても効果を発揮する。

具体的には キャンペーンサイトや、会社のHP、製品のLPなどだ。こうしたページは複雑なプログラムを必要としない。今までこういうのを作ろうとした時、大して大掛かりなプログラムを書く必要がないのに、わざわざそれなりにいいサーバーを調達しなければならなかった。そういう課題をサーバーレスアーキテクチャは解決してくれる。例えば以下のQittaの事例などは、サーバーレスアーキテクチャに近い構成で、とてもいい事例だ。

S3 + Lambda + Cognitoを使って、簡単お問い合わせシステム構築 - Qiita

そして、他の例として私が今最も注目しているのが、 Twilio と連携するサーバーとしてサーバーレスアーキテクチャを選択するということだ。 Twilio はご存知の通り電話APIだが、電話こそ常に動いている必要がある。しかもそこまで多くのプログラムを書く必要がないので、電話システムを自社で構築したいといった場合には Twilio と サーバーレスアーキテクチャの組み合わせはベストマッチングではないかと思っている。

今後のイベント

この辺の話は12月8日にKDDIさんでハンズオンを実施する予定なので、もし時間が合えば参加していただければ幸いだ。サーバーレスアーキテクチャについて話し合える場にできたらと思う。そこで話したかった内容を本ブログ記事でほとんど書いてしまった感があるが。。Twilio API 勉強会 Vol.28 - サーバーレスアーキテクチャで Twilioを安全に運用しよう! - TwilioJP-UG | Doorkeeper

それとは別に、CallConnect はサーバーレスアーキテクチャが出る前からAWS Lambda に注目し、積極活用して開発しているサービスである。この開発秘話と題して新規事業担当者や、スタートアップなどに聞いていただきたいイベントを企画している。こちらは12月3日に渋谷dotsで開催なので、ふるってご参加いただきたい。ハッカソンから生まれたサービス「CallConnect」開発秘話 | Facebook