概要
- サーバーレスとは何かの定義と特徴をまとめ、AWSの主なサービスおよびユースケースをまとめました
- 対象読者はサーバーレスの入門者およびサーバーレスで実装してみたいユースケースのある方です
定義
利用者によるサーバーのプロビジョニングやメンテナンス、耐障害性の確保が不要なサービス
プロビジョニングとは、必要に応じてネットワークやコンピューターの設備などのリソースを提供できるよう予測し、準備しておくこと
耐障害性は、何か障害が起きたときでもシステムのパフォーマンスを落とすことなくシステムを稼働し続けられる冗長構成のこと
代表的なサーバーレスAWSサービス
Amazon QuickSight
クラウド駆動の高速なBI(ビジネスインテリジェンス)サービス
Amazon Kinesis
動画とデータストリームをリアルタイムで収集、処理、分析するためのサービス
Amazon Simple Queue Service
完全マネージド型のメッセージキューイングサービス
AWS AppSync
GraphQLを使用してアプリケーションが必要なデータを正確に取得できるようにするマネージド型サービス
AWS Lambda
サーバーのプロビジョニングや管理をすることなくコードを実行できるコンピューティングサービス
Amazon DynamoDB
規模に関係なく高速で柔軟なパフォーマンスを実現するNoSQLデータベースサービス
Amazon Personalize
アプリケーションを使用している顧客に対して開発者が個別のレコメンデーションを簡単に作成できるようにする機械学習サービス
Amazon CloudWatch
AWSのリソースとアプリケーションのモニタリング/おブザーbアビリティサービス
AWS Systems Manager
AWSで利用中のインフラストラクチャを可視化し、制御するためのサービス
Amazon API Gateway
規模に応じたAPIの作成、公開、保守、モニタリング、保護を行えるサービス
Elastic Load Balancing
アプリケーションへのトラフィックを複数のターゲットに自動的に分散するサービス
Amazon Cognito
シンプルでセキュアなユーザーのサインアップ、サインイン、アクセスコントロールの機能を実現するサービス
主な特徴
- サーバーの管理が不要
- 事前に調達が不要
- 必要なときにプロビジョニング可能
- インフラの保守・運用をクラウドサービス事業者(AWSなど)が実施
- 価値に対する支払い
- 利用したリソースや処理時間等を元にした従量課金性
- 初期投資不要
- 柔軟なスケーリング
- 利用状況に応じてスケールアウト・スケールインを自動的に実施
- 自動化された高可用性
- 冗長化構成等の可用性、耐障害性を高める仕組みが組み込み済み
AWSにおけるユースケース
動的Web/モバイルバックエンド
[関連資料](https://d1.awsstatic.com/International/ja_JP/Whitepapers/AWS-Serverless-Multi-Tier-Architectures_JA.pdf)
[チュートリアル](https://aws.amazon.com/jp/serverless/build-a-web-app/)
[チュートリアル -中級編-](https://aws.amazon.com/jp/getting-started/projects/build-modern-app-fargate-lambda-dynamodb-python/)
リアルタイムモバイル/オフライン対応
[関連資料](https://d1.awsstatic.com/webinars/jp/pdf/services/20180523_AWS-BlackBelt_AppSync.pdf)
[AWSマンガ](https://aws.amazon.com/jp/campaigns/manga/vol4-1/)
業務系API/グループ企業間API
[Private API記事(英語)](https://aws.amazon.com/jp/blogs/compute/introducing-amazon-api-gateway-private-endpoints/)
[VPC Lambda記事](https://aws.amazon.com/jp/blogs/news/announcing-improved-vpc-networking-for-aws-lambda-functions/)
[関連事例](https://kabu.com/company/pressrelease/20180807_1.html)
Push配信系・インタラクティブAPI
[関連サイト](https://aws.amazon.com/jp/blogs/news/announcing-websocket-apis-in-amazon-api-gateway/)
[AppRepositoryサンプル(英語)](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:729047367331:applications~simple-websockets-chat-app)
画像処理/シンプルなデータ加工
[チュートリアル](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-s3-example.html)
[関連事例](https://speakerdeck.com/sho3334/images-object-zozo)
[ソリューション(英語)](https://aws.amazon.com/jp/solutions/serverless-image-handler/)
分散並列処理
[関連事例1](https://d1.awsstatic.com/events/jp/2017/summit/devday/D4T8-4.pdf)
[関連事例2(英語)](https://www.slideshare.net/AmazonWebServices/serverless-design-patterns-for-rethinking-traditional-enterprise-application-approaches-aws-public-sector-summit-2017/18)
[参考アーキテクチャ(英語)](https://github.com/awslabs/lambda-refarch-mapreduce)
イベント駆動の業務分散処理連携
[SQS連携機能](https://aws.amazon.com/jp/serverless/patterns/sqs-lambda/)
[設定ガイド/チュートリアル](https://d1.awsstatic.com/serverless-jp/20181022-LambdaxSQS.pdf)
[サンプルコード](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-sqs-create-package.html)
アプリケーションフロー処理
[ワークフローチュートリアル](https://aws.amazon.com/jp/getting-started/tutorials/create-a-serverless-workflow-step-functions-lambda/)
[エラー処理チュートリアル](https://aws.amazon.com/jp/getting-started/tutorials/handle-serverless-application-errors-step-functions-lambda/)
流入データの連続処理
[関連資料](https://d1.awsstatic.com/International/ja_JP/Whitepapers/Serverless_Streaming_Architecture_Best_Practices_JA.pdf)
[参考アーキテクチャ](https://github.com/aws-samples/lambda-refarch-streamprocessing)
[チュートリアル1](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-kinesis-example.html)
[チュートリアル2](https://aws.amazon.com/jp/getting-started/projects/build-serverless-real-time-data-processing-app-lambda-kinesis-s3-dynamodb-cognito-athena/)
IoTバックエンド
[関連資料](https://d1.awsstatic.com/International/ja_JP/Whitepapers/Serverless_Streaming_Architecture_Best_Practices_JA.pdf)
[関連事例動画](https://www.youtube.com/watch?v=XOc33az3I_0)
[参考アーキテクチャ](https://github.com/aws-samples/lambda-refarch-iotbackend)
[ソリューション1(英語)](https://aws.amazon.com/jp/solutions/smart-product-solution/)
[ソリューション2(英語)](https://aws.amazon.com/jp/solutions/aws-connected-vehicle-solution/)
チャットボット/Alexaスキル
[参考アーキテクチャ](https://github.com/aws-samples/lambda-refarch-image-moderation-chatbot)
データ変更トリガー処理
[活用例](https://aws.amazon.com/jp/blogs/news/anomaly-detection-on-amazon-dynamodb-streams-using-the-amazon-sagemaker-random-cut-forest-algorithm/)
[チュートリアル](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-ddb-example.html)
ログデータ収集処理
[関連記事](https://aws.amazon.com/jp/blogs/news/analyze-and-visualize-your-vpc-network-traffic-using-amazon-kinesis-and-amazon-athena/)
[関連資料](https://d1.awsstatic.com/International/ja_JP/Whitepapers/Serverless_Streaming_Architecture_Best_Practices_JA.pdf)
[データ変換ブループリント](https://docs.aws.amazon.com/ja_jp/firehose/latest/dev/data-transformation.html)
データレイク周りのデータ加工
[ソリューション](https://aws.amazon.com/jp/solutions/data-lake-solution/)
[DB Loader](https://github.com/awslabs/aws-lambda-redshift-loader)
[包括的ソリューション](https://aws.amazon.com/jp/lake-formation/)
機械学習/ETLデータパイプライン
[関連記事1](https://aws.amazon.com/jp/blogs/news/orchestrate-multiple-etl-jobs-using-aws-step-functions-and-aws-lambda/)
[関連記事2](https://aws.amazon.com/jp/blogs/news/automated-and-continuous-deployment-of-amazon-sagemaker-models-with-aws-step-functions/)
[機能紹介動画](https://www.youtube.com/watch?v=dNb5jVffzPs)
[関連事例](https://www.slideshare.net/shoujishirotori/the-design-for-serverless-etl-pipeline-489)
スケジュール・ジョブ/SaaSイベント
[関連資料](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/services-cloudwatchevents.html)
[SAMテンプレート](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-scheduledevents-example-use-app-spec.html)
[ソリューション(英語)](https://aws.amazon.com/jp/solutions/fraud-detection-using-machine-learning/)