問い
Serverlessとは何か?
答え
すみません、よくわかっていませんでした。
という経験をしたので、反省の意味も込めて調べてみました。
サーバーレスとは
まず、Qiitaで検索してみたところサーバーレスアーキテクチャという技術分野についての簡単な調査という記事が見つかりました。
この記事によるとサーバレスについて以下のような記述がありました。
アプリケーションサーバーが「常駐型プロセス」を実行するインフラストラクチャだとすれば、サーバーレスアーキテクチャは「非常駐型プロセス」をイベントによってトリガーするインフラストラクチャだといえるだろう。
ちょっと難しいですが、非常駐のプロセスがイベント駆動するとサーバーレスという事になるみたいです。
という話を、元の質問者に返したところ「それはCGIとはどう違うの?」となりました。
それでは、という事でCGIとサーバーレスの違いをググってみたところ、伊藤直也氏が語る、サーバーレスアーキテクチャの性質を解剖する(中編)。QCon Tokyo 2016という記事を見つけました。
こちらによると・・・
CGIはリクエスト毎に実行、終わったら破棄
とあります。また、
しかし問題だったのは、起動するたびにアプリ全体がフォークされていたので、実行の効率がとても悪くて、以前はホスティングサービスでみんながCGIを動かしているとすごくサーバが遅くなったと。
と書いてあるように、CGIとの違いはどうやらアプリケーション全体をフォークするかどうかという点にありそうです。
なんとなくわかってきたのでもう少しググってみました。ずばりServerless Architecturesというアーティクルがあったので、拙い英語力で読んでみました。
ポイントは、たぶん「FaaS(Function as a Service)」ということなんだと思います。
前述のCGIとからめると、単機能なCGIであればほぼサーバーレスと言っていいのかな?と思いつつ読み進めてみましたが、中段のところで、PaaSとの大きな違いはスケールについて考慮する必要が無い事だ、と書いてあるような気がします。
まとめ
ということでサーバーレスの私なりの理解としては、こうなりました。
- 機能単位に分割された部品を
- 勝手にスケールする所に配置して使う
- それらを使ってマイクロサービスを運用する
ところで・・・
ちょっと寄り道して、Amazonで書籍を検索してみました。
ん?AWS Lambdaの本しか無いぞ・・・