jawsから見るlambda そして、サーバレスアーキテクチャ
TRANSCRIPT
JAWSから見るAWS LAMBDA そして、サーバレスアーキテクチャ
クラスメソッド株式会社
五十嵐 良輔
2015-10-30
自己紹介▸ 五十嵐 良輔
▸ 2015.8 入社
▸ モバイルアプリサービス部
▸ 現在の仕事はRailsとAWSが中心
▸ 近況Git使いこなせてないけどtigとgit rebase -i
でGitとだいぶ仲良くなれた気がする。
テキスト
ゴール(目標)▸ JAWSの仕組みを知る
▸ JAWSを通じてLambdaができることを知る
▸ JAWSを通じてサーバレスアーキテクチャを知る
テキスト
アジェンダ▸ JAWSの紹介
▸ AWSMの紹介
▸ Demo
▸ まとめ
JAWS
JAWSとは
▸ サーバレスアプリケーションフレームワーク
▸ AWS LmabdaとAPI Gatewayがベース
▸ AWSのリソースをJAWS(CLI)から自動生成
▸ AWSMというエコシステムライブラリ
▸ オープンソース
▸ v1ベータ(2015/10/30時点)
JAWS
JAWSの本気度
▸ フルタイムで2名が開発
▸ re:Invent 2015 http://www.slideshare.net/AmazonWebServices/dvo209-jaws-a-scalable-serverless-framework
▸ Trailerhttps://vimeo.com/141132756
JAWS
JAWSの由来
▸ 開発者に聞いてみた!
JAWS
プロジェクト構成▸ aws_modules機能の単位であり、複数のLambdaとリソースを構成するためのCFnの定義からなる
▸ cloudformationプロジェクトに必要なリソース全てを構成するためのCFnの定義
▸ その他環境変数やプロジェクトの構成ファイル
JAWS
デプロイ構成▸ 1つ以上のステージにデプロイできる
▸ ステージには1つ以上のリージョンがある
▸ 3つのCloudFormationスタック
▸ ResourcesIAMやS3 Bucket、その他のリソース
▸ Lambdas
▸ API Gateway
JAWS
ロードマップ▸ v1.4
▸ JAWSのNode.js v4対応(ES6対応)
▸ JAWSのPlugin拡張対応
▸ Lambdaのバージョニングとエイリアスに対応
▸ など
AWSM
AWSMとは
▸ JAWSプロジェクトにおける機能の単位
▸ 再利用可能で標準的な機能をnpmで公開
▸ DynamoDBなどのリソースもセットで定義
▸ 現在はNode.jsのみ(他の言語にも対応予定)
AWSM
AWSM一覧
▸ awsm-images画像を編集(リサイズなど)するREST APIを生成する
▸ awsm-users DynamoDBを使ってユーザを作成・認証する
▸ awsm-cloudfront S3とAPI Gatewayの前にCloudFrontを配置して静的なWebアプリケー
ションを構築する
AWSM
AWSM一覧
▸ awsm-middleware
▸ awsm-loggly
▸ awsm-twilio
▸ awsm-stripe-webhook
▸ awsm-slack-webhook
▸ awsm-mailer
▸ awsm-s3tokenvendor
DEMO
DEMO
お題▸ awsm-usersを使ってユーザ登録・認証APIを作成する
▸ リソース[POST] /users/create[POST] /users/authenticate [GET] /users/list *認可必要
※手順は後日ブログにアップします
MATOME
まとめ
まとめ/感想
▸ LambdaやAPI GatewayのCFnを自動作成してくれて便利
▸ リージョンや環境ごとのデプロイ・環境変数の管理をしてくれて便利
▸ 環境変数は地味に便利
▸ AWSMはLambdaの書き方の参考になる
▸ 現時点ではあくまでベータ
まとめ
サーバレスアーキテクチャ▸ 構成
▸ EC2を使わない
▸ Lambda + API Gateway + その他のサービス
まとめ
サーバレスアーキテクチャ▸ メリット
▸ いくらでもスケール可能
▸ 必要な時だけリソースを消費するので安い
▸ マネージドサービスなので運用コストがかからない
▸ デメリット
▸ 決定版的な手法が確立されていない
▸ マイクロサービスと同様の課題(トランザクションなど)
まとめ
サーバレスアーキテクチャ▸ 感想
▸ できるところだけサーバレス化するだけでも十分にメリットは得られるので、Lambdaは積極的に使いたい
▸ サーバが仮想化になり、コンテナになったように、次はLambdaがシステムの中心になる
まとめ
参考▸ jaws-framework/JAWS
https://github.com/jaws-framework/JAWS
▸ (DVO209) JAWS: A Scalable Serverless Frameworkhttp://www.slideshare.net/AmazonWebServices/dvo209-jaws-a-scalable-serverless-framework
▸ (レポート) DVO209: JAWS: 高度にスケーラブルなサーバーレスフレームワーク #reinvent | Developers.IOhttp://dev.classmethod.jp/cloud/aws/reinvent2015-dvo209/