[システム開発] サーバーレスアーキテクチャ
Cloud システム開発
Published : 2020-11-24   Lastmod : 2020-11-24

サーバレスアーキテクチャの特徴とデメリット・メリット

サーバレスアーキテクチャの特徴

サーバレスアーキテクチャは、サーバー管理が不要であり、プログラム実行の際に運用、管理が不要なのが特徴です。サーバレスアーキテクチャは、サーバレスと呼ばれることも多くあります。通常であれば、プログラムを運用、管理していく際には、サーバ構築が必要なため、サーバを使いプログラムを運用していくことになります。しかし、サーバレスアーキテクチャは、その必要がないのです。サーバレスアーキテクチャは、クラウド側でインフラ環境が用意されており、サーバ、DB、APIといったものを1つにまとめたサービスのことを言います。開発者は、サーバの運用管理が不要となることから、プログラムのことだけに集中することができるため、かなりの利便性を感じることができます。

関数をクラウド上にて実行するために、サーバのことを考えずにプログラムを進めたいという場合、とてもマッチしているでしょう。さらに、サーバレスアーキテクチャを利用することで、必要なときに必要な分だけコストを支払えば良く、システム稼働中だけしかコストがかからないのです。これにより、かなり費用対効果が高いと言えます。定額だと1回使っても1000回使っても料金が一定ですが、サーバレスアーキテクチャは、使った分だけコストを支払えば良いのです。

そんなサーバレスアーキテクチャを話す上で忘れてはならないのが、Cloud functionsとAWS Alambdaです。

Cloud functions

Cloud functionsはGoogle Cloud Platfromに新たな機能として追加され、Google Cloud StorageまたはGoogle Cloud Pub・Subからのイベント、HTTPからの呼び出しにより、軽量な関数をフルマネージド環境で実行させられるため、インフラの管理が不要なのが特徴です。さらに、AWS Lambdaに対応可能なものの多くは、Cloud Functionsでも対応できるようにされているなど、機能性に優れているのが魅力です。支払うのはコードを実行した時間分のみなので、コストの節約にも最適なのがCloud functionsになります。ラウド サービスの連携と拡張をスムーズにしてくれるため、何かと心強いと言えます。

AWS Lambda

AWS Lambdaの特徴として、インフラ環境の整備を必要としません。その理由は、AWSが環境を提供してくれるためです。そのこともあり、開発者はインフラ環境を自ら用意しなくても良いため、プログラムを書くことで、すぐに実行することができるのです。Lambdaはストレージやデータベース、メッセージ、電子メール、ログといったサービスが用意されているために、難なくシステムを運用することが可能となります。

サーバレスアーキテクチャのメリット

サーバレスアーキテクチャを利用するメリットとして、主に以下のようなものがあります。

  • 運用コストが安い
  • 運用管理が不要
  • 生産性の向上が上がる

これらが、サーバレスアーキテクチャを利用するメリットです。

1つ目のメリット

まず1つ目のメリットは、運用コストが安いという点になります。サーバレスアーキテクチャであれば、利用した分のみの課金で済むために、コストの削減が期待できるのがメリットです。月額課金の場合だと、ほとんど使用していないにもかかわらず、毎月定額を支払う必要があります。しかし、サーバレスアーキテクチャの場合、プログラム実行中のみの課金なため、使った時間、使った分だけを単純に支払えば良いのです。必要になったときに必要な分のリソースを確保することが可能なため、サーバレスアーキテクチャはコストパフォーマンスに優れていると言えます。

2つ目のメリット

2つ目のメリットですが、それは運用管理が不要で非常に楽だという点になります。 通常、サーバを構築して開発を進めていくことになるのですが、サーバレスアーキテクチャを利用すれば、サーバ運用管理が不要となり、プログラムを書くことにだけ集中できるのがメリットになります。サーバー構築、パッチ適用、運用にかかる手間が省けます。さらには、サーバがダウンして障害に対応しなければならないという手間がないので、サーバダウンによる煩わしさを感じることもありません。

3つ目のメリット

3つ目のメリットは、生産性の向上が上がるという点です。サーバレスアーキテクチャの活用により、スムーズに開発を進めていけることから、非常に生産性が上がります。インフラ環境を開発者は用意しなくても良いため、プログラムを書くことだけに集中できるのです。そのために、効率性が上がって余計なことを考えずに済むのが大きなメリットと言えるでしょう。

サーバレスアーキテクチャのデメリット

サーバレスアーキテクチャにはメリットだけではなく、デメリットもいくつか存在します。主なデメリットは以下になります。

  • 処理するためにサーバが必要なシステムには不向き
  • ベンダーロックイン
  • 長時間のバッチ処理には合わない

これらが、サーバレスアーキテクチャのデメリットになります。

1つ目のデメリット

1つ目のデメリットは、サーバレスアーキテクチャは処理するためにサーバが必要なシステムには不向きだという点です。サーバ構築が不要なのが特徴のサーバレスアーキテクチャなため、サーバで処理が実行されるシステムの運用には不向きです。そして、サーバを構築してシステムを運用したいという方にも、不向きと言えます。

2つ目のデメリット

2つ目のデメリットは、ベンダーロックインです。ベンダーロックインの意味は、ベンダーの独自技術に依存しているために、他ベンダーが提供している同種の製品やサービス、システム等に乗り換えるのがとても困難になることを言います。クラウドベンダーが違えば、機能性はもちろん、実装方法もかなり違うため、不便を感じてしまう可能性があります。

3つ目のデメリット

3つ目のデメリットは、サーバレスアーキテクチャは長時間のバッチ処理には合わないことです。その理由は、実行時間、消費可能リソースに制約があり、長時間のバッチ処理などには不向きとなります。AWS Lambdaは1リクエストあたりの最大実行時間が5分なため、そこはデメリットとなるでしょう。クラウド事業者が設定している上限を超えての使用が不可能です。AWS Lambdaを例に出すと、同時実行数に制約があるため、そこがネックになります。

対策としては、あまりクラウド依存になりすぎないことです。初めから特定のサーバレスアーキテクチャ環境に依存しすぎないように作っておくことで、デメリットを減らすことができるでしょう。また、サーバレスアーキテクチャはオンラインゲームの開発には向いていません。なぜなら、オンラインゲームはたくさんの人が利用し、24時間どの時間帯にもアクセスが集中してしまうためです。1日のリクエスト数や集中する時間帯が限られている場合にはサーバレスアーキテクチャは非常に有効で力を発揮しますが、オンラインゲームのように、常に不特定多数の方が24時間利用する場合には、力を発揮できないのです。

サーバレスアーキテクチャは、必要なときに必要な分だけ使いたいという場合に最適です。コスト削減をサポートしてくれますし、開発だけにしっかりと集中できる環境を整えてくれるために、何かと便利なのがサーバレスアーキテクチャと言えます。メリットだけでなく、デメリットもありますが、それぞれの点を理解することで、ニーズに合わせた利用ができます。サーバを構築する必要がなく、インフラ環境が揃っているサーバレスアーキテクチャは、多くの開発者が利便性を感じられるのではないでしょうか。さらに、これからより機能性がアップしていくことも期待できるのが、サーバレスアーキテクチャとなります。

関連する記事