サーバーレス
サーバーに煩わされることなく、アプリケーションを構築、実行
サーバーレスについて
サーバーレスはクラウドのネイティブアーキテクチャで、運用上の多くの責任を AWS にシフトさせることができるため、俊敏性とイノベーションを強化できます。サーバーレスのおかげで、アプリケーションとサービスを構築、実行する際に、サーバーに関して悩むことはなくなります。サーバーまたはクラスターのプロビジョニング、パッチ適用、オペレーティングシステムのメンテナンス、キャパシティーのプロビジョニングといったインフラストラクチャ管理のタスクが不要になります。サーバーレスアプリケーションはほぼすべてのタイプのアプリケーション、あるいはバックエンドサービス用に構築できます。また、高可用性を実現しながら、アプリケーションの実行およびスケーリングに必要なことすべてがユーザーに代わって実行されます。
サーバーレスを使う理由
サーバーレスにより、俊敏性が強化され、総所有コストを抑えたモダンアプリケーションを構築できます。サーバーレスアプリケーションを構築することで、開発者は、クラウドでもオンプレミスでも、サーバーやランタイムの管理や操作に煩わされることなく、主力製品に集中できます。このような経費の削減によって、開発者は、拡張性と信頼性の高い優れた製品の開発に費やす時間とエネルギーを取り戻すことができます。
サーバーレスの利点
サーバーレスには主に 4 つの利点があります。
サーバーの管理が不要
柔軟性のあるスケーリング
価値に対する支払い
高可用性の自動化
サーバーのプロビジョニングやメンテナンスは、必要ありません。インストール、メンテナンス、または管理が必要なソフトウェアあるいはランタイムがありません。
アプリケーションは、自動的にスケーリングすることも、個々のサーバー単位ではなく消費単位 (スループットやメモリなど) で切り替えて容量を調整し、スケーリングすることもできます。
サーバー単位ではなく、安定したスループットや実行時間に対して支払います。
サーバーレスには、可用性と耐障害性機能が組み込まれています。これらの機能は、アプリケーションを実行しているサービスがデフォルトで提供するため、設計する必要はありません。
導入事例
アメリカの清涼飲料水分野の多国籍企業である Coca-Cola Company は、AWS Lambda と AWS Step Functions を使用してコスト効果の高いサーバーレスソリューションを構築しました。
FINRA は米国の証券ブローカーディーラーを監視し、詐欺やインサイダー取引を特定するなど、毎日 750 億もの市場イベントを分析しています。
世界をリードする消費者用ロボット企業の iRobot は、AWS Lambda および AWS IoT を用いて、WiFi に接続された新しい Roomba 電気掃除機に接続するウェブアプリケーションを実行しています。
Autodesk は AWS Lambda を使用して IT の運用を自動化し、インフラストラクチャ管理に必要な時間とコストを最小化しました。
AWS サーバーレスプラットフォームの機能
規模に応じて実行できる実稼働のサーバーレスアプリケーションを提供するには、幅広い機能を備えたプラットフォームが必要です。AWS がどのようにエンタープライズグレードのサーバーレスアプリケーションをサポートするかを見ていきましょう。
クラウドロジックレイヤー
AWS Lambda でビジネスロジックを稼働します。AWS Lambda は、相互に関連するインフラストラクチャリソースとウェブ API すべてのコントロールプレーンおよびロジックレイヤーとして動作します。AWS Fargate を使用すると、インフラストラクチャの管理を行うことなく、本番稼働レベルのコンテナ化されたアプリケーションやマイクロサービスを定義、編成、実行できます。
オーケストレーションとステート管理
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@Edge では、Amazon CloudFront イベントに対応して AWS Edge ロケーションで Lambda 関数を実行できます。
AWS Fargate は、コンテナ向けの専用サーバーレスコンピューティングエンジンです。Fargate ではコンテナの実行に必要なインフラストラクチャのスケーリングおよび管理を行えます。
ストレージ
Amazon Simple Storage Service (Amazon S3) では、安全で耐久性があり拡張性の高いオブジェクトストレージを、開発者や IT チームに提供しています。Amazon S3 は簡単に利用でき、シンプルなウェブサービスインターフェイスにより、ウェブ上のどこからでもお好みの量のデータを簡単に保存および取得できます。
Amazon Elastic File System (Amazon EFS) は、シンプルかつスケーラブルで伸縮自在なファイルストレージを提供します。オンデマンドで伸縮自在にスケールできるように構築されているため、ファイルの追加や削除に合わせて自動的に拡大、縮小されます。
データストア
Amazon DynamoDB は、規模を問わずわずか数ミリ秒単位の安定したレイテンシーを必要とするすべてのアプリケーションに対応した、高速かつ柔軟性のある NoSQL データベースサービスです。
Amazon Aurora Serverless は、Amazon Aurora (MySQL 互換版) のオンデマンド自動スケーリング設定です。データベースではアプリケーションのニーズに基づいて自動的に起動、シャットダウン、容量のスケールアップまたはスケールダウンが行われます。
API プロキシ
Amazon API Gateway は全面的に管理されたサービスで、開発者はこれを利用することにより、どのようなスケールであっても、簡単に API の作成、配布、保守、監視、保護が行えます。API 管理のための包括的プラットフォームが実現可能です。API Gateway を使用すれば、数十万規模の API コールを同時処理し、トラフィック管理、認証とアクセスコントロール、モニタリング、API バージョン管理を実行できます。
アプリケーション統合
Amazon SNS は、完全マネージド型の pub/sub メッセージングサービスであり、マイクロサービス、分散システム、サーバーレスアプリケーションの分離とスケーリングを容易にします。
Amazon SQS は、完全マネージド型のメッセージキューイングサービスであり、マイクロサービス、分散システム、サーバーレスアプリケーションの分離とスケーリングを容易にします。
AWS AppSync を使用すると、1 つ以上のデータソースからのデータに安全にアクセスして、操作、結合するための柔軟な GraphQL API を作成できるため、アプリケーション開発がシンプル化します。
オーケストレーション
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 か月で、このサービスを本番環境にデプロイしました。導入事例を読む »
サーバーレスの使用開始
サーバーレスアプリケーションの構築の詳細