サーバーレスという言葉を耳にしたことはありませんか?インターネットを利用する上でサーバーは必要不可欠です。なのになぜ、サーバー”レス”なのでしょうか。今回はサーバーレスがどのようなものなのか、なぜオススメなのかを紹介します。
FRONT END ENGINEER
Y.F.
「サーバーレス」と聞くと、「ヘッドがないのでヘッドレスCMS」のように、「サーバーがないのでは」と思うかもしれません。
一言で説明するのであれば「サーバーの管理を必要としない仕組み」のことです。
アプリケーションは必ず物理的なサーバーの上で稼働しますが、ユーザー側からは隠され、見えない存在であることから「サーバーレス」と呼ばれています。
ITインフラの進化の歴史を振り返ってみると、サーバーやOS、ネットワーク、ストレージなどのリソースの物理的な構成を利用者から見えなくして、よりシンプルで使い勝手の良いサービスを動作させたり、リソース利用の効率化を図って進化してきました。
最初はたった1台で物理的に独立して動いていましたが、やがて1台のサーバーを複数のサーバーが動いているように機能させる「仮想マシン」が発達し、さらに「コンテナ」によってアプリケーションのプラットフォームが仮想化されました。また、それを提供するサービスである「クラウド・コンピューティング(クラウド)」も普及していきます。
最終的に、プログラムや機能(Function)だけを登録するだけで実行できるプラットフォームを仮想化したのが「サーバーレス」です。
サーバーレスはFunctionをきっかけにプログラムが動作することから、サーバーレスを採用したシステム群をFaaS(Function as a Service)とも呼ばれます。
代表的なFaaSのサービスとしては、2014年11月にAmazonがAmazon Web Services(AWS)で提供開始した「AWS Lambda(ラムダ)」をはじめ、MicrosoftのAzure Functions(2016年3月提供開始)や、Google Cloud Platform(GCP)のGoogle Cloud Functions(2017年3月一般公開)が挙げられます。
現時点で世界で最も利用されているのはAWS Lambdaです。いち早く公開したため事例が豊富なことや、AWSが提供する他サービスとの連携が容易なことなど、多くのメリットが世界中の開発者に評価されています。
では、サーバーレスはどのような点が優れているのでしょうか。
いくつかメリットをあげて説明します。
利用者がサーバーの構築や運用をする作業が不要になります。
一般的にWebサービスを提供する場合、少なくとも以下の作業が必要になります。
サーバーレスの場合、上記のうち、「サーバーにアプリケーションをデプロイする」だけを行えばよくなります。
最初にサーバーレスの設定などの必要な作業をUIから行う必要はありますが、一度設定が終わればあとの管理は基本的に不要です。
基本的にサーバーは24時間稼働しており、自社管理のサーバーであれば電気代や場所が、クラウド上のサーバーであれば稼働している間ずっと利用料がかかります。
サーバーレスはいわゆるオンデマンド※1※1外部のリソースなどを使用し、ユーザーのリクエストに応じてリアルタイムですぐにサービスが利用できる方式のこと。なので、使った分だけの費用が発生します。実装したアプリケーションの機能が実行された時間のみの費用となるので、運用コストが低減できます。
※1 外部のリソースなどを使用し、ユーザーのリクエストに応じてリアルタイムですぐにサービスが利用できる方式のこと。
アクセス増加やデータ量の増加に伴って負荷が上昇した時でも、オートスケーリングという仕組みで、負荷に応じて自動的に仮想サーバーを増減してくれます。これによってサーバーの運用・管理の手間が省くことができます。
一方で、サーバーレスにもデメリットはあります。
これまでサーバー上で稼働していた資産(コード)がそのままではサーバーレス環境では使えない場合があります。
サポートされている開発言語や、サービスで動かすための規則を確認し、規則に則って修正が必要になります。
現在提供されているサーバーレスのプラットフォームは、実行時間や消費可能なリソースに制約があります。
そのため、長時間になる処理や、動画のような思いデータを直接処理することなどはできないため、他のサービスと連携する必要があります。
サーバーレスでは、インフラの管理をする必要がない一方、プログラムを実行する環境やパフォーマンスを制御できないため、極端に実行速度遅くなるなど不安定になる場合があります。
また、特定の関数を実行する環境が稼働していない場合、それを新たに立ち上げるのに時間がかかるという「コールドスタート」という問題があります。
これを回避するために、関数を定期的に呼び出して稼働状態を維持する定期イベント関数を設定する必要がある場合もあります。
今まで、それぞれの提供元(ベンダー)によって環境や制限が異なり、独自の技術・仕様になっていることがありました。
特定ベンダーの技術に依存しやすくなり、他のベンダーへの移行が困難になるというものです。
この問題は技術仕様の標準化を進めた結果、解消に向かっているため、今後気にする必要はなくなっていくでしょう。
サーバーレスの概要と、メリットデメリットをお伝えしました。
ITインフラの進化は、サーバーの管理や運用のコストを減らし、開発に集中しやすくなるよう発達してきました。
みなさんも技術選定の際にはサーバーレスを検討してはいかがでしょうか。
今日もあなたに気づきと発見がありますように
画面を回転してください