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 Revolution

1,952 views

Published on

11/11 Developers Festa Sapporoで講演した際の資料です。

Published in: Services

Serverless Revolution

  1. 1. Serverless Revolution Keisuke Nishitani (@Keisuke69) Amazon Web Services Japan K.K. Nov 11, 2016
  2. 2. Profile Keisuke Nishitani Specialist Solutions Architect, Amazon Web Service Japan K.K @Keisuke69 Keisuke69 ✤ スペシャリストSA - Serverless - Mobile - DevOps - Application Service ✤ RESTおじさん ✤ 餃⼦の王将エヴァンジェリスト(⾃称) ✤ ⾳楽が好きです、フジロッカーです、今年も⾏きました ✤ ⼩説⼤好き、マンガ⼤好き、空想好き ✤ ブログ: http://keisuke69.hatenablog.jp/ Keisuke69 Keisuke69Keisuke69x
  3. 3. サーバレス流⾏ってますよね
  4. 4. なぜサーバレスなのか
  5. 5. ⼀般的な3-tier Webアプリ プレゼンテーション層 ロジック層 データストア層 Webサーバ/アプリサーバブラウザ/モバイル データベース
  6. 6. AWSで作る場合 AP (EC2) DB (RDS) LB (ELB) Web (EC2) Static Contents (S3) ブラウザ/モバイル CDN (CloudFront)
  7. 7. Developerの⽬的とは?
  8. 8. 価値を届けること
  9. 9. 価値を届けること
  10. 10. 価値=差別化 Photo credit: Ajith (അജി$്) via Visualhunt / CC BY-SA
  11. 11. 価値を⽣み出すビジネスロジックに集中したい! Photo credit: Leo Hidalgo (@yompyz) via VisualHunt / CC BY
  12. 12. でもなかなかそうは⾏かない現実 価値を⽣み出すビジネスロジックに集中したい!
  13. 13. サーバを所有すると ✤ サーバのセットアップ ⎻ OSのセットアップとネットワークなどの設定 ⎻ ランタイムやミドルウェアのセットアップ ✤ キャパシティやスケーラビリティ管理 ✤ 耐障害性を確保するための冗⻑化 ⎻ 複数台構成 ✤ セキュリティパッチの適⽤
  14. 14. アプリケーションの観点でも ✤ モノリシック ⎻ デプロイが⼀⼤イベント ⎻ 重厚⻑⼤なパイプライン ✤ 差別化には繋がらない機能の実装 ⎻ スロットリング ⎻ 認証・認可
  15. 15. ビジネスロジックに集中できない! Photo credit: kizzzbeth via Visual hunt / CC BY
  16. 16. ⼀般的な3-tier Webアプリ AP (EC2) DB (RDS) LB (ELB) Web (EC2) Static Contents (S3) ブラウザ/モバイル CDN (CloudFront)
  17. 17. ⼀般的な3-tier Webアプリ AP (EC2) DB (RDS) LB (ELB) Web (EC2) Static Contents (S3) ブラウザ/モバイル CDN (CloudFront) サーバ
  18. 18. ⼀般的な3-tier Webアプリ AP (EC2) DB (RDS) LB (ELB) Web (EC2) Static Contents (S3) ブラウザ/モバイル CDN (CloudFront) サーバ サーバ
  19. 19. ⼀般的な3-tier Webアプリ AP (EC2) DB (RDS) LB (ELB) Web (EC2) Static Contents (S3) ブラウザ/モバイル CDN (CloudFront) サーバ サーバ サーバ
  20. 20. ⼀般的な3-tier Webアプリ AP (EC2) DB (RDS) LB (ELB) Web (EC2) Static Contents (S3) ブラウザ/モバイル CDN (CloudFront) サーバ サーバ サーバ サーバ
  21. 21. サーバレススタックによる置き換え ブラウザ/モバイル API Gateway AWS Lambda DynamoDB etc S3CloudFront
  22. 22. サーバレススタックによる置き換え ブラウザ/モバイル API Gateway AWS Lambda DynamoDB etc S3CloudFront AWSによるマネージ (フルマネージド)
  23. 23. Serverless = No servers to manage and scale
  24. 24. サーバレスのメリット ✤ サーバレスはバックエンドのアウトソース ⎻ サーバサイドやインフラがわからないフロントエンジニアだけでシステムを実現する ことも可能 ⎻ ⾃分の書いたコードをすぐ試せる、そのままプロダクションに持っていける ⎻ AWSによってマネージされ、スケーラビリティやキャパシティ、セキュリティの⼼配 が不要 ⎻ ⾮常にコスト効率化が⾼く、多くの場合コスト減が⾒込める ✤ アプリ開発に多くのメリット ⎻ バックエンド側のコードとサーバが減るため開発運⽤コストを最⼩化 ⎻ トライ&エラーが容易なため、フィードバックループを速く回せるようになる ✤ 開発者がビジネスにフォーカスできる
  25. 25. You donʼt do that, we do that.
  26. 26. All you need is code.
  27. 27. Serverless is a paradigm shift
  28. 28. Serverless is a paradigm shift インフラだけでなくアプリ開発やオペレーションを含めたパラダイムシフト
  29. 29. 誰にとって嬉しいのか? ✤ フロントエンドエンジニア ⎻ サーバサイドがわからないフロントエンドエンジニアだけでもサービスを実現 ⎻ シングルページアプリケーションやモバイルのバックエンドAPIとして ✤ サーバサイドエンジニア ⎻ サーバサイドの⼀部をアウトソース ⎻ よりコアな機能・ロジックそのものに集中 ✤ インフラエンジニア ⎻ イベントドリブンな運⽤を簡単に ⎻ サービスとサービスを繋ぎあわせるだけのシステム構築
  30. 30. AWSのサーバレスオファリング AWS LambdaAmazon API Gateway Amazon DynamoDB Amazon Kinesis Amazon Mobile Analytics Amazon SNS Amazon Cognito AWS IoT Amazon S3 Amazon Elastic Transcoder AWS CloudWatch AWS CloudTrail Amazon SESAmazon Machine Learning Amazon Route53Amazon SQS
  31. 31. 多様なフルマネージドサービス ✤ Amazon DynamoDB、Amazon Kinesisに代表される⾮常にfunctional なサービス ✤ ⾼い可⽤性とスケーラビリティ ⎻ ⼩規模から⼤規模までシームレスにスケール ✤ No Middlewares ⎻ ミドルウェアから、よりSpecificなアプリケーション機能そのものまでを提供
  32. 32. Computeの進化 - 仮想化からクラウドへ InfrastructureInstances Application code
  33. 33. Computeの進化 – コンテナ InfrastructureInstances Application codeContainers
  34. 34. Computeの進化– Serverless Application code
  35. 35. AWSのComputeサービス Amazon EC2 Amazon ECS AWS Lambda スケールの単位 インスタンス アプリケーション ファンクション 抽象化 ハードウェア OS ランタイム
  36. 36. AWSのComputeサービス Amazon EC2 Amazon ECS AWS Lambda スケールの単位 インスタンス アプリケーション ファンクション 抽象化 ハードウェア OS ランタイム
  37. 37. すべてのデベロッパーをハッピーに AWS Lambda ⾼いコスト効率インフラ管理不要 使った分だけ100ms単位で課⾦ ⾃分のコードを実⾏ 標準的な⾔語のコードを実⾏ビジネスロジックにフォーカス
  38. 38. サーバレスなアプリケーションモデル イベントソース ファンクション サービスなど Node.js Java Python λ イベント S3にオブジェクトが作られる Kinesisにストリームデータが保存される HTTPSによるリクエスト etc...
  39. 39. Amazon S3 Amazon DynamoDB Amazon Kinesis AWS CloudFormation AWS CloudTrail Amazon CloudWatch Amazon SNSAmazon SES Amazon API Gateway Amazon Cognito AWS IoT Amazon Alexa Cron events DATA STORES ENDPOINTS REPOSITORIES EVENT/MESSAGE SERVICES AWS Lambdaと連携するイベントソース Amazon Config Amazon Aurora New!
  40. 40. AWS Lambdaを利⽤する場合のユースケース Data Processing Control SystemsBackends
  41. 41. AWS Lambdaを利⽤する場合のユースケース データの変更、システム状態の遷移もしくはユーザによ るアクションといったものに対応したコードの実⾏ レスポンスのカスタマイズとAWS内の状態やデータ変更 に対するワークフローのレスポンス Web、モバイル、IoTや外部APIへのリクエストを扱う バックエンドロジックの実⾏ Data Processing Backends Control Systems
  42. 42. Real-time File Processing ✤ イメージのサムネイル⽣成やビデオの変換 ✤ ドキュメントのメタデータをインデックス化 ✤ ログの処理 ✤ メディアコンテンツのバリデーション 元画像 サムネイル画 像 1 2 3 1.ファイルストレージを 提供するAmazon S3 2.処理ロジックを提供す るAWS Lambda
  43. 43. AWS 導⼊事例:株式会社スクウェア・エニックス ✤ ドラゴンクエストⅩ ✤ ゲーム内で写真撮影し、Lambdaでサムネイル画像作成や コピーライトの追加加⼯ ✤ 処理時間が数時間→10 数秒で完了 ✤ 同じ処理をオンプレミスと⽐べ 20 分の 1 程度まで削減 “AWS Lambda の効果は劇的でした。今まで数時間かかっていた画像処理がわ ずか 10 数秒で完了しました。コストに関しても、同じ処理をオンプレミスで ⾏う場合と⽐べ 20 分の 1 程度にまで削減することができました。 AWS Lambda にはそもそもリソースが⾜りなくなるという発想がありません。これ はオンプレミスでは真似のできないものです。” 縣 ⼤輔⽒ 第 6 ビジネス・ディビジョン テクニカルディレクター
  44. 44. Real-time Stream Processing ✤ クライアントのアクティビティトラッキング ✤ クリックストリーム分析 ✤ メトリクス⽣成 ✤ データクレンジング ✤ ログフィルタリング ✤ インデクシング ✤ デバイスデータのテレメトリと測定 1. ストリームデータの保存を提供 するAmazon Kinesis 2. データ処理アプリケーションと してのAWS Lambda
  45. 45. Extract, Transform and Load ✤ データバリデーション ✤ バックアップ ✤ 分析 1. NoSQLデータストアを提供する Amazon DynamoDB 2. 変換およびロード処理を実⾏する Amazon Lambda 3. DWHを提供するAmazon Redshift
  46. 46. Alexaアプリ + Slack = Serverless bot! Alexa、"今からデモを 送る"をSlackで送信し て スケジュールされたポーリングにより メッセージを取得 Kevinから、 "成功を祈る!" (Slack APIを使って) メッセージをアップロード チーム (チャネルユーザー) Slack
  47. 47. Real-Time Message Handling New message published Amazon SNS AWS Lambda Amazon SNS Amazon Kinesis
  48. 48. Audit CloudTrail Activity AWS Lambda Amazon S3Amazon CloudTrail Amazon SNS AWS IAM
  49. 49. Automated Infrastructure Management AWS Lambda Amazon SNS Amazon CloudWatch Alarm ec2 runInstance ecs startTask beanstalk updateApp kinesis splitShard Any API call https://aws.amazon.com/blogs/compute/scaling-amazon-ecs-services-automatically-using-amazon-cloudwatch-and-aws-lambda/
  50. 50. Forward AWS Events to External Endpoints http://danilop.net/aws/2015/07/26/sns2ifttt/ | https://github.com/danilop/SNS2IFTTT AWS Lambda Amazon SNS IFTTT via the Maker channel Amazon CloudWatch Events Auto Scaling
  51. 51. Deploy Lambda Functions https://aws.amazon.com/blogs/compute/dynamic-github-actions-with-aws-lambda/ AWS Lambda Amazon SNS GitHub Repo lambda createFn ()
  52. 52. Lambdaにおけるファンクション ✤ 単体でデプロイ・実⾏が可能 ✤ 各ファンクションは独⽴ ✤ ファンクションごとで⾔語やデータストアを選べる
  53. 53. Lambdaにおけるファンクション ✤ 単体でデプロイ・実⾏が可能 ✤ 各ファンクションは独⽴ ✤ ファンクションごとで⾔語やデータストアを選べる ⾃然とMicroservicesに近づいていく
  54. 54. サーバレスなMicroservices
  55. 55. サーバレスなMicroservices Microservice1 Microservice2 Microservice3
  56. 56. Amazon API Gateway + AWS Lambda
  57. 57. Amazon API Gateway + AWS Lambda = The easiest way to build Microservices
  58. 58. Amazon API Gateway 統⼀化されたAPIの作成と管理 APIの定義とホスティング クラウド上のリソースへの アクセス認証 AWSのAuthを活⽤ バックエンド保護のための DDoS対策やスロットリング ネットワークトラフィックの管理
  59. 59. Amazon API Gateway 複数バージョンとステージ Cognito User Poolsと連携して簡単に認証を追加 リクエスト時におけるAWS SigV4の利⽤ リクエストのスロットリングとモニタリング バックエンドとしてAWS Lambdaが利⽤可能
  60. 60. APIのコールフロー Internet Mobile apps Websites Services AWS Lambda functions AWS API Gateway cache Endpoints on Amazon EC2/AWS Elastic Beanstalk Any other publicly accessible endpoint Amazon CloudWatch monitoring API Gateway
  61. 61. 岡三オンライン証券株式会社 ✤ オンライン取引のデモプラットフォーム ✤ 実際の株式市場のデータを使った注⽂処理をAmazon API Gatewayと AWS Lambdaで提供 ✤ コストを7分の1に削減 “AWS のクラウドネイティブアーキテクチャーにより運⽤⾯での作業はほとん ど必要なくなり、コストも従来型のアーキテクチャーと⽐較して、7 分の 1 程 度にまで削減することができています。 今のところセキュリティ、実績、コスト、機能の⾯で AWS に勝るクラウドベ ンダーはありません。 ” 野崎 保 ⽒ 事業戦略担当部⻑
  62. 62. サーバレスのエコシステム Serverless Framework Claudia.js APEX Python Serverless Microframework Build, CI/CD ロギングとモニタリング 開発とデプロイ sumologic
  63. 63. Python Serverless Microframework for AWS ✤ API GatewayとAWS Lambdaを使ったAPIの作成とデプロイを簡単に ✤ Chaliceというコマンドライン ✤ コードの⾃動⽣成 ✤ IAM Policyの⾃動⽣成 ✤ Developer Preview github.com/awslabs/chalice $ chalice new-project helloworld && cd helloworld $ cat app.py from chalice import Chalice app = Chalice(app_name="helloworld") @app.route("/") def index(): return {"hello": "world"} $ chalice deploy ... Your application is available at: https://endpoint/dev $ curl https://endpoint/dev{"hello": "world"}
  64. 64. DEMO: Hello World API with Chalice
  65. 65. 最後に サーバレスは銀の弾丸ではない
  66. 66. Considerations for Serverless ✤ 全てをサーバレスにする必要はない ⎻ サーバレスにすることが⽬的ではない ⎻ Dockerによるコンテナとの使い分けを意識する ✤ 単純にサーバの代わりとは考えない ⎻ 従来の箱としてのサーバとは別物。同じように扱うとすると失敗する ✤ コストへの過剰な期待はやめる ⎻ コストの効率がいいのは事実だが、絶対的にコストが安いというわけではない ⎻ コストだけに着⽬すると思ったような効果は得られず、失敗する
  67. 67. Considerations for Serverless ✤ 各サービスの特性を理解し、活かす ⎻ まずはやってみる、 やらなければ経験値はたまらない ✤ Design for failureの考え⽅の重要性が増す ⎻ サービスを組み合わせて使うため、1コンポーネントのダウンがサービス全体 の停⽌を伴わないようにシステム全体を設計する ⎻ Fail Fast、Circuit Breaker、Graceful Degradationなど
  68. 68. 忘れてはいけないのは⽬的
  69. 69. 価値を届けること
  70. 70. Join the serverless revolution!
  71. 71. AWS re:Invent 2016 Serverless Follow Up ✤ AWS re:InventのServerlessにフォーカスしたフォローアップイベント ⎻ 12/7(⽔)19時〜 ⎻ アマゾンジャパン(とサテライト会場) ✤ 登録は以下のURLから http://aws-serverless.connpass.com/event/42950/
  72. 72. AWS Black Belt Online Seminar ✤ 11⽉の配信予定 ⎻ 11⽉9⽇(⽔) 18:00-19:00 Amazon EC2 Spot Instances ⎻ 11⽉16⽇(⽔) 18:00-19:00 Amazon API Gateway ⎻ 11⽉22⽇(⽕) 12:00-13:00 HPC 分野での AWS 活⽤ ⎻ 11⽉24⽇(⽊) 18:00-19:00 AWS CloudFormation ⎻ 11⽉29⽇(⽕) 12:00-13:00 AWS 上でのログ管理 ✤ 申し込みサイト https://aws.amazon.com/jp/about-aws/events/webinars/ (もしくは「AWS イベント」で検索)
  73. 73. Part1 http://qiita.com/advent-calendar/2016/serverless Part2 http://qiita.com/advent-calendar/2016/serverless2
  74. 74. Appendix
  75. 75. Reference architecture: IoT back end using AWS Lambda and Amazon Kinesis https://s3.amazonaws.com/awslambda-reference-architectures/iot-backend/lambda-refarch-iotbackend.pdf https://github.com/awslabs/lambda-refarch-iotbackend
  76. 76. Reference architecture: Mobile back end using AWS Lambda and Amazon API Gateway https://s3.amazonaws.com/awslambda-reference-architectures/mobile-backend/lambda-refarch-mobilebackend.pdf https://github.com/awslabs/lambda-refarch-mobilebackend
  77. 77. Reference architecture: Web applications with AWS Lambda https://s3.amazonaws.com/awslambda-reference-architectures/web-app/lambda-refarch-webapp.pdf https://github.com/awslabs/lambda-refarch-webapp
  78. 78. Reference architecture: Real-time file processing using AWS Lambda https://s3.amazonaws.com/awslambda-reference-architectures/file-processing/lambda-refarch-fileprocessing.pdf https://github.com/awslabs/lambda-refarch-fileprocessing
  79. 79. Reference architecture: Real-time stream processing using AWS Lambda and Amazon Kinesis https://s3.amazonaws.com/awslambda-reference-architectures/stream-processing/lambda-refarch-streamprocessing.pdf https://github.com/awslabs/lambda-refarch-streamprocessing

×