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.

What's new with Serverless

1,070 views

Published on

2016年12月7日に開催されたServerless Follow Upでの資料です。

Published in: Software
  • Be the first to comment

What's new with Serverless

  1. 1. #aws_serverless What’s New with Serverless Keisuke Nishitani (@Keisuke69) Amazon Web Services Japan K.K. Dec 07, 2016
  2. 2. #aws_serverless Profile Keisuke Nishitani Specialist Solutions Architect, Amazon Web Service Japan K.K @Keisuke69 Keisuke69 ✤ Specialist SA - Serverless - Mobile - DevOps - Application Service ✤ ソーシャルで⾚ドクロの⼈です ✤ RESTおじさん ✤ 餃⼦の王将エヴァンジェリスト(⾃称) ✤ ⾳楽が好きです、フジロッカーです、今年も⾏きました ✤ ブログ: http://keisuke69.hatenablog.jp/ Keisuke69 Keisuke69Keisuke69x
  3. 3. #aws_serverless サーバレスプラットフォームの機能性
  4. 4. #aws_serverless Serverless AppのCI/CD
  5. 5. #aws_serverless 環境変数のサポート
  6. 6. #aws_serverless AWS Serverless Application Model (SAM) ✤ サーバレスアプリケーションの構成を定義するための共通⾔語 ⎻ CloudFomationのエクステンション ✤ Lambdaベースのアプリケーションをパッケージしてデプロイするた めのツール ✤ コンソール上からLambdaのブループリントや ファンクションをSAMとしてエクスポート可能
  7. 7. #aws_serverless AWS Serverless Application Model AWSTemplateFormatVersion: '2010-09-09’ Transform: AWS::Serverless-2016-10-31 Resources: GetHtmlFunction: Type: AWS::Serverless::Function Properties: CodeUri: s3://flourish-demo-bucket/todo_list.zip Handler: index.gethtml Runtime: nodejs4.3 Policies: AmazonDynamoDBReadOnlyAccess Events: GetHtml: Type: Api Properties: Path: /{proxy+} Method: ANY ListTable: Type: AWS::Serverless::SimpleTable Functions APIs Storage
  8. 8. #aws_serverless AWS Serverless Application Model AWSTemplateFormatVersion: '2010-09-09’ Transform: AWS::Serverless-2016-10-31 Resources: GetHtmlFunction: Type: AWS::Serverless::Function Properties: CodeUri: s3://flourish-demo-bucket/todo_list.zip Handler: index.gethtml Runtime: nodejs4.3 Policies: AmazonDynamoDBReadOnlyAccess Events: GetHtml: Type: Api Properties: Path: /{proxy+} Method: ANY ListTable: Type: AWS::Serverless::SimpleTable AWSTemplateFormatVersion: '2010-09-09' Resources: GetHtmlFunctionGetHtmlPermissionProd: Type: AWS::Lambda::Permission Properties: Action: lambda:invokeFunction Principal: apigateway.amazonaws.com FunctionName: Ref: GetHtmlFunction SourceArn: Fn::Sub: arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${ServerlessRestApi}/Prod/ANY/* ServerlessRestApiProdStage: Type: AWS::ApiGateway::Stage Properties: DeploymentId: Ref: ServerlessRestApiDeployment RestApiId: Ref: ServerlessRestApi StageName: Prod ListTable: Type: AWS::DynamoDB::Table Properties: ProvisionedThroughput: WriteCapacityUnits: 5 ReadCapacityUnits: 5 AttributeDefinitions: - AttributeName: id AttributeType: S KeySchema: - KeyType: HASH AttributeName: id GetHtmlFunction: Type: AWS::Lambda::Function Properties: Handler: index.gethtml Code: S3Bucket: flourish-demo-bucket S3Key: todo_list.zip Role: Fn::GetAtt: - GetHtmlFunctionRole - Arn Runtime: nodejs4.3 GetHtmlFunctionRole: Type: AWS::IAM::Role Properties: ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Action: - sts:AssumeRole Effect: Allow Principal: Service: - lambda.amazonaws.com ServerlessRestApiDeployment: Type: AWS::ApiGateway::Deployment Properties: RestApiId: Ref: ServerlessRestApi Description: 'RestApi deployment id:127e3fb91142ab1ddc5f5446adb094442581a90d' StageName: Stage GetHtmlFunctionGetHtmlPermissionTest: Type: AWS::Lambda::Permission Properties: Action: lambda:invokeFunction Principal: apigateway.amazonaws.com FunctionName: Ref: GetHtmlFunction SourceArn: Fn::Sub: arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${ServerlessRestApi}/*/ANY/* ServerlessRestApi: Type: AWS::ApiGateway::RestApi Properties: Body: info: version: '1.0' title: Ref: AWS::StackName paths: "/{proxy+}": x-amazon-apigateway-any-method: x-amazon-apigateway-integration: httpMethod: ANY type: aws_proxy uri: Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03- 31/functions/${GetHtmlFunction.Arn}/invocations responses: {} swagger: '2.0' REPLACES:
  9. 9. #aws_serverless Serverless CI/CD pipeline ✤ CodePipelineを⽤いてGithubもしくはCodeCommitからソースを直接 Pull GitHub Source Deploy CloudFormationCodeBuild Build NEW!
  10. 10. #aws_serverless Serverless CI/CD pipeline ✤ CodePipelineを⽤いてGithubもしくはCodeCommitからソースを直接 Pull ✤ AWS CodeBuildでサーバレスアプリのビルドとパッケージング ⎻ npm、pip、Javaコンパイル GitHub Source Deploy CloudFormationCodeBuild Build NEW!
  11. 11. #aws_serverless Serverless CI/CD pipeline ✤ CodePipelineを⽤いてGithubもしくはCodeCommitからソースを直接Pull ✤ AWS CodeBuildでサーバレスアプリのビルドとパッケージング ⎻ Npm、pip、Javaコンパイル ✤ AWS CloudFormationで完成したアプリをデプロイ GitHub Source Deploy CloudFormationCodeBuild Build NEW!
  12. 12. #aws_serverless ICYMI: CloudWatchの新機能 ✤ Percentiles ⎻ あらゆるメトリクスで パーセンタイル統計を サポート ✤ Metrics-to-Logs ⎻ メトリクスのポイント から直接CloudWatch logsに⾶べるように
  13. 13. #aws_serverless AWS X-Rayとのインテグレーション ✤AWS X-Rayを⽤いることでサービス間の イベントの遷移を可視化 ✤Lambdaファンクションから他のサービス に対する呼び出しと時間をトレース ✤ファンクションとサービスの依存関係、関 連性を実際に⽬視 ✤消えたイベントやスロットルといった状態 を確認したり診断したりが簡単に ✤簡単なセットアップ ✤サポートはもう間もなく 簡単セットアップ AWS Lambda Amazon S3 Amazon DynamoDB
  14. 14. #aws_serverless AWS X-Rayとのインテグレーション ✤ ⾮同期呼び出しの滞留時間とリトライを確認 ✤ AWSサービスに対する呼び出しパフォーマンスをプロファイリング ⎻ イベント処理の失敗を検知 ⎻ パフォーマンス問題の特定と修正が簡単に dwell times service call times retries
  15. 15. #aws_serverless AWS Lambdaの新機能・エンハンス ✤ Kinesis IteratorとしてAT_TIMESTAMPをサポート ✤ 対応⾔語としてC#のサポート ✤ デッドレターキュー
  16. 16. #aws_serverless AT_TIMESTAMPのサポート ✤ Kinesisのイテレータとして新たにAT_TIMESTAMPをサポート ✤ 任意の時点でのストリームデータ処理が可能 ✤ データが巻き戻ったり、失われたりすることなく処理の停⽌と開始 Amazon Kinesis LATESTTRIM_HORIZON TIMESTAMP
  17. 17. #aws_serverless C#サポート ✤ファンクションをC#で記述可能 ✤詳細は後ほど
  18. 18. #aws_serverless デッドレターキュー(Dead Letter Queue, DLQ) ✤ 信頼性の⾼いエンドツーエンドのイベン ト処理ソリューションの作成が簡単に ✤ 3回実⾏しても処理されなかったイベント をSQSのキューもしくはSNSトピックへ と送信 ✤ コードに問題が有る場合や、スロットル される場合もイベントを保存 ✤ ファンクション単位 ✤ すべての⾮同期呼び出しで利⽤可能 Amazon SQS Amazon SNS AWS Lambda
  19. 19. #aws_serverless Lambda Everywhere
  20. 20. #aws_serverless AWS Step Functions ✤信頼性⾼く複数のLambdaファンクション をオーケストレーション ✤3回以上の試⾏ ✤⾮同期なファンクションに対するコール バックの追加 ✤待ち合わせのハンドリング ✤連鎖的なファンクション実⾏ ✤ロングランニングなワークフローのサポー ト
  21. 21. #aws_serverless Lambda Bots and Amazon Lex •テキストスピー チ •ビジネスロジッ クをLambdaで実 ⾏ •Facebook、 MobileHub •Slackおよび Twilio とのインテ グレーションは 近⽇中 I’d like to book a hotel
  22. 22. #aws_serverless AWS Snowball Edge ✤オンプレからAWSへの⾼速・シ ンプル・セキュアなデータ移⾏ ✤100TBクラスのキャパシティ ✤ローカルでLambdaファンクショ ンを実⾏可能 ✤マルチメディアコンテンツの変 換、リアルタイムな圧縮、監査
  23. 23. #aws_serverless AWS Greengrass(Preview) ✤AWSの処理をデバイス上でも ✤低遅延、ニアリアルタイム ✤デバイス上でLambdaファンクショ ンを実⾏ ✤AWS IoTを通じたクラウドストレー ジとコンピュート ✤必要スペック:1GHz、 128MB、 x86/ARM、Linux
  24. 24. #aws_serverless Lambda@Edge(Preview) ✤低レイテンシなリクエスト/レス ポンスのカスタマイズ ✤Viewerとオリジンのイベントを サポート ✤プレビューでの制限 ⎻ Node.jsのみ ⎻ 最⼤50msのタイムアウト ⎻ ヘッダのみ Sign up to join the preview!
  25. 25. #aws_serverless API Gatewayアップデート
  26. 26. #aws_serverless バイナリのサポート イメージやオー ディオなどのバイ ナリコンテンツを サポート Content-TypeとAcceptヘッダを参照してハンドリング Lambdaインテグレーションの場合は ⾃動的にbase64でエンコード
  27. 27. #aws_serverless APIドキュメンテーション ✤ APIをドキュメント化–コンソール上から直接編集可能 ✤ Swagger インポート/エクスポート ✤ 独⽴した更新とパブリッシュのフローをサポート Cool feature: Inheritance!
  28. 28. #aws_serverless AWS Marketplaceとのインテグレーション ✤ APIのマネタイズ ✤ ⾃⾝のAPIをマーケットプレイス上で販 売可能 ✤ API利⽤者のための簡単な発⾒と調達 ✤ コンシューマ/APIキーによるAPI利⽤量 のトラッキング ✤ AWSによる⾃動化された請求処理 URL Reputation APIs Speech understanding APIs
  29. 29. #aws_serverless Developer Portalの⽣成 ✤ API利⽤者のためのポータルサイトを⽣成 ✤ API Gatewayで作成したAPIのリストやカタログと開発者のサインアップを 実現するサーバレスなアプリケーションを⽣成 ✤ S3のStatic Web Site Hosting機能で配信可能 ✤ https://github.com/awslabs/aws-api-gateway-developer-portal
  30. 30. #aws_serverless Developer ecosystem MonitoringDeploymentIntegrationsCode Libraries APN Skills
  31. 31. #aws_serverless Developer ecosystem Chalice Framework
  32. 32. #aws_serverless サーバレス個別相談会やります ✤ 1⽉12⽇(⽊)にサーバレスに関する個別技術相談会を開催します ✤ サーバレスなシステムに関するアーキテクチャ相談 ✤ 1スロット、45分で7スロット受け付け予定 ✤ 要事前登録 ✤ もちろん無料 https://aws-serverless.connpass.com/event/45337/
  33. 33. #aws_serverless

×