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,434 views

Published on

2016/12/11 Serverless Meetup Sapporoでの資料です。

Published in: Services

What's new with Serverless

  1. 1. What’s New with Serverless Keisuke Nishitani (@Keisuke69) Amazon Web Services Japan K.K. Dec 11, 2016
  2. 2. 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. サーバレスプラットフォームの機能性
  4. 4. Serverless AppのCI/CD
  5. 5. 環境変数のサポート
  6. 6. AWS Serverless Application Model (SAM) ✤ サーバレスアプリケーションの構成を定義するための共通⾔語 ⎻ CloudFomationのエクステンション ✤ Lambdaベースのアプリケーションをパッケージしてデプロイするた めのツール ✤ コンソール上からLambdaのブループリントや ファンクションをSAMとしてエクスポート可能
  7. 7. 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 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. Serverless CI/CD pipeline ✤ CodePipelineを⽤いてGithubもしくはCodeCommitからソースを直接 Pull GitHub Source Deploy CloudFormationCodeBuild Build NEW!
  10. 10. Serverless CI/CD pipeline ✤ CodePipelineを⽤いてGithubもしくはCodeCommitからソースを直接 Pull ✤ AWS CodeBuildでサーバレスアプリのビルドとパッケージング ⎻ npm、pip、Javaコンパイル GitHub Source Deploy CloudFormationCodeBuild Build NEW!
  11. 11. Serverless CI/CD pipeline ✤ CodePipelineを⽤いてGithubもしくはCodeCommitからソースを直接Pull ✤ AWS CodeBuildでサーバレスアプリのビルドとパッケージング ⎻ Npm、pip、Javaコンパイル ✤ AWS CloudFormationで完成したアプリをデプロイ GitHub Source Deploy CloudFormationCodeBuild Build NEW!
  12. 12. ICYMI: CloudWatchの新機能 ✤ Percentiles ⎻ あらゆるメトリクスで パーセンタイル統計を サポート ✤ Metrics-to-Logs ⎻ メトリクスのポイント から直接CloudWatch logsに⾶べるように
  13. 13. AWS X-Rayとのインテグレーション ✤AWS X-Rayを⽤いることでサービス間の イベントの遷移を可視化 ✤Lambdaファンクションから他のサービス に対する呼び出しと時間をトレース ✤ファンクションとサービスの依存関係、関 連性を実際に⽬視 ✤消えたイベントやスロットルといった状態 を確認したり診断したりが簡単に ✤簡単なセットアップ ✤サポートはもう間もなく 簡単セットアップ AWS Lambda Amazon S3 Amazon DynamoDB
  14. 14. AWS X-Rayとのインテグレーション ✤ ⾮同期呼び出しの滞留時間とリトライを確認 ✤ AWSサービスに対する呼び出しパフォーマンスをプロファイリング ⎻ イベント処理の失敗を検知 ⎻ パフォーマンス問題の特定と修正が簡単に dwell times service call times retries
  15. 15. AWS Lambdaの新機能・エンハンス ✤ Kinesis IteratorとしてAT_TIMESTAMPをサポート ✤ 対応⾔語としてC#のサポート ✤ デッドレターキュー
  16. 16. AT_TIMESTAMPのサポート ✤ Kinesisのイテレータとして新たにAT_TIMESTAMPをサポート ✤ 任意の時点でのストリームデータ処理が可能 ✤ データが巻き戻ったり、失われたりすることなく処理の停⽌と開始 Amazon Kinesis LATESTTRIM_HORIZON TIMESTAMP
  17. 17. C#サポート ✤ 新しい⾔語としてC#をサポート ⎻ .NET Core で動作 ⎻ Win32 API や COMコンポーネントは呼べません ✤ Visual Studio に統合された環境を利⽤可能 ⎻ AWS Tools for Visual Studio 最新版をインストールしてください ⎻ dotnet CLIベースの開発も可能 ✤ Context等の基本的なものから、 シリアライザや各サービスのイベン トオブジェクトなど3種類のライブラリを提供 ⎻ Nugetでインストール 17
  18. 18. Lambda関数ハンドラ(C#) ✤ クラスの静的またはインスタンス メソッドとして定義 ✤ デフォルトではSystem.IO.Stream型をサポート ⎻ それ以外の型はシリアライザが必要 ✤ シグニチャの例 ⎻ public Stream RunLambda(Stream inputStream); ⎻ public string RunLambda(string inputString); ⎻ public MyResponse RunLambda(MyRequest request); ⎻ POCO in(イベント オブジェクトを含む), POCO out ⎻ public void RunLambda(MyRequest request); ⎻ public async Task<MyResponse> RunLambda(...); ⎻ ⾮同期呼び出し ⎻ 但し、Labmdaは戻り値を無視する(void にすることも可能だがasync voidは未サポート) returnType handler-name(inputType input, ILambdaContext context) { ... }
  19. 19. AWS Lambda C# Project Template
  20. 20. AWS Labmda C# Blue Print
  21. 21. Publish to AWS Lambda
  22. 22. ローカル環境でLambda C#コードのデバッグ
  23. 23. デッドレターキュー(Dead Letter Queue, DLQ) ✤ 信頼性の⾼いエンドツーエンドのイベン ト処理ソリューションの作成が簡単に ✤ 3回実⾏しても処理されなかったイベント をSQSのキューもしくはSNSトピックへ と送信 ✤ コードに問題が有る場合や、スロットル される場合もイベントを保存 ✤ ファンクション単位 ✤ すべての⾮同期呼び出しで利⽤可能 Amazon SQS Amazon SNS AWS Lambda
  24. 24. Lambda Everywhere
  25. 25. AWS Step Functions ✤信頼性⾼く複数のLambdaファンクション をオーケストレーション ✤3回以上の試⾏ ✤⾮同期なファンクションに対するコール バックの追加 ✤待ち合わせのハンドリング ✤連鎖的なファンクション実⾏ ✤ロングランニングなワークフローのサポー ト
  26. 26. Lambda Bots and Amazon Lex •テキストスピー チ •ビジネスロジッ クをLambdaで実 ⾏ •Facebook、 MobileHub •Slackおよび Twilio とのインテ グレーションは 近⽇中 I’d like to book a hotel
  27. 27. AWS Snowball Edge ✤オンプレからAWSへの⾼速・シ ンプル・セキュアなデータ移⾏ ✤100TBクラスのキャパシティ ✤ローカルでLambdaファンクショ ンを実⾏可能 ✤マルチメディアコンテンツの変 換、リアルタイムな圧縮、監査
  28. 28. AWS Greengrass(Preview) ✤AWSの処理をデバイス上でも ✤低遅延、ニアリアルタイム ✤デバイス上でLambdaファンクショ ンを実⾏ ✤AWS IoTを通じたクラウドストレー ジとコンピュート ✤必要スペック:1GHz、 128MB、 x86/ARM、Linux
  29. 29. Lambda@Edge(Preview) ✤低レイテンシなリクエスト/レス ポンスのカスタマイズ ✤Viewerとオリジンのイベントを サポート ✤プレビューでの制限 ⎻ Node.jsのみ ⎻ 最⼤50msのタイムアウト ⎻ ヘッダのみ Sign up to join the preview!
  30. 30. API Gatewayアップデート
  31. 31. バイナリのサポート イメージやオー ディオなどのバイ ナリコンテンツを サポート Content-TypeとAcceptヘッダを参照してハンドリング Lambdaインテグレーションの場合は ⾃動的にbase64でエンコード
  32. 32. APIドキュメンテーション ✤ APIをドキュメント化–コンソール上から直接編集可能 ✤ Swagger インポート/エクスポート ✤ 独⽴した更新とパブリッシュのフローをサポート Cool feature: Inheritance!
  33. 33. AWS Marketplaceとのインテグレーション ✤ APIのマネタイズ ✤ ⾃⾝のAPIをマーケットプレイス上で販 売可能 ✤ API利⽤者のための簡単な発⾒と調達 ✤ コンシューマ/APIキーによるAPI利⽤量 のトラッキング ✤ AWSによる⾃動化された請求処理 URL Reputation APIs Speech understanding APIs
  34. 34. Developer Portalの⽣成 ✤ API利⽤者のためのポータルサイトを⽣成 ✤ API Gatewayで作成したAPIのリストやカタログと開発者のサインアップを 実現するサーバレスなアプリケーションを⽣成 ✤ S3のStatic Web Site Hosting機能で配信可能 ✤ https://github.com/awslabs/aws-api-gateway-developer-portal
  35. 35. Developer ecosystem MonitoringDeploymentIntegrationsCode Libraries APN Skills
  36. 36. Developer ecosystem Chalice Framework
  37. 37. サーバレス個別相談会やります ✤ 1⽉12⽇(⽊)にサーバレスに関する個別技術相談会を開催します ✤ サーバレスなシステムに関するアーキテクチャ相談 ✤ 1スロット、45分で7スロット受け付け予定 ✤ 要事前登録 ✤ もちろん無料 https://aws-serverless.connpass.com/event/45337/

×