Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Serverlessでサイト監視

3,214 views

Published on

Serverless Frameworkを使ってみた話

Published in: Software
  • Be the first to comment

Serverlessでサイト監視

  1. 1. Serverlessでサイト監視 Shigeyuki Azuchi HAW International, Inc 2016.03.21  JAWS-UG 福岡:また濃い目にAWSの話をしてみよう
  2. 2. Serverless Framework Amazon API Gateway AWS Lambda
  3. 3. API Gateway EC2やLambda、任意のアプリケーション、バックエン ドサービスにアクセスするためのGatewayを提供する サービス。Amazon API Gateway ● スケーラブルなAPIの提供 ● APIのステージ及びバージョンを管理 ● APIをコールするSDKの自動生成 Android , iOS , JavaScript ● API実行状況のモニタリングとマネタイズ ● IAMを使った認証・認可
  4. 4. Lambda AWS Lambda 実行プラットフォームを気にすることなく、イベントをト リガーにして任意のアプリケーションコードを実行でき るサーバレスなコード実行プラットフォーム。 ● コードの実行時間で課金 ● JavaScript、Java、Pythonをサポート Rubyの対応が待ち望まれる ● cronライクなスケジュール実行もサポート ● ユーザがサーバ管理する必要がない
  5. 5. ということで AWS Lambda Amazon API Gateway 組み合わせればサーバレスな ● APIサービス ● Webアプリケーション を構築できる
  6. 6. Serverless Frameworkでできること ● Lambda Functionの実行 (local,remote) ● Lambda Functionのデプロイ ● API Gatewayのデプロイ ● ステージ(dev,prod..)のサポート ● Cloud Formationを使ったリソース管理 etc...
  7. 7. Serverlessでサイト監視
  8. 8. Serverless Frameworkの構成 _ .env _ admin.env _ package.json _ s-project.json _ s-resources-cf.json _ meta |__resources |__s-resources-cf-dev-apnortheast1.json |__variables |__s-variables-common.json |__s-variables-dev.json |__s-variables-dev-apnortheast1.json ←ローカルでテスト実行時の環境情報 ←アクセスキーとシークレットアクセスキーを設定 ←依存ライブラリを管理 ←プロジェクト情報を記述 ←CloudFrontのテンプレートファイル ステージ毎に適用された テンプレート情報をストア
  9. 9. ComponentとFunctionの構成 _ sites |__lib |__index.json |__node_modules ... |__create |__event.json |__handler.js |__s-function.json |__package.json |__s-component.json |__s-template.json ←Component(RESTのResource) ←Function間の共通処理を記述 ←テスト実行時に使用するリクエストデータを定義 ←Compoentの依存ライブラリ ←Function(Resourceに対するMethod) ←Lambda Function ←デプロイするAPI Gateway と Lambdaの設定 ←Componentの依存ライブラリ等を定義 ←Component情報を設定 ←テンプレートデータを定義
  10. 10. s-function.json { "name": "create", "customName": false, "customRole": false, "handler": "create/handler.handler", "timeout": 6, "memorySize": 128, "custom": { "excludePatterns": [], "envVars": [] }, ... Lambda Functionを定義
  11. 11. s-function.json "endpoints": [{ "path": "sites", "method": "POST", "type": "AWS", "authorizationType": "none", "apiKeyRequired": false, "requestParameters": {}, "requestTemplates": { "application/x-www-form-urlencoded": { "data": "$input.json('$')", "stage": "$context.stage" } } APIのResourceとMethodを定義 RequestのMapping Templateを定義
  12. 12. s-function.json "responses": { "default": { "statusCode": "302", "responseParameters": { "method.response.header.Location": "integration.response.body.location" } } } コードが気になる方はWebで(まだ途中です) https://github.com/azuchi/serverless-web-monitor ResponseのMapping Templateを設定 302のリダイレクトにも 対応
  13. 13. デプロイとログ ● sls dash deployで インタラクティブにデプロイ ライブラリや依存モジュールを丸ごとデプロイしてくれる ステージやバージョンも考慮! ● sls function logs -t CloudWatch Logsに格納されるログを お手軽に確認できる!
  14. 14. Plugins ● Offline API GatewayとLambdaの実行をローカルでエミュレート ● Alerting Lambda FunctionにCloud Watchのアラームを設定 ● Cloud Formation Validator Cloud Formationのテンプレートファイルを検証 ● Prune 古いバージョンのLambda Functionを削除 ● Test Serverless Frameworkのテストツール ● Optimizer Lambda Functionを最適化し実行パフォーマンスを向上
  15. 15. Serverless Framework使ってみて ● API Gateway と Lambdaの構成管理 API Gatewayの設定やLambdaの設置・コードをコードで管理できて便利! Serverless以外でもSwaggerとか構成管理ツールの導入が望ましい ● Cloud Formationを使ったリソースの構成管理 サーバレスなアプリケーションのインフラもコードで管理! ● デプロイまでサポート ステージやバージョニング含めデプロイが可能! ● 意識することなくスケーラブル ● コード(ビジネスロジック)に集中できる ● HTMLベースのテンプレートは設定しづらい 定義がJSONベースなのでHTMLテンプレート等が記載しにくい

×