「サーバレスアーキテクチャ」という言葉を目にするようになって、なんだかもやもやするなぁと思っていた。 最近だと、「サーバレス」という言葉の方がよく目にする気がする。
この記事を読んで、さらに違和感しかなくなった。
僕の気持ち
最近サーバレスアーキテクチャっていう言葉がよくわからなくなってきてる。サーバレスのサーバを構築するって何言ってるかよくわかんないんだけど。。
— くろさん (@kuro_m88) June 28, 2016
…サーバレスって、何がないんだっけ?
Twitter上での皆さんの気持ち
自分だけかなと思ってTwitterを検索してみると、同様に違和感を感じている方がいて安心(?)した。
はじめて聞いた時から思ってるんだけどサーバレスってサーバあるよね:「サーバレスとは何か」そして「サーバレスとPaaSの違い」とは。マーチン・ファウラー氏のブログに投稿された解説 - Publickey https://t.co/PKPDZIHkml
— СЮУ1228 (@syuu1228) August 7, 2016
サーバーレスとかいう謎の単語が見えたけどapacheとかが命令受理してフォークしてプロセス作るのと、AWSとかが命令受理してインスタンス作るのって根本的に意味は違わないと思うんだけど
— もふもふ提督 (@Moffu360) 2016年8月7日
サーバレス(サーバあり
— ア (@aeri912) 2016年8月8日
サーバとは
サーバあるいはサーバー(英: server)は、コンピュータの分野では、本来はソフトウェアの用語であり、クライアントサーバモデルにおいてクライアントからの要求に対して何らかのサービスを提供する役割を果たす側のプログラムを指す言葉である。
〔コンピュータ〕 サーバー:ネットワーク上で他のコンピュータに情報やサービスを提供するコンピュータ
サーバとはサービスを提供(Serve)するからサーバ(Server)と呼ばれる。
その前提からすると、「サーバレス」はサービスの提供者が居ないような気がしてやはり変な感じがする。
サーバレスとはなんなのか
前述の意味を真に受けてしまうと何もしないに等しい状態になってしまうし、さすがにそんなことはない。
サーバがないというより、自前で管理しなくて良い、マネージドサービスのことを言っているんだと思う。
一番よく例に出されるのがAWS Lambda。ドキュメントに書いてある説明がわかりやすい。
AWS Lambda は、コードを AWS Lambda にアップロードすると、サービスが AWS インフラストラクチャを使用してコードの実行を代行するコンピューティングサービスです。
サーバを管理しなくてよくて、アプリをデプロイするだけで良いっていうのは要するにPaaSのことでは。
さくらインターネットの田中社長もこんなツイートをしていた。
サーバーレスとかってのが流行っている、というか単なるマーケティングの延長線上でだろうけど、エンジニアが喜んでやってるならまだしも、流行りでやらされてるって話を聞くと胸がキューっとする。というか、タダのPaaSの言い換えだけのことも美味しい。さくらインターネットはサーバーです!
— 田中邦裕 (@kunihirotanaka) August 20, 2016
ちなみに、「美味しい」は「多いし」のtypoだそうです。
「サーバレス」はマーケティング用語であって技術的にはその用語自体のことを気にする必要はなさそう。
なんと呼べばいいのか
PaaSに違いないということはわかった。
PaaSと言われるとHerokuが最初に思い浮かんだのだが、HerokuとAWS LambdaやGoogle Cloud Functionsは同じPaaSのくくりでも何か違う気がする。
SDKが必要/不要などもあるが、前者は入力としてウェブブラウザ等からのHTTPリクエストを受けるのを前提としていて、後者はもっと汎用的に「イベント」を受けるのを前提としている。ウェブアクセスだけでなく、「ストレージにオブジェクトが置かれた」などあらゆるイベントのトリガーを設定することができる。
これは、一番最初に挙げた記事中にも書かれているが、入力に対して出力を返す関数のようなもの、 Function as a Service
と呼ぶ方がよさそう。
「サーバレス」はマーケティングのための用語で、「PaaS」に変わりないし、もっと詳しく分類するとすれば「FaaS」ということで自分の中では落ち着いた。
追記
同期の反応