『サーバレス』が非常に注目されています。
サーバレスとはいったいどのようなものなのでしょうか。
本記事でわかりやすく説明していきます。
サーバレスとは
クラウドの利用形態は、大きく分けて以下の3つが挙げられます。
IaaS
「Infrastructure as a Service」の略で「イアース/アイアース」と読みます。
サーバを丸ごと借りる利用形態です。
AWSが提供する「Amazon Elastic Compute Cloud(Amazon EC2)」が代表例です。
PaaS
PaaSは、「パース」と読み「Platform as a Service」の略で
テム開発に必要なミドルウェア、データベース管理システムです。
GCPのGoogle App Engineや、AWSのRDS、ElasticBeanstalkといったサービスが代表例です。
SaaS
「Software as a Service」の略で「サース/サーズ」と読みます。
従来はパッケージとして提供されていたアプリケーションをインターネット上で利用できるサービスで、Microsoft Office 365などが代表例です。
このうち、クラウドサービス提供側(AWS等)が実際のサーバーを用意し、管理を行うPaaSやSaaSが、『サーバレス』に該当します。
つまり、実際にはアプリケーションが稼働するサーバーが存在するものの、管理者はクラウドにあるサーバの存在を意識せずに、
アプリケーションやデータベースの利用ができるクラウド利用形態のことを『サーバレス』といいます。
サーバレスのメリット
なぜサーバレスが採用されるのかというと、サーバレスは様々なメリットが存在しているからです。
サーバレスによるメリットは大きく分けて以下の3つです。
- 高速でアプリケーションを構築できる
- 一部の設計が不要
- サーバの運用管理コストを大きく減らせる
具体的にどのようなものか、それぞれみていきます。
高速でアプリケーションを構築できる
一般的にアプリケーションをリリースする場合、以下の作業が必要となります。
①サーバを配置するデータセンター等を契約する。
②サーバを用意、ラッキング、初期設定を行う。
③サーバに必要なミドルウェア、ソフトウェアをインストールする。
④サーバにアプリケーションをデプロイする。
⑤テストを行い、リリースする。
大抵、1~5までは、早くても数か月~1年かかってしまいます。
しかしながら、サーバレスの場合は、上記の場合1~3の工程が不要になります。
アプリケーションのリリースも最速で数十分に短縮できます。
このように、高速でアプリケーションを実装できることが、サーバレスの大きな強みです。
一部の設計が不要
一般的なプリケーションの設定は、アプリケーション自体の設計のほかに、サーバの設計も行います。
しかしながら、先述のように、サーバレスの場合はクラウドにあるサーバの存在を意識する必要がありませんので、サーバの設計が不要です。
そのため、本来であれば利用者のアクセス数を予想してサーバの設計を行う、といった作業が不要になるので、サーバの設計に関する知識がなくてもアプリケーションの設計を進めることができます。
サーバの運用管理コストを大きく減らせる
一般的にアプリケーションの運用管理を行う際には、以下3つについて監視を行い、
アプリケーションが正常に行えているかを確認し続ける必要があります。
①サーバ(機器自体)が故障していないか
②サーバ上の各プログラムが正常に稼働しているか
③アプリケーションが正常に稼働しているか
これらの1~3について、監視を行う人員や、監視システム等を別途整備する必要があります。
また、故障してもアプリケーションの正常化を行えるように、バックアップや冗長化、リカバリー手順の整備といった、運用に関する設計も行う必要があります。
しかしながら、サーバレスの場合は、上記の1~2についてはAWSなどのクラウド提供業者が行います。
したがって、監視システムの整備や監視を行う人員を、最小限にして、コストを下げることが可能です。
また、サーバレスのアプリケーションは、使われた秒数のみ、課金が行われます。
通常のレンタルサーバサービスや、IaaSといったクラウドサービスは、
1日~1か月単位で利用契約が行われるため、アプリケーションが使われていなくても、料金が発生してしまいます。
しかしながら、代表的なサーバレスのサービスである、AWS Lambdaでは、
起動の回数や、処理を実行している時間ベースの課金となります。しかも100ミリ秒単位の課金なので、レンタルサーバやIaaSと比べて課金額を圧倒的に抑えることができます。
サーバレスのデメリット
サーバレスのデメリットは、一般的に以下のようなものがあります。
- 学習コストが必要
- 利用できる機能に制限がある
具体的にデメリットについても見ていきましょう。
学習コストが必要
サーバレスのサービスには様々な部品(サービス)、設定項目が存在するため、
それに関する学習コストがかかってしまいます。
たとえば、AWSでサーバレスのサービスを構築する場合、
S3、API Gateway、AWS Lambda、DynamodDBといったサービスについて理解をしておかないと、十分にサーバレスのメリットを得ることはできません。
ただし、AWSやGCPにおいては、サーバレスのアプリケーションを構築するためのオンラインハンズオンイベントや、学習ロードマップ、資格体系が整備されています。これらのロードマップに沿って学習を行えば、十分にサーバレスアーキテクチャを構築することができるものの、学習コスト自体ははやり存在するため、留意しておくといいでしょう。
利用制限がある
AWS Lambda、DynamodDBといったサービスは、何らかの機能制限がある場合があります。
たとえば、AWS Lambdaは、15分以上の時間がかかる処理は行えないことになっていますし、
DynamoDBは格納する1つのデータサイズが上限400 KBとなっています。
このように、サーバレスで使うサービスにおいては、制約がある場合があるので、処理時間や扱うデータのサイズについては事前に確認を行うといいでしょう。
まとめ
サーバレスは高速かつ低価格で、アプリケーションをリリースするためのQCDを大幅に改善することができます。
しかしながら、様々な制約があるため、最大限の効果を得るにはシステムにあったサービスを選定しなくてはなりません。
また、深くサーバレスのサービスを理解することで、サーバレスを採用した際の効果を最大限にすることができます。
サーバレスを導入する際には深い実績を持ったエンジニアやベンダーに相談してみるのもいいでしょう。