What's new with Serverless

154 views

Published on

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

Published in: Services
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
154
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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/

×