Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サーバーレスの概要と応用 - プログラミング生放送勉強会 第55回@福岡

sinofseven
November 03, 2018

サーバーレスの概要と応用 - プログラミング生放送勉強会 第55回@福岡

プログラミング生放送勉強会 第55回@福岡

sinofseven

November 03, 2018
Tweet

More Decks by sinofseven

Other Decks in Technology

Transcript

  1. 自己紹介 - 夏目祐樹 (ナツメユウタ) - クラスメソッド株式会社 - サーバーレス開発部 - 福岡オフィス

    - Twitter, GitHub: @sinofeven - 趣味: 物語鑑賞, 勉強会巡り - コミュニティ - JAWS-UG 福岡 2
  2. 3

  3. 4

  4. 5

  5. 6

  6. 8

  7. イベント駆動 - サーバーレス最大の特徴 (だと個人的には思ってる) - クラウドに対するいろいろなイベントをトリガーとしてコードが走る - 例 - cronのようにコードを定時実行する

    - HTTPリクエストが来たらコードが走る - オブジェクトストレージにファイルを置いたら、コードを走らせる - NoSQLにデータを置いたら、コードを走らせる - これだけは、自前でやるのが難しい - ファイルが置かれたら自動実行するとか作れなくもないけど、 その仕組みから作ることになるから大変 16
  8. どこでサーバーレスできる? - AWS - サーバーレス代表に近い - 周辺サービスとの連携が強力 - Azure -

    Azure FunctionsとApplication Insight、Visual Studioで追い上げてるイメージ - Durable Functionの関数オーケストレーションが超強力 - GCP - ようやっとCloud FunctionsがGAされた - PuppeteerでヘッドレスChromeが動くのでWebのUIテストとかスクレイピングできそう - 他にもある 18
  9. よく使うサービス - Lambda: コードを実行する。サーバーレスの要。 - API Gateway: REST APIを作る。 -

    DynamoDB: NoSQL。データを保存。 - S3: オブジェクトストレージ。データを保存 - CloudFormation: AWSリソースをテキストで管理。 26
  10. 開発方法(2) ツールを使って - コンソールからだとコードの管理とか難しい - だからデプロイツールを使う - Serverless Framework -

    Node製, デプロイツールとしては老舗 - 実はAWS 以外の環境にも使用可能 - SAM (Serverless Application Model) - AWS 公式のツール - 実質的には、CloudFormationの拡張 28
  11. Lambdaのイベントソース - API Gateway - S3 - SNS - CognitoUserPools

    - CloudWatch Event - CloudFront - Kinesis Data Stream - SQS - StepFunction - AWS IoT - etc... 32
  12. イベントソースを種類分け 33 同期 - API Gateway - CognitoUserPools - CloudFront

    非同期 - S3 - SNS - CloudWatch Event - AWS IoT ストリーム - DynamoDB - Kinesis DataStream - SQS
  13. 種類がLambdaのリトライを決める - 同期処理 - 基本リトライしない - 非同期処理 - 最大2回 -

    Lambdaにデッドレターキューを設定していれば そちらに通知が飛ぶ - ストリーム - 問題ないデータだけ再度処理されたり、同じデータを何度もやってたり - 意図しない動作もあるから、ドキュメントで確認がしないとだめ - 再試行動作について - AWS Lambda - https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/retries-on-errors.html 34
  14. サーバーレスで便利なサービス - DynamoDB - X-Ray - StepFunctions - AWS IoT

    Core - CloudWatch - SNS - Kinesis, DynamoDB Stream, SQS - etc….. 35
  15. DynamoDB - サーバーレスだと基本になるデータストア - RCU/WCUなど覚えることも多いし、安くはない - ちゃんと使うと、結構レスポンスも早いから便利 - データモデリングのベストプラクティスも出てるし、 いろいろ情報も出てるから、怖くないよ

    - DynamoDB のベストプラクティス - Amazon DynamoDB (https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/best-practi ces.html) - マイクロサービスを成功させるためのサーバーレスアーキテクチャ設計と NoSQLデータモデリング / Serverless Architecting and NoSQL Data Modeling for Successful Microservices - Speaker Deck (https://speakerdeck.com/marcyterui/serverless-architecting-and-nosql-data-modeling-fo r-successful-microservices) 36
  16. CloudWatch Metrics - AWS リソースの使用状況とかのメトリクスを取得できる - Alartの設定もできるし、ダッシュボードも作れる - サーバーレスでよく見るのは -

    Lambdaのスロットリング - DynamoDBのRCU, WCUの使用状況 - サーバーレスに限らずAWSにおける監視の基本になる 38
  17. CloudWatch Logs - AWSにおけるLogの基盤 - LogGroupという大きなまとまりと、その下のLogStreamがある - Lambdaで考えると - LogGroupが一つのLambda関数

    - LogStreamがLambdaが実行されるコンテナ - LogStreamの中にログがある - CloudWatch LogsとLambda(やときどきKinesis)を ゴニョゴニョしたりすると、ログからのSlack通知とか作れる 39
  18. SNS (Simple Notification Service) - 受け取ったイベントをいろんなところに飛ばすサービス - Lambdaのトリガーにしたり、 HTTPリクエストを飛ばしたり、 メールを飛ばしたりできる

    - 一つのSNS Topicから複数飛ばすこともできるから間に挟んでおくと、 後から別の処理もさせたいといったときに簡単に追加できるようになる 42
  19. StepFunctions - ワークフローを作ることができるサービス - Lambda -> Lambda -> Lambda とかを簡単に管理できる

    - 条件分岐だったり、Waitだったりもできる - Waitは固定値や、Lambdaの実行結果で変更できたりする - Lambdaでは難しい、動的な指定日時実行とか使える 43
  20. DynamoDBStream, KinesisDataStream, SQS (Simple Queue Service) - 直列的にLambdaを実行することができるイベントソース - 同時実行数を低くしておけば、RDS(RDBMS)への書き込みとかできる

    - DynamoDB Stream (pull型) - DynamoDBへのData追加/変更/削除などのデータをストリームで渡せる - Kinesis Data Stream (pull型) - 大量のデータをさばくためのストリームサービス - SQS (polling型) - 分散キュー, 残念ながらLambdaトリガーではFIFOキューは使えない - データを入れてから一定時間は取り出せないようにする、 遅延キューがあり時間差のある処理でも使える 44
  21. AWS IoT Core - IoTデバイスからの通信をトリガーにして Lambdaを動かしたり、Kinesisにデータを流したりできる - MQTTを使う - Pub/Subもできるので、

    サーバーレスでリアルタイムチャットを作ることもできる - 実はIoT関係なくても使うことができる 45
  22. AWS外でも便利なものがある - 監視 - AWSリソース全体 - Datadog - Mackerel -

    Lambdaの監視 - Thundra - IOpipe - サーバーレスアプリケーションの監視 - Epsagon 46 - 統合認証プラットフォーム - Auth0