サーバーレスコンピューティングとは何ですか?
サーバーレスコンピューティングは、サードパーティが管理するサーバーインフラストラクチャ上でアプリケーションを構築してデプロイできるアプリケーション開発モデルです。すべてのアプリケーションを実行するにはサーバーが必要です。しかし、サーバーレスモデルでは、クラウドプロバイダーが日常業務を管理し、基盤となるインフラストラクチャのプロビジョニング、スケーリング、保守を行います。クラウドプロバイダーは、オペレーティングシステムマネージメント、セキュリティパッチ、ファイルシステムと容量の管理、負荷分散、監視、ロギングなど、いくつかのタスクを処理します。その結果、デベロッパーはアプリケーション設計に集中しながら、費用対効果が高く、効率的で、非常にスケーラブルなサーバーインフラストラクチャのメリットを享受できます。
サーバーレスコンピューティングが重要な理由とは?
インターネット初期の頃は、ウェブアプリケーションを実行したい人は誰でも物理サーバーを購入して維持する必要がありました。企業は通常、物理サーバーデバイスをオンプレミスデータセンターまたはコロケーション施設に保管します。ほとんどのアプリケーションはサーバーハードウェアリソースのごく一部しか使用していないため、コストが無駄にかかる可能性があります。
クラウドコンピューティングモデルは当初、顧客がクラウドプロバイダーのハードウェア上に仮想サーバーまたはインスタンスを作成できるようにすることでこの問題を解決しました。しかし、顧客は依然として仮想サーバーのプロビジョニング、構成、更新、およびスケールを行う必要がありました。
これらの問題に対応して、クラウドプロバイダーは、俊敏性を高め、コストをさらに最適化するためのサーバーレステクノロジーの提供を開始しました。サーバーレスコンピューティングにより、デベロッパーはインフラストラクチャ管理タスクを気にすることなく、コードの実行、データの管理、アプリケーションの統合を行うことができます。
サーバーレス導入にはいくつかの利点がありますが、その概要を次に説明します。
デベロッパーの生産性を向上
開発チームはアプリケーションの構成に煩わされることなく、アプリケーションの構築に集中できます。運用上のオーバーヘッドが少ないということは、アプリケーションをより早く市場に投入できるということです。デベロッパーは顧客からのフィードバックに対応し、アプリケーションコードの変更を頻繁にリリースできます。
効率的なスケーラビリティ
クラウドベンダーは、サーバーレス環境に自動スケーリング機能を提供しています。サーバーレスアプリケーションは、ゼロ需要からピーク需要まで自動的にスケールされます。デベロッパーはコードを書くときに使い方について考える必要はありません。
コストの削減
コードの実行時に必要な CPU、メモリ、およびその他のコンピューティングリソースに対してのみお支払いいただきます。アイドル状態のリソースには料金は一切かかりません。このペイ・フォー・バリューの請求モデルにより、リソースを最適に使用でき、過剰プロビジョニングによる無駄がなくなります。
サーバーレスコンピューティングのユースケースとは?
サーバーレスコンピューティングが役立つアプリケーションやシステムは数多くあります。
ステートレスアプリケーション開発
サーバーレスアーキテクチャは、セッション間でクライアントデータを保存しない非同期のステートレスアプリケーションに最適です。サーバーレスアプリケーションの例には、チャットボット、タスクスケジューラー、IoT アプリケーションなどがあります。たとえば、コカ・コーラは AWS を利用して、タッチレスドリンクディスペンサー用のモバイル注出アプリをわずか 100 日で開発しました。コカ・コーラは、AWS Lambda のようなサーバーレスのビルディングブロックを使用していました。
バッチ処理
バッチ処理アプリケーションは、バックアップ、フィルタリング、ソートなどの大量の反復的なデータジョブを定期的に実行します。バッチ処理は、必要に応じて大規模にスケールでき、使用しないときにはコストがかからないサーバーレス環境に適しています。
たとえば、Liberty Mutual は AWS を使用して、さまざまなグローバル事業部門を金融中央サービス (FCS) と呼ばれる一元化されたシステムに統合しました。AWS Step Functions を使用して、毎月末に 1 回の実行で 1 億件のトランザクションを処理できるサーバーレスアプリケーションを作成しました。
リアルタイムデータ分析
サーバーレスコンピューティングは、顧客の応答性を向上させるリアルタイムストリーミングエンジンに最適です。サーバーレスアプリは、低レイテンシーと高帯域幅を実現しながら、数十万のソースからの膨大な量のストリーミングデータを処理できます。その結果、数分ではなく数秒でインサイトを引き出すことができます。
たとえば、Genentech は臨床データ分析に AWS のサーバーレス機能を使用しています。研究者は、以前は数週間かかっていたタスクを数時間で完了できるようになりました。
ビジネスプロセスオートメーション
サーバーレスアプローチを使用して、面倒で時間のかかるビジネスプロセスを自動化できます。デベロッパーは、サーバーを管理することなく、ビジネスロジックをアプリケーションコードに変換することに集中できます。
たとえば、Taco Bell は AWS を使用して、ビジネスロジックとデータ変換を実行するサーバーレスアプリケーションを作成しました。これにより、タコベルの配達パートナーにリアルタイムのメニューとレストラン情報が配信されました。サーバーレスへの投資により、新型コロナウイルスが蔓延した時に消費者のデリバリー需要を満たすため、ブランドを迅速にシフトすることができました。
サーバーレスアーキテクチャはどのように機能しますか?
どのアプリケーションにも、フロントエンドとバックエンドという 2 つの広い機能領域があります。フロントエンドには、視覚的なレイアウト、ボタン、表示テキストなど、エンドユーザーが操作するすべてのものが含まれます。バックエンドには、データストレージや処理など、ユーザーがアクセスできない機能が含まれています。
たとえば、モバイルデバイスのフライト予約アプリを考えてみましょう。フロントエンドはアプリケーションの UI で、日付を選択したり、空いているフライトのリストをリクエストしたりできます。リクエストはバックエンドに送られ、バックエンドはデータベースを検索し、選択した時間枠で利用可能なすべてのフライトに関する情報を返します。次の図は、従来のアーキテクチャを示しています。
サーバーレスアーキテクチャでは、デベロッパーはクラウドプロバイダーが提供するクラウドインフラストラクチャにバックエンドコードをデプロイします。サーバーレスアプリケーションの鍵とは、イベント駆動型アーキテクチャであり、イベントを発行、消費、またはルーティングする小規模な分離されたサービスから構築された最新のアーキテクチャパターンです。 イベントはサービス間での送信メッセージ数です。
これにより、システムの個別コンポーネントのスケール、更新、および独立したデプロイがより容易になります。次の図は、イベント駆動型のサーバーレスマイクロサービスを示しています。
次に、サーバーレスアーキテクチャの仕組みの概要を説明します。
関数
関数は、シングルタスクを実行する小さな個別のコードユニットです。関数を実行するには、CPU やメモリなどのコンピューティングリソースが必要です。クラウドプロバイダーは、必要な場合にのみこれらのリソースを割り当てます。サーバーレス関数を実行するための一時的な環境を作成します。
特定のイベントは、コードユニットをトリガーしたり、実行させたりすることができます。たとえば、ユーザーがアプリケーション内のボタンを選択するとイベントが実行される可能性があります。このリクエストは、データベースを読み取り、関連情報をユーザーに返す関数をトリガーします。
スケーリングリクエスト
関数が受け取るリクエストが多いほど、実行に必要なリソースも多くなります。サーバーレスプラットフォームは負荷を監視し、ほぼ無限の規模でクラウドリソースを割り当て続けます。したがって、1 つのサーバーレス関数で、コードを変更することなく 1 つまたは 100 万のリクエストを処理できます。
関数がリクエストの受信を停止すると、クラウドプロバイダーはコストを節約するために関連するインフラストラクチャを停止します。リソースは必要な場合にのみ割り当てられます。使用量がなければ、環境はゼロまでスケールできます。
サーバーレスアーキテクチャにはどのような種類がありますか?
サーバーレスアーキテクチャでは、クラウドプロバイダーがアプリケーションの大小さまざまなバックエンドタスクを管理します。カスタムコードをデプロイできます。クラウドプロバイダーは、コードが実行されるたびにリソースを動的に割り当てます。クラウドプラットフォームには、コードを最初から記述せずに直接使用できるバックエンド機能が提供されている場合もあります。
次に、両方のタイプのサーバーレスアーキテクチャについて説明します。
Function as a Service
Function as a Service (FaaS) は、デベロッパーがカスタムのバックエンド関数を記述し、関数コードをクラウドインフラストラクチャに直接デプロイするために使用できるサーバーレスアーキテクチャです。関数が呼び出されると、クラウドプロバイダーは既存のアクティブなサーバー上で関数を実行するか、必要に応じて新しいサーバーを起動します。このような関数は、実行プロセスがデベロッパーから切り離されているため、サーバーレス関数と呼ばれます。デベロッパーは、コードの実行方法や実行場所を気にすることなく、コードを作成してデプロイできます。
Backend as a service
Backend as a service (BaaS) により、デベロッパーは API を使用してバックエンド機能にアクセスできます。API は、2 つのソフトウェアコンポーネントが一連の定義とプロトコルを使用して相互に通信できるようにするメカニズムです。
サーバーレス環境では、クラウドベンダーは追加の暗号化、認証、クラウドアクセス可能なデータベースへの API ベースのアクセスを提供しています。また、他のサードパーティのサービスやアプリケーションへのアクセスを提供することもできます。これらのサーバーレス関数は事前に記述されており、コード内で直接呼び出すことができます。
サーバーレスファースト戦略とは?
サーバーレスアーキテクチャは次の原則によって認識されています。
- サーバーの管理が不要
- ペイ・フォー・バリューサービス
- 継続的スケーリング
- 組み込みの耐障害性
サーバーレスファースト戦略では、組織のアプリケーション、運用、開発サイクル全体でこれらの原則に優先順位を付けます。サーバーレスデベロッパーまたはサーバーレスファーストの企業は、何よりもまずこれらの原則を使用して構築に取り組んでいます。
しかし、サーバーレスコンピューティングはすべてのワークロードに適しているわけではありません。必要に応じて、非サーバーレステクノロジをサポートアーキテクチャとして組み込むことができます。
サーバーレスアーキテクチャは安全ですか?
ほとんどのクラウドベンダーは、共有セキュリティモデルを採用しています。クラウドプロバイダーはクラウドのセキュリティに責任を負い、お客様はクラウドの中でのセキュリティに責任を負います。
サーバーレスでは、クラウドプロバイダーはオペレーティングシステムやネットワークなど、さらに多くのインフラストラクチャレイヤーを管理します。お客様は、サーバーレスアプリケーションを保護するための最小特権の原則とベストプラクティスに従う必要があります。
たとえば、AWS Lambda などの AWS FaaS ソリューションでは、AWS IAM アイデンティティセンターなどの使い慣れたツールを使用して、きめ細かなアクセス権限で各リソースを保護できます。これにより、サーバーレスアプリケーションの強固なセキュリティ体制を構築できます。
AWS はサーバーレスコンピューティングの要件をどのようにサポートできますか?
Amazon Web Services (AWS) には、サーバーレスコンピューティングでの作業をサポートするさまざまなサービスがあります。
AWS のサーバーレスでは、サーバーを管理することなくコードを実行し、データを管理し、アプリケーションを統合するために使用できる技術について詳しく説明しています。AWS サーバーレス技術には、自動スケーリング、ビルトインの高可用性、使用量に応じた課金モデルなどの特徴があり、俊敏性の向上とコストの最適化を実現します。また、これらの技術により、キャパシティプロビジョニングやパッチ適用などのインフラストラクチャ管理タスクが不要になるため、お客様に役立つコードの作成に集中することができます。
サーバーレスアプリケーションは、200 以上の AWS サービスとネイティブに統合されたイベント駆動型のコンピューティングサービスである AWS Lambda から始まります。また、次のような多数のサポートサービスも提供しています。
- Amazon Elastic Container Service (Amazon ECS) と Amazon Elastic Kubernetes Service (Amazon EKS) と互換性のあるサーバーレスアプリケーションを構築する AWS Fargate
- アプリケーションのニーズに応じて自動的に容量を拡張するサーバーレスデータベースを構築する Amazon Aurora Serverless
- スケーラブルな GraphQL API を使用してアプリケーション開発を加速する AWS AppSync
今すぐアカウントを作成して、AWS でサーバーレスの使用を開始しましょう。