サーバーレスコンピューティングとアプリケーション
サーバーにわずらわされることなく、アプリケーションを構築、実行
サーバーレスコンピューティングについて
サーバーレスコンピューティングのおかげで、アプリケーションとサービスを構築、実行する際に、サーバーに関して悩むことはなくなります。サーバーレスアプリケーションでは、サーバーのプロビジョニング、スケーリング、および管理が必要ありません。サーバーレスアプリケーションはほぼすべてのタイプのアプリケーション、あるいはバックエンドサービス用に構築でき、高可用性を実現しながら、アプリケーションの実行およびスケーリングに必要なことをすべて行います。
サーバーレスコンピューティングを使う理由
サーバーレスアプリケーションを構築することで、開発者は、クラウドでもオンプレミスでも、サーバーやランタイムの管理や操作に煩わされることなく、主力製品に集中することができます。このような経費の削減によって、開発者は、拡張性と信頼性の高い優れた製品の開発に費やす時間とエネルギーを取り戻すことができます。
サーバーレスコンピューティングの利点
サーバーレスアプリケーションには主に 3 つの利点があります。
サーバーの管理が不要
サーバーのプロビジョニングやメンテナンスは、必要ありません。インストール、メンテナンス、または管理が必要なソフトウェアあるいはランタイムがありません。
柔軟性のあるスケーリング
アプリケーションは、自動的にスケーリングすることも、個々のサーバー単位ではなく消費単位 (スループットやメモリなど) で切り替えて容量を調整し、スケーリングすることもできます。
高可用性の自動化
サーバーレスアプリケーションには、可用性と耐障害性機能が組み込まれています。これらの機能は、アプリケーションを実行しているサービスがデフォルトで提供するため、設計する必要はありません。
導入事例
アメリカの清涼飲料水分野の多国籍企業である Coca-Cola Company は、AWS Lambda と AWS Step Functions を使用して、コスト効果の高いサーバーレスソリューションを構築しました。
FINRA は米国の証券ブローカーディーラーを監視し、詐欺やインサイダー取引を特定するなど、毎日 750 億もの市場イベントを分析しています。
世界をリードする消費者用ロボット企業の iRobot は、AWS Lambda および AWS IoT を用いて、WiFi に接続された新しい Roomba 電気掃除機に接続するウェブアプリケーションを実行しています。
ウェブとモバイル用アプリの分析とエンゲージメントを行う Localytics は、AWS Lambda を使用して、並列データストリームとマイクロサービスを構築しています。
AWS サーバーレスプラットフォームの機能
規模に応じて実行できる実稼働のサーバーレスアプリケーションを提供するには、幅広い機能を備えたプラットフォームが必要です。AWS がどのようにエンタープライズグレードのサーバーレスアプリケーションをサポートするかを見ていきましょう。
クラウドロジックレイヤー
AWS Lambda でビジネスロジックを稼働します。AWS Lambda は、相互に関連するインフラストラクチャリソースとウェブ API すべてのコントロールプレーンおよびロジックレイヤーとして動作します。
オーケストレーションとステート管理
AWS Step Functions を使用して、サーバーレスアプリケーションを構成するそれぞれの分散コンポーネントやマイクロサービスの状態を調整、管理します。
応答性のあるデータソース
さまざまなデータソースとプロバイダから、リアルタイムでデータを処理しイベントをトリガーする組み合わせを選びます。応答性のあるデータソースの一覧はドキュメントを参照してください。
アプリケーションのモデリングフレームワーク
オープンソースの AWS サーバーレスアプリケーションモデルを使用して、サーバーレスアプリケーションおよびサービスをモデル化し、デプロイします。AWS CodePipeline や AWS CodeBuild のようなアプリケーションライフサイクル管理ツールを使用して、サーバーレスアプリケーションを継続的に供給します。
開発者エコシステム
サードパーティーツールとオープンソースプロジェクトのエコシステムを活用して、開発から本運用までのコードの構築、テスト、デプロイを合理化します。サードパーティーツールの詳細については、開発者向けツールページまたはエコシステムページをご覧ください。
アプリケーションとインテグレーションライブラリ
AWS Serverless Application Repository を使用して、サーバーレスアプリケーションとアプリケーションコンポーネントをすばやく見つけ出し、デプロイし、ウェブやモバイルのバックエンド、チャットボット、IoT、Alexa Skills、データ処理、ストリーム処理などの幅広いユースケースを実現します。さらに、一般的なサードパーティーサービス (Slack、Algorithmia、Twilio、Loggly、Splunk、Sumo Logic、Box など) との統合も見つけ出します。
セキュリティとアクセスコントロール
コンプライアンスを遵守し、ロギング、変更の追跡、アクセスコントロール、暗号化によって、お客様の IT 環境全体を保護します。AWS Identity and Access Management (IAM) によって、AWS リソースへのアクセスを安全に制御します。Amazon Cognito で、サーバーレスアプリケーションのエンドユーザーを管理および認証します。Amazon Virtual Private Cloud (VPC) を使用して、お客様だけがアクセスできる仮想プライベートクラウドを構築します。
信頼性とパフォーマンス
グローバルスケールとグローバルリーチ
AWS のグローバルリーチを活用すれば、お客様のアプリケーションとサービスを短時間でグローバルに展開することも可能です。AWS Lambda は、複数の AWS リージョン および Lambda@Edge 経由のすべての AWS エッジロケーションで使用できます。また、AWS Greengrass にローカルで接続したデバイスで Lambda 関数を実行できます。
AWS サーバーレスプラットフォーム
AWS には、サーバーレスアプリケーションの構築と実行に使用可能な、一連の完全マネージド型サービスが用意されています。サーバーレスアプリケーションでは、コンピューティング、データベース、ストレージ、ストリーム処理、メッセージキューイングなどのバックエンドコンポーネントのために、サーバーのプロビジョニングやメンテナンス、管理を行う必要がありません。また、アプリケーションの耐障害性や可用性を心配する必要もなくなりました。代わりに、これらの機能はすべて AWS が自動的に処理します。これにより、市場投入までの時間を短縮するのと同時に、製品のイノベーションに注力できます。
コンピューティング
AWS Lambda を使用することで、サーバーのプロビジョニングや管理をすることなく、コードを実行できます。課金は実際に使用したコンピューティング時間に対してのみ発生し、コードが実行されていないときには料金も発生しません。コードさえアップロードすれば、高可用性を実現しながらコードを実行およびスケーリングするために必要なことは、すべて Lambda により行われます。
Lambda@Edge では、Amazon CloudFront イベントに対応して AWS Edge ロケーションで Lambda 関数を実行できます。
API プロキシ
Amazon API Gateway は全面的に管理されたサービスで、開発者はこれを利用することにより、どのようなスケールであっても、簡単に API の作成、配布、保守、監視、保護が行えます。Amazon API Gateway を使用すれば、数十万という一斉に起こる API コールを処理し、トラフィック管理、認証とアクセス制御、監視、および API バージョン管理を実行できます。
ストレージ
Amazon Simple Storage Service (Amazon S3) では、安全で耐久性があり拡張性の高いオブジェクトストレージを、開発者や IT チームに提供しています。Amazon S3 は簡単に利用でき、シンプルなウェブサービスインターフェイスにより、ウェブ上のどこからでもお好みの量のデータを簡単に保存および取得できます。
データストア
Amazon DynamoDB は、規模を問わずわずか数ミリ秒単位の安定したレイテンシーを必要とするすべてのアプリケーションに対応した、高速かつ柔軟性のある NoSQL データベースサービスです。完全マネージド型のクラウドデータベースで、ドキュメントとキー値のストアモデルの両方をサポートしています。
AWS AppSync では、ウェブアプリケーションやモバイルアプリケーション内のデータがリアルタイムで自動的に更新されます。また、オフラインユーザーが再接続するとすぐにデータが更新されます。AppSync では、サーバーにあるデータのフェッチ、変更、サブスクライブをクライアントアプリケーションから実行可能なデータ言語である GraphQL を使用しています。
プロセス間メッセージング
Amazon SNS は、完全マネージド型の pub/sub メッセージングサービスであり、マイクロサービス、分散システム、およびサーバーレスアプリケーションの分離やスケーリングを容易にします。
Amazon SQS は、完全マネージド型のメッセージキューイングサービスであり、マイクロサービス、分散システム、およびサーバーレスアプリケーションの分離とスケーリングを容易にします。
オーケストレーション
AWS Step Functions により、視覚的なワークフローを使用して、分散アプリケーションとマイクロサービスのコンポーネントを簡単に調整できます。それぞれ別個の機能を実行する個々のコンポーネントからアプリケーションを構築することで、迅速にアプリケーションをスケーリングおよび変更できるようになります。Step Functions を使えば、安心してアプリケーションのコンポーネントを調整し、機能を配置できます。
分析
Amazon Kinesis は、AWS のデータをストリーミングするプラットフォームで、ストリーミングデータのロードと分析を簡易化する強力なサービスや、特定ニーズ用のカスタムストリーミングデータアプリケーションを構築する機能を提供します。
Amazon Athena はインタラクティブなクエリサービスで、標準 SQL を使用して、Amazon S3 内のデータを簡単に分析できます。Athena はサーバーレスなので、インフラストラクチャの管理は不要です。実行したクエリに対してのみ料金が発生します。
サーバーレスアプリケーションのユースケース
サーバーレスアーキテクチャを使用すると、事実上あらゆるタイプのアプリケーションやバックエンドサービスを構築できます。以下にいくつかのユースケースを示します。
ウェブアプリケーションとバックエンド
AWS Lambda、Amazon API Gateway、Amazon S3、Amazon DynamoDB を使用して、サーバーレスのウェブアプリケーションやバックエンドを構築すれば、ウェブ、モバイル、IoT、チャットボットリクエストを処理することが可能です。
Bustle では、AWS Lambda と Amazon API Gateway を使用して、Bustle iOS アプリケーションとウェブサイトのサーバーレスバックエンドを実行します。サーバーレスアーキテクチャでは、Bustle でインフラストラクチャを管理する必要はまったくないため、エンジニアは皆、新しい機能の構築や新規開発に集中できます。導入事例を読む »
データ処理
AWS Lambda、Amazon Kinesis、Amazon S3、Amazon DynamoDB を使用して、さまざまなリアルタイムデータ処理システムを構築できます。
Square Enix は、AWS Lambda を使用して、大規模なマルチプレイヤーオンラインゲームの画像処理を実行します。Lambda を使用することで、通常のトラフィックの最大 30 倍のスパイクを確実に処理できるようになりました。さらに、画像処理に要する時間が数時間からわずか 10 秒あまりに短縮され、インフラストラクチャと運用のコストが削減されました。導入事例を読む »
Thomson Reuters では、サーバーレスアーキテクチャを使って、使用状況分析サービスで 1 秒あたり最大 4,000 イベントを処理します。このサービスは、通常のトラフィックの 2 倍のスパイクを確実に処理し、高い耐久性を備えています。同社では AWS を使用してわずか 5 か月で、このサービスを本番環境にデプロイしました。導入事例を読む »
サーバーレスコンピューティングの使用開始
サーバーレスアプリケーションの構築の詳細