【レポート】「実践SERVERLESS」に参加しました。

はじめに

AWS Lambdaが出てからだいぶ経ちますが、プロダクションとしての実績も
チラホラ聞こえるようになり何かしら勉強会ないかな?と思っていたところに
調度良い勉強会があったため、参加しました。

classmethod.connpass.com

最初は補欠でしたが、当日になり繰り上げ当選となったのは
ほんと運が良かったと思います。

後日、スライドが上がると思いますが、取り急ぎメモした内容を書きます。

セッション

Introducing Serverless Computing

Serverlessが使えるところや事例を聴くことができました。

活用するシステム一例

  • リアルタイムファイルプロセッシング

    • イメージ変換(サムネイル作成)
    • ドキュメントのメタデータのインデックス化
    • ログの処理
    • メディア・コンテンツのバリデーション
  • リアルタイムストリームプロセッシング

    • ストリーム分析
    • メトリクス作成
    • インデクシング

Serverless Web and Mobile Application

下記のものを使うのが定番となっている。

新しいエコシステム

AlexaアプリとSlackを使い、ServerlessでのBotを実現できる。

AWS CloudTrailでログ管理

APIの呼び出しログを管理する「CloudTrail」と連携してログ監視を行える。

事例

海外
  • VidRoll
  • PlayOn! Sports
  • easy ten
国内

Lambda と API Gateway の管理

サーバーレスの役割

  • どこをサーバーレスにするか?
    • いろんなところでできる。
  • フロントエンド
    • 通信データ取得や登録を行うところ
  • バックエンド
  • その他

管理方法の選定

管理ツールはたくさんある。 →ツールごとに観点が違う。

Lambda管理ツールを選ぶ4つのポイント

ツールの特徴
  • API Gatewayの併用
  • 対象は、API Gateway + Lambda、Lambdaのみの2パターン
  • セットはフロントエンドを対象としているツールが多い
  • Lambdaのみを対象としているツールは、汎用的に導入しやすい
他のリソース管理

観点は以下のとおり

  • システムの規模の大きさによって変わってくる。
  • 大きくなったら、分割するほうが良い。
  • 小さい場合は、まとめた方が良い。
ロールバック

リリース時などに障害が起き、前の状態に戻したい場合がある。
その際に管理ツールでできるかどうか。

  • 対応しているツールとしていないツールがある。
  • 対応しているのは手早くロールバックできる。
使い回し

一度、作ったものはある程度汎用的の方が良い。
ただし、考えて作らないといけない。

  • そのアーキテクトは他で使いまわせるか?
  • 汎用性にする必要はあるか?
  • 設定値は実行時パラメータを使うか?
  • 環境変数は必要か?

管理ツール6種

今回は6種ですが、他にもたくさんあるとのこと。

  • AWS Cloud Formation
    • AWSのプロダクトで管理できる
    • JSONでFunctionを管理
  • Serverless
    • フロントエンドとして管理
    • API Gateway, Lambdaを管理、デプロイできる
    • このツールで動作確認もできる
  • Apex
    • Lambdaに特化
    • Terraformと連携できる
  • Gulp (node-aws-lambda)
    • node-aws-lambda以外にもライブラリがある
    • ZIPで固めてデプロイする
    • 動作確認する場合は、AWSコンソールでやる必要がある
  • Swagger hub
    • Swaggerのクラウドサービス
    • IAMのポリシーも作ってくれるので便利
  • Chalice (Beta)
  • Flourish
    • Serverless Confで発表されたもので、そろそろ出てくる?

まとめ

  • 何を重要視するか?(フロントエンド全部か一部だけか)
  • プロジェクトにあった、最適なものを選択すること
  • まずは、触ってみてとのこと

実際に使う Cognito UserPools

すでに資料は公開されています。

cognito-userpools-in-production // Speaker Deck

Serverlessというと確かにLambdaだが、Cognito UserPoolsを使って
Serverlessのシステムを作成することができる。

デモで使用したサンプルは、以下のもの

github.com

※この辺は、自分にとって難しく「便利そう!」というぐらいしかわかりませんでした・・・

まとめ

事例や管理ツールについて詳しく聞けたのが良かったです。
欲を言うと運用方法(監視など)も聞ければ良かったなぁと思っています。
実際に運用されているシステムってどうやっているのでしょうか?気になります。

「Serverless Web and Mobile Application」であれば、比較的手軽に試せそうなので
いろいろ試して、ノウハウを蓄積していこうと思います。