デジタルソリューションの開発は困難ですが、公開するまでがまた手間です。サーバーの維持管理も容易な作業ではありません。サーバーレスは、必要な分だけサーバーを利用でき、設定や保守、トラブルシュートを心配せずに済むため、開発プロセスをスムーズにしました。
このクラウドコンピューティングを利用した IT オペレーション方式は、全組織の約40%に導入されています。
サーバーレスとは何か、なぜ注目されているのか?
本記事ですべてご紹介します。
さらに深く進む前に、このカテゴリに含まれないものをまず理解してください。物理サーバーなしでアプリを開発するという意味ではなく、物理サーバーは通常通り使用されるものの、設定や管理などの作業に関与する必要がないということです。開発者がこれらに頭を悩ませる必要はありません。
このモデルでは、開発者や組織が必要に応じたサーバーをサブスクリプション方式で提供する第三者のサービスを利用します。
この第三者はサーバーの設置、更新、ハード・ソフトウェアの保守などを担当します。一般的なサブスクリプションとの大きな違いは、サーバーレスでは定額料金が存在しないことです。
料金は自動でスケールし、利用量に応じて算出されます。
開発者や組織は、より高性能なアプリの開発に集中できるため、その際、以下の点を理解しておく必要があります:
これは、費用無料かつ Node.js ベースのウェブフレームワークを指し、アプリ開発に用いられます。AWS Lambda はこのカテゴリで初めて生まれたフレームワークです。
スタックとは、アプリ開発に必要なプログラミング言語などのソフトウェア要素を指します。SST のサーバーレス・スタックは、アプリ作成を容易にします。
データベースは、開発したコードがアクセス・利用する情報が保存される場所であり、スタックのトリガーも格納します。無制限なデータ保存を除けば、サーバーレス・データベースは従来のものとほぼ同様に動作します。DynamoDB、Cloud Firestore、Azure Cloud DB などが好例です。
サーバーレスコンピューティングは多くのメリットといくつかの課題を併せ持っています。両面を理解することで、この技術を最大限に活用できます。ここでは、このクラウドコンピューティングの特徴を簡潔にご紹介します。
<良い点>
サーバーレス導入以前は、組織や開発者が物理サーバーの設置に多大な投資をしていました。ハードウェアだけでなく、技術サポートも多く必要でした。
その投資は設置だけでなく、継続的な保守、ライセンス、依存関係、サポート、パッチ適用などにも及び、物理サーバーの運用は経済的な負担が大きかったのです。
サーバーレスでは、このような負担は発生しません。前述の通り、料金は自動スケールし、利用量に応じて請求されるため、使用した分だけ支払います。ライセンスや保守などの費用はサービス提供者が担います。
物理サーバーに投資しても、常にリソースを十分に活用できるとは限りません。多くの場合、アイドル状態のCPUや未使用リソースが発生し、無駄になってしまいます。
サーバーレスでは必要な分だけリソースを使用し、料金もそれに応じるため、この点が解消されます。
物理サーバーはコストがかかるだけでなく、開発者にとって多大な負担となり、最適化、バージョン更新、不具合の修正などに追われ、市場投入までの時間が長引く原因となります。
サーバーレスを利用すれば、開発者はコード作成に専念でき、バグチェックやセキュリティ向上に時間を割けるため、質の高いアプリが生まれやすくなります。
さらに、市場投入までの時間も短縮され、開発スピードが向上します。
サーバーレスでは、好みの言語や開発フレームワークを自由に利用できるため、開発者にとって大変快適です。Pythonが得意であればそのまま使え、Javaでもエンドツーエンドの開発が可能です。
また、使いやすいDevOpsサイクルにより、インフラ統合、テスト、コードのデプロイに煩わされることがありません。
サーバーレスでは、スケールが非常に容易で、コードがポリシーに準拠しているかどうかの懸念も不要です。これらはサービス提供者が対応します。
<欠点>
物理サーバーはサービス提供者の所有物であるため、利用されるリソースに対する権限が限られ、移行時に問題が生じる恐れがあります。
複数の利用ケースがあるものの、すべてのワークロードに適用できるわけではありません。高性能システムが必要な大規模なアプリ開発には向かない場合があります。
サーバーレスのコードは使用頻度が低いため、使われていないコードがサービス提供者により停止され、利用時にレイテンシーが発生しやすいです。
品質に関わらず、いくつかのパフォーマンス問題が発生する可能性があります。サーバーレスでは各関数の実行時間が制限され、APM やデバッガーなどのトラブルシューティングツールが使えないため、問題の特定や解決が難しく、API セキュリティにも影響を及ぼします。
サーバーレスでは、リソースが第三者所有の公共空間で提供されるため、共有環境ではプライバシーが損なわれる可能性があります。ただし、プライベートクラウドやオンサイトのリソースを利用する方法もあり、こちらは高額となります。
Functions As A Service(FaaS)とサーバーレスは、同意で使われることもありますが、厳密には異なる概念です。
すでにサーバーレスの内容について説明しました。次に FaaS ですが、これはクラウド環境を活用しながら関数をスムーズに開発できる新しいサービスモデルです。
サーバーレスを採用すれば、インフラのスケーラビリティを気にすることなく作業でき、API、データ処理、マイクロサービスなどに強みを発揮します。一方、FaaS は特にマイクロサービスに適しており、特定のフレームワークに依存せずに開発を進めることができます。
Kubernetes はアプリ展開に人気のプラットフォームで、サーバーレス体験をより快適にするために設計されています。世界的に知られるコンテナオーケストレーションプラットフォームであり、無料で利用でき、自動コンテナ管理、デプロイ、スケールが可能です。
サーバーレスコンピューティングでは、一部のアプリがコンテナベースで構築されるため、Kubernetes 単体での管理・実行は難しく、両者を連携させる専用ソフトが必要となります。
間接的には、コンテナはサーバーレスを支えますが、いくつかの複雑さも伴います。多くの事業者が、マイクロサービス向けにコンテナとサーバーレスを併用しています。
サーバーレスコンテナの概念は形になりつつあります。例えば、AWS Fargate はレジストリサポートや秒単位の課金モデルによるロードバランシングなどのサービスを提供し、VM のスケールやコンテナ設定に過剰に関与する必要がなくなりました。
どちらも自動スケールに対応し、同じ目的を目指しているため、どちらを選ぶかというよりも、共存の可能性を検討すべきです。
多くの利点により、このモデルはモバイルバックエンド、マイクロサービス型のソリューション、アプリ運用処理の基盤となっています。
従量課金モデルにより、サーバーレスは自動スケールと迅速な提供が可能で、マイクロサービス開発の第一選択肢となっています。
サーバーレス関数は、ウェブクライアント向けの使いやすい HTTP エンドポイントを持ち、後にレート制限、OAuth、高度な暗号化をサポートする本格的な API に発展することもできます。これは、強固なモバイルバックエンドに非常に有用です。
動画、テキスト、音声、画像など多様なデータ処理が必要な作業に従事する場合、従来より迅速なサーバーレスの利用を検討すべきです。AWS SAM を用いたサーバーレス・オフラインは、オフラインでコードを実行するための有力な選択肢となります。
また、サーバーレス・アプリ・フレームワークにも、シームレスな運用を実現するサーバーレス・オフライン・プラグインが用意されています。
最新の市場調査によれば、サーバーレスは2026年までに7712.7百万米ドル相当の技術となる見込みです。この数字は、今後の展望が明るいことを示しています。サービス提供者が課題の解消に取り組む中、この流れはさらに発展すると考えられます。
例えば、CloudFlare はコールドスタートやレイテンシーの低減に注力しており、TLSハンドシェイクの時間を活用して関数の起動を行っています。
クラウドコンピューティングを効率的に活用することでサービス提供力が向上し、通信やデジタルメディア分野での需要が増加することが期待されます。
Amazon が生み出した AWS Lambda は、世界中で利用できるサーバーレス・コンピューティングサービスです。正直なところ、初のサービスとして2014年に登場し、カスタムランタイム、低レイテンシー、永続性へのアクセスなど、優れた機能で市場を牽引しています。
2016年に登場した Azure Functions は、Microsoft が開発したサーバーレスサービスで、特に Azure 連携を強化するために設計されました。統合された HTTP エンドポイント、多様なデプロイオプション、拡張可能なバインディングなどが特徴で、Python、Java、TypeScript、F# など多数の言語に対応しています。
AWS Lambda は有用でしたが、Amazon ユーザー限定で複雑という課題がありました。Google はこのギャップを埋めるために Cloud Functions を提供し、Node.js、Java、Ruby、.Net Core などで開発されたソリューションと互換性のある、使いやすいサーバーレスサービスを実現しました。
膨大な時間や労力、コストを節約できる方法として、サーバーレスは開発者コミュニティで大きな注目を集めています。本記事がこのテーマの理解に役立てば幸いです。
最新情報を購読