サーバレスアーキテクチャの3原則
- オンデマンドでサービス実行するために、コンピューティング環境を使う
- 目的が1つでステートレスな関数を書く
- プッシュベースのイベント駆動パイブラインを設計する
- 強力なフロントエンドを作る
- サードパーティサービスを活用する
サーバレスアーキテクチャのユースケース
- S3にファイルを保存し、SQSでキューにデータをプッシュし、Lambda関数を起動
- データ処理、変換、操作、トランスコード
- CSV、Json、XMLファイルの処理、データ照合、集計、イメージサイズの変更、フォーマット変換
- Kinesisと連携したリアルタイムデータ処理
- シャード数と関数の数が同じであり、シャードごとに関数が1つずつある
- レガシーAPIプロキシ
- Blueprint(設計図)というサンプル付きのテンプレート
- Slackなどのボット開発
- Amazon Echo
アーキテクチャ
- バックエンドと、グルー(ワークフローを実行するために組み立てられるパイブライン処理)
- この2つは、相互補完が可能(組み合わせにて使う)
- Computer-as-back-end アーキテクチャ
- フロントエンドがセキュアに通信できるのであれば、分厚いフロントエンドとサードパーティサービスを活用し、イベント駆動パイブラインではなく、サーバレスバックエンドが使われる範囲を極力減らす(ナノ関数ともいう)
A Clud Guru
- フロントエンドは、AngularJSで構築され、Netlifyによってホスティングされている
- Amazon S3と、Amazon CloudFrontによるグローバルなコンテンツデリバリーネットワークに変更もできる
- 登録、認証機能のためにAuth0を使っている
- フロントエンドがFirebaseなど他のサービスと直接セキュアに通信するための委任トークンを作る
- Firebase(リアルタイムデータベース)
- クライアントは、それぞれウェブソケットを使ってFirebaseと接続し、ほぼリアルタイムでFirebaseから更新情報を受け取る
Instant
- TODO
ハイブリッドサーバレスとレガシーAPI
- TODO
GraphQL
- 複数のラウンドトリップ、オーバーフェッチ、バージョニングに弱点のあるRESTに替わるものとして設計された(2012年〜2015年 Facebook社)
- 単一のエンドポイントで、宣言的な階層構造でクエリを実行する方法を提供している
- 1つのGraphQL Lambda関数だけで複数のデータソースにクエリを送ることが可能
- AWS AppSync
https://github.com/serverless/serverless-graphql-blog
http://kevinold.com/2016/02/01/serverless-graphql.html
https://medium.com/scaphold/pok/%C3A9mon-go-and-graphql-widh-aws-lambda-a6d53f254424
サンプル実装
- 動画を別の形式にトランスコードするパイプライン処理