Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Serverlessでサイト監視

Serverless Frameworkを使ってみた話

  • Identifiez-vous pour voir les commentaires

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テンプレート等が記載しにくい

×