サーバーレスは。近年注目を集めているサービスです。サーバーレスの導入により、アプリやサービスの開発者はサーバーを管理することなく、プログラムを実行できるようになりました。サーバーレスを上手く使うことで、開発者はプログラムの作成だけに集中できるだけでなく、運用にかかる手間と費用を大幅に削減できる可能性もあります。今回は。サーバーレスをメリット&デメリットを含めて詳しく解説します。
サーバーレスとは
システムを動かすには、プログラムを書いて実行することが必要です。そしてプログラムを実行するためには、運用環境となるサーバーの構築や、メンテナンスをする必要があります。
一方、サーバーレスの場合、プログラムを動かす時にサーバーが自動で立ち上がるようになっています。
つまりサーバーレスは、「サーバーを使わない」サービスではなく、「サーバーを管理しなくていい」サービスだということになります。
サーバーレスのメリット
ここから、サーバレスのメリットとデメリットをいくつか詳しく解説します。
サーバーレスには当然メリットとデメリットがあり、向いているサービスとそうでないものがあります。
たとえば特定のイベントが発生したときや特定の時間になったときに単発で動くプログラムを動かすことには向いています。
一方で、サーバーレスにすることでシステム開発に制限をかけてしまうこともあります。
サーバーレスを上手く使うには、正しい知識を身につけてサービスがサーバーレスに向いているかどうかを判断する必要があります。
サーバーの管理や運用が不要
サーバーレスでは、サーバーの管理や運用をシステムの提供会社が行ってくれるうえに、負荷対策まで行ってくれます。
そのため、ソフトウェアをインストールしたり、セキュリティを設定したり、ハードウェアをメンテナンスしたりする必要がなくなります。
初期費用と手順の簡略化
従来の開発では、たとえばWebサービスを提供するまでには、大きく分けて以下の作業が必要でした。
1.サーバーを準備する
2.サーバーに必要なソフトウェアをインストールする
3.サーバーに実装したアプリケーションをデプロイする
しかしサーバーレスを導入すれば、1と2の作業は不要で、3.アプリケーションのデプロイにだけ集中することができます。
もちろん最初にサーバレスの設定等は必要ですが、一度完了してしまえば基本的にサーバーのことは気にしなくて大丈夫です。
リソースの最適化ができる
クラウド環境では、オートスケーリングという負荷に応じて自動的に仮想サーバを増減させる仕組みが使えます。
サーバーレスでも、処理量の増加に応じてオートスケーリングしてくれるので、サーバーのスペック自体の補強や十分なリソースの用意にかかる手間と費用が省けます。
サーバーレスであれば、スケールアップ&ダウンを気にせず処理を続けることができます。
ただし、スケールアップした後のスケールダウンを手動で行う必要があったり、スケールアップしたスペックに基づいて課金されたりと、留意しておくべき点もあります。
運用コスト低減
サーバーレスに切り替えることで、コストパフォーマンスの向上が期待できます。
物理サーバーの場合、場所代や電気代も発生する上、クラウド上のサーバーであれば基本的に24時間分の利用料が課金されます。
従来のサーバーはメンンテナンスやバックアップの時間を除き、24時間稼働する前提で作られているからです。
しかしサーバーレスでは、使うサービスにもよりますが、サーバーを使った分だけの費用が発生します。
たとえばAWS. Lambdaでは、プログラム処理の実行時間と回数に応じた課金となる上、100ミリ秒単位で計算されるので無駄な費用がほとんど課金されません。
サーバーレスのデメリット
ここから、サーバーレスのデメリットについてもみていきましょう。
障害が起きた時の対応が大変
サーバーレスでは、いくつものサービスが連動するので、一般的なアプリケーションに比べてモニタリングなどが複雑になります。
そのため、障害の原因がクラウド内部の隠されている部分にあるのか、構築したサービス側にあるのか見分けるのが難しくなります。
処理内容に制約がある
サーバーレスのサービスによっては、処理内容に何らかの機能制限があることもあります。
たとえばAWS Lambdaでは、処理時間は最大15分、リクエストやレスポンスのデータは6MBまでなどの機能制限があります。
そのため動画のような重いデータを処理する場合は、他のサービスと連携させる必要があります。
既存のコードが使えない場合がある
従来のサーバー上で動かしていたコードは、そのままではサーバーレス環境で使えない場合があります。
AWS Lambdaでは、主要な開発言語はサポートしていますが、Lambda上でプログラムを動かすための規則に合わせたコードに修正しないといけない場合もあります。
技術者の教育や確保が問題となることもある
サーバーレスによる運用は、今後はより標準的になっていくと思われる一方、今のところそれほど普及はしていません。そのため、サーバーレスによる運用ができるエンジニアの数も多くはないのが現状です。
また、エンジニアの教育にもサーバーレスで使うサービスの特性や制限、使い方などの学習が必要となります。
そのため、場合によっては技術者の確保や教育が問題となることもあります。
まとめ
今回はサーバーレスについて解説しました。サーバーレスを導入すれば、アプリやサービスの開発と運用にかかる手間、そして費用を大きくカットできる可能性があります。
一方で、開発段階でコードが使えない場合や機能制限がある場合などもあり、必ずしも導入すればいいというわけではありません。
メリットとデメリットを十分考慮して、サーバーレスを十分に活用できるようにしましょう。