サーバーレスとは本当にサーバーがないこと?
こんにちは、システムエンジニアの今井です。
先日、社内でサーバーレスについての勉強会を開催しました。
直観的に理解が難しいサーバーレスについて、まとめてみました。
※:クラウドサービスの一つ「Amazon Web Service」を利用する場合の解説です。利用するクラウドサービスによって名称や仕組みが異なりますが、この記事でサーバーレスの全体像が把握できると思います。
サーバーレスとは
みなさんが今みているこのページは、どのようにして表示されているのでしょうか。
このページはブラウザからのリクエストに対して”サーバーがプログラムを実行した結果”として表示されています。
キャッシュレス、ペーパーレス、プライスレス・・・サーバーレス・・・
文字通りに受け取ると「サーバーがないのにどうやってプログラムを実行するんだろう?」と思いますよね。
サーバレスの”レス”はサーバーがなくなったわけではなく、サーバーを意識しなくて良くなったという意味です。
サーバーレス構成ではクラウドが提供している「プログラムを実行するサービス」を利用して処理を行います。
Webページの表示には、プログラムの実行の他にもデータベースやHTTP機能なども必要になるため、複数の機能を組み合わせて動作を実現します。
これまでのWeb制作では、サーバーにHTTP(Apache、nginx)やFTP、データーベースなど様々なソフトウェアをインストールする必要がありました。
サーバーレスではサーバーを管理せずに、それぞれの機能に特化したサービスを利用します。
プログラムの実行環境はAWSが管理してくれるので、開発者はサーバーを意識する必要がなくなり、より本質的な開発作業に注力することができます。
※:AWSの設定・管理は必要になります
クラウドとサーバーレスの違い
クラウドとはユーザーがソフトウェアを持たなくても、インターネットを通じてサービスを利用できる仕組みのことです。
Web制作の現場では、もっと広義に「インターネットを通じてサービスを利用すること」全般についてクラウド(クラウドサービス)と呼ばれています。
サーバーレスの構成ではソフトウェアを動かすためのサーバーを持たないため、必然的にクラウドサービスを利用して動作を実現することになります。
ここで注意したいのは、クラウド=サーバーレスではないということです。
AWSにもサーバー機能を提供するEC2というサービスがありますが、サーバーレスの構成では基本的に使いません。
サーバーを意識しなくて良いサービスは、すべてサーバーレスといえますが、特にプログラムの実行環境を提供するLambda(”らむだ”と読む)がサーバーレスの中心です。
クラウドサービスは10年以上前から存在していましたが、2014年にプログラムの実行環境(FaaS=Function as a Service)が提供され始めたことによって、サーバーレス構成を実現できるようになりました。
サーバーレス(FaaS)の例
- AWS Lambda(Amazon)2014年11月~
- Azure Functions(Microsoft)
- Google Cloud Functions(Google)
- IBM Cloud Functions(IBM)
サーバーレスのメリット・デメリット
メリット
- サーバーを保守しなくてもよい(OSやミドルウェアのセキュリティアップデートなどが必要ない)
- 本質的なアプリケーション開発のみに注力できる
- アクセス増となってもオートスケーリングするため、落ちる心配がない
- 料金は、基本的にはアクセスが少ないときは少なく、多くなれば増える(従量課金)
デメリット
- サーバーレスサービスごとに提供している実行環境が決まっているため、プログラミング言語の選択肢が少ない(PHPなどが標準では使えない)
- サーバレスアーキテクチャの開発手法を覚える必要があるため、学習コストがかかる
特定のベンダーに依存してしまう(例:Amazon, Microsoft, Google)
まとめ
サーバーレスとは
- “サーバーがなくなった” わけではなく、クラウドサービスの進化によって “サーバーの存在を意識しなくてよくなった” こと
- クラウドサービスの中でも、特に “プログラムの実行環境を提供するサービス” のことをサーバーレスと呼ぶ
サーバーレスは万能ではありませんが、運用や保守、初期の開発コストをぐっと下げることができます。導入をご検討の際にはぜひ弊社にご相談ください。
次回ですが、実際に「サーバーレスでお問い合わせフォームを実装する方法」について解説します。