サーバーレスって何?
近年、AWS(Amazon Web Services)や、GCP(Google Cloud Platform)といった、パブリッククラウドにおけるITシステムの設計の一種として、『サーバーレス』が非常に注目されています。サーバーレスとはいったいどのようなもので、どのようなメリットやデメリットがあるのでしょうか。本記事でわかりやすく説明していきます。
目次
サーバーレスとは?
サーバーレスとは、クラウドの利用の一形態です。クラウドの利用形態は、大きく分けて以下の4つが挙げられます。
IaaS
「Infrastructure as a Service」の略で「イアース/アイアース」と読みます。サーバやネットワークといった、ITシステムを構築するインフラ部分を丸ごと借りる利用形態です。AWSが提供する「Amazon Elastic Compute Cloud(Amazon EC2)」が代表例です。
PaaS
PaaSは、「パース」と読み「Platform as a Service」の略で、ITシステム開発に必要なOSやミドルウェア、データベースが設定された状態のプラットフォームを利用する形態です。GCPのGoogle App Engineや、AWSのRDS、ElasticBeanstalkといったサービスが代表例です。
SaaS
「Software as a Service」の略で「サース/サーズ」と読みます。従来はパッケージとして提供されていたアプリケーションをインターネット上で利用できるサービスで、Microsoft Office 365などが代表例です。
FaaS
「Function as a Service」の略で「ファース」と読みます。インターネットを通じて、プログラミングで作成した処理の定義・実行のみをおこなうクラウドの利用形態です。AWS LambdaやGCPのCloud functionが該当します。
このうち、クラウドサービス提供側(AWS等)が実際のサーバーを用意し、管理を行うSaaSやFaaSが、『サーバーレス』に該当します。つまり、実際にはアプリケーションが稼働するサーバーが存在するものの、顧客側はクラウドにあるサーバの存在を意識せずに、アプリケーションやデータベースの利用ができるクラウド利用形態のことを『サーバーレス』といいます。
AWS上でサーバーレスを活用してDXを実現するスタイルズのサーバーレス開発サービスはこちら→
サーバーレスの構造や仕組み
先述の通り、サーバーレスは本当に物理的なサーバが存在しない、というわけではなく、AWSやGCPなどのクラウドサービス提供者が物理サーバを用意し、設定、運用管理を行っているから利用者が意識しなくてもいい、ということになります。AWSでいうと、実際は物理サーバ上に小型で起動速度に優れたOSが立ち上がり、Lambdaなどの実行をおこなっている、ということになっています。詳細な裏側については、AWSが出しているサーバーレスに関する論文『Firecracker: Lightweight Virtualization for Serverless Applications』に記載があります。
サーバーレスで何ができる
サーバーレスアーキテクチャを利用して、多種多様なアプリケーションやWebシステムを開発することが可能です。AWSでいえば、API Gateway(API管理)、Cognito(認証)、Lambda(処理)、S3(ストレージ)で簡単なWebサイトの公開が可能です。GCPであれば、Pub/Sub(メッセージングキュー)、Dataflow(データ連携)、Bigquery(データ分析)、GCS(ストレージ)でデータ分析基盤が容易に構築可能です。このように、複数のサーバーレスサービスを組み合わせることで、要件に応じた様々なITシステムを構築することができます。
サーバーレスのメリット
サーバーレスのメリットはどのようなものがあるのでしょうか。具体的に見ていきましょう。
サーバーの運用が不要
一般的にITシステムの運用を行う際には、アプリケーションが稼働しているサーバーの運用保守も必要です。具体的には、サーバ(ハードウェア)が故障していないか、ログにエラーは出力されていないか、といったことを日々確認する必要があります。しかしながら、サーバレスの場合は、これらの作業はすべてAWSやGCPなどのクラウド提供業者が行います。そのため、サーバーの運用に関する様々な業務を削減することができ、人的リソースをアプリケーション開発に注力することができます。
利用した分だけの課金
サーバーレスは、IaaSなどの他のクラウド利用形態と違い、利用した時間や実行回数に応じて課金がされます。例えば、IaaSの場合は、サーバーの利用契約を3か月単位で結ぶ場合もあり、3か月の間に使っても使わなくても課金が発生してしまいます。
一方でサーバレスは、利用した時間に応じた課金体系です。例えばAWS Lambdaは、Lambda関数のリクエスト数(実行回数)と、Lambda関数のメモリに応じた実行時間に対する課金体系です。このように、使った分だけ課金されるので、コストの効率化を行うことができます。
可用性(Availability)・回復性(Recoverability)の向上
物理サーバーを利用してITシステムのインフラ設計を行う場合は、データセンターやラックを複数利用するなど、一定の可用性や故障時の回復性を考える必要があります。可用性や回復性を考慮するためには、サーバやデータセンターを複数契約するなど、多大なコストがかかってしまい、対応できない場合が多いです。
しかしながらサーバーレスの各種サービスはクラウドサービス提供者側で非常に高いレベルで可用性や回復性を担保しているため、自前で考慮するよりも品質が良い状態で可用性と回復性の担保が可能です。
柔軟なスケーラビリティ
一般的にITシステムを構築する際には、アクセス数やデータ量など、事前に必要なキャパシティを想定して設計する必要があります。想定が間違うと、サーバの増強やディスクの拡張といった作業も必要になります。しかしながら、サーバーレスの場合はこれらの作業もクラウドサービス提供者側で自動的に行うため、利用者側での考慮が不要になります。
AWS上でサーバーレスを活用してDXを実現するスタイルズのサーバーレス開発サービスはこちら→
サーバーレスのデメリット
サーバレスのメリットについて記載してきましたが、一方で、サーバーレスのデメリットも存在します。デメリットについても詳しく記載していきます。
既存のコードが使えない
LambdaやCloudfunctionには既存のアプリケーションコードをそのまま移行することはできず、ある程度の変換が必要になります。また、Lambda等ではデフォルトで利用できないプログラミング言語も存在するため、その場合は追加で作業が必要になります。
ベンダーロックイン
サーバレスアーキテクチャはクラウドベンダーをまたがって開発することが前提となっていません。また、一度開発したアプリケーションを他クラウドベンダーへ移行することは推奨されません。例えば、1PB(ペタバイト)のデータを1か月Amazon S3に配置しておく料金と、GCSなどの外部ストレージに転送する料金では、後者のほうが高くなります。
処理上の成約
AWS Lambda、DynamodDBといったサービスは、何らかの機能制限がある場合があります。たとえば、AWS Lambdaは、15分以上の時間がかかる処理は行えないことになっていますし、
DynamoDBは格納する1つのデータサイズが上限400 KBとなっており、1つ1つが大きなデータを扱えない、という制約が存在します。
サーバーレスの使い所
サーバレスの使いどころとしては、多種多様です。様々なアプリケーションに利用できます。ただし、処理時間やデータ量に制約があるので、現状は以下のような要件の場合、サーバレスに向くでしょう。
- 小さなデータを高速でやり取りしたい場合
- 他システムとの連携を楽に行いたい場合
- 小規模にデータ分析を始めたい場合の基盤としての利用
まとめ
サーバレスにはメリットもデメリットも存在します。ただし、低価格、高速なアプリ開発、運用が不要、といったメリットは非常に大きいので、デメリットについてよく理解しながら、積極的に利用を進めていくといいでしょう。