サーバーレスのポテンシャルとシステム表現 / How Serverless Loves Event-Driven Architecture

84907687e50c8ac2a09b02e0d1b36ab1?s=47 Tori
February 16, 2018

サーバーレスのポテンシャルとシステム表現 / How Serverless Loves Event-Driven Architecture

サーバーレスはどのようなものか、どのように捉えることが望ましいかについて話しました.

Presented at Developers Summit 2018.

84907687e50c8ac2a09b02e0d1b36ab1?s=128

Tori

February 16, 2018
Tweet

Transcript

  1. SUPINF Inc. // twitter.com/toricls 「サーバーレス」のポテンシャルとシステム表現 Yasuhiro HARA Feb. 16, 2018

  2. SUPINF Inc. // twitter.com/toricls ❤ Serverless, Docker/Container ▶︎ AWS Certified

    SA / DevOps Engineer Professional ▶︎ - Yasuhiro HARA @toricls
  3. SUPINF Inc. // twitter.com/toricls 最近のサーバーレス活動

  4. SUPINF Inc. // twitter.com/toricls github.com/toricls/pingbot 管理画面 Slack 通知 - 外形監視

    & 通知ツール -
  5. SUPINF Inc. // twitter.com/toricls rate(1 minute) invoke http/https invoke stream

    github.com/toricls/pingbot SPA Bot - 外形監視 & 通知ツール -
  6. SUPINF Inc. // twitter.com/toricls github.com/toricls/github-codebuild-integration プルリク コミット履歴 - GitHub Push/PR

    を契機に AWS CodeBuild でいい感じに CI できるようにするツール -
  7. SUPINF Inc. // twitter.com/toricls github.com/toricls/github-codebuild-integration - GitHub Push/PR を契機に AWS

    CodeBuild でいい感じに CI できるようにするツール -
  8. SUPINF Inc. // twitter.com/toricls github.com/toricls/cobolambda - COBOL on AWS Lambda

    -
  9. SUPINF Inc. // twitter.com/toricls github.com/toricls/cobolambda - COBOL on AWS Lambda

    - README.md
  10. SUPINF Inc. // twitter.com/toricls コンピューティング・リソース調達方法の歴史

  11. SUPINF Inc. // twitter.com/toricls コンピューティング・リソース調達方法の歴史を振り返る EC2 DC Container + Lambda

    物理面の調達と運用を アウトソース リソースそのものの 調達と運用を アウトソース 調達したリソースを 自分たちで管理・運用 アプリケーションのみ 自分たちで管理・運用
  12. SUPINF Inc. // twitter.com/toricls サーバーレス

  13. SUPINF Inc. // twitter.com/toricls 「サーバーレス」のメリット サーバーの事前プロビジョニングや管理なしで システムを構築できる

  14. SUPINF Inc. // twitter.com/toricls 「サーバーレス」のメリット サーバーの事前プロビジョニングや管理なしで 1. 機能を得られる 2. コード実行環境を得られる

  15. SUPINF Inc. // twitter.com/toricls 「サーバーレス」のメリット サービスベンダーに金を払うだけで 1. 機能を得られる 2. コード実行環境を得られる

  16. SUPINF Inc. // twitter.com/toricls 「サーバーレス」のメリットを構成する要素 1. 機能の提供 2. コード実行環境の提供 Functional

    SaaS / BaaS Auth0 Firebase SendGrid ... PaaS FaaS Google App Engine Heroku ... AWS Lambda Azure Functions ...
  17. SUPINF Inc. // twitter.com/toricls 「サーバーレス」のメリットを構成する要素 1. 機能の提供 2. コード実行環境の提供 Functional

    SaaS / BaaS Auth0 Firebase SendGrid ... PaaS FaaS Google App Engine Heroku ... AWS Lambda Azure Functions ... 機能と運用のアウトソース
  18. SUPINF Inc. // twitter.com/toricls 「サーバーレス」のメリットを構成する要素 1. 機能の提供 2. コード実行環境の提供 Functional

    SaaS / BaaS Auth0 Firebase SendGrid ... PaaS FaaS Google App Engine Heroku ... AWS Lambda Azure Functions ... 機能と運用のアウトソース 運用のアウトソース
  19. SUPINF Inc. // twitter.com/toricls 「サーバーレス」のメリット サーバーの事前プロビジョニングや管理なしで 1. 機能を得られる 2. コード実行環境を得られる

    主に運用上のメリット
  20. SUPINF Inc. // twitter.com/toricls 実は見えにくいメリットがある

  21. SUPINF Inc. // twitter.com/toricls 「サーバーレス」の見えにくいメリット Functional SaaS / BaaS Auth0

    Firebase SendGrid ... ▶︎ 機能性がコンポーネントとし て切り出される ▶︎ 結果、マイクロサービス的な 取り組みが必要とされる ▶︎ e.g. サーキット・ブレイカー
  22. SUPINF Inc. // twitter.com/toricls PaaS Google App Engine Heroku ...

    「サーバーレス」の見えにくいメリット ▶︎ プラットフォーム側の運用の 流儀に沿う必要がある ▶︎ 結果、アプリケーションの作 りに制約が入る ▶︎ e.g. The 12-Factor App
  23. SUPINF Inc. // twitter.com/toricls FaaS AWS Lambda Azure Functions ...

    「サーバーレス」の見えにくいメリット ▶︎ 完全なステートレスの要求 ▶︎ べき等性(*) の要求 ▶︎ ユーザーに自前でプロセス管 理をさせない設計だからこそ 得られる数々の利点
  24. SUPINF Inc. // twitter.com/toricls FaaS AWS Lambda Azure Functions ...

    「サーバーレス」の見えにくいメリット ▶︎ イベント・ドリブン プラットフォーム自体が ネイティブに
  25. SUPINF Inc. // twitter.com/toricls Event-driven Architecture

  26. SUPINF Inc. // twitter.com/toricls Event-driven ではないシステム

  27. SUPINF Inc. // twitter.com/toricls Event-driven ではないシステムの例 受注管理サービス 配送予約サービス 在庫管理サービス 注文

    Data Data
  28. SUPINF Inc. // twitter.com/toricls Event-driven ではないシステムの例 受注管理サービス 配送予約サービス 在庫管理サービス 注文

    Data Data 売上集計サービス Data こっちのコードに手を 入れなきゃいけない 感じになる
  29. SUPINF Inc. // twitter.com/toricls Event-driven なシステムではどうなるか

  30. SUPINF Inc. // twitter.com/toricls Event-driven なシステムの例 受注管理サービス 配送予約サービス 在庫管理サービス 注文

    subscribe subscribe publish event
  31. SUPINF Inc. // twitter.com/toricls 受注管理サービス 配送予約サービス 在庫管理サービス 注文 subscribe subscribe

    publish event 売上集計サービス subscribe Event-driven なシステムの例 既存のコードに 手を入れなくても サービスを増やせる (理論上は) New!
  32. SUPINF Inc. // twitter.com/toricls Dependency graphs - Service orchestration vs

    Service choreography https://www.thoughtworks.com/de/insights/blog/scaling-microservices-event-stream Orchestrated services Fully choreographed services
  33. SUPINF Inc. // twitter.com/toricls Dependency graphs - Service orchestration vs

    Service choreography https://www.thoughtworks.com/de/insights/blog/scaling-microservices-event-stream Orchestrated services Fully choreographed services ツラい
  34. SUPINF Inc. // twitter.com/toricls クラウドベンダーの イベント・ルーティングやソーシング機能が 最高にロック Event-driven ͳج൫͸Ͳ͏͢Δͷ

  35. SUPINF Inc. // twitter.com/toricls ઌ΄Ͳͷ Event-driven なシステム例を AWS で DynamoDB

    / 受注情報 subscribe subscribe subscribe Lambda / 配送予約サービス Lambda / 売上集計サービス Lambda / 在庫管理サービス
  36. SUPINF Inc. // twitter.com/toricls ઌ΄Ͳͷ Event-driven なシステム例を AWS で DynamoDB

    / 受注情報 stream stream stream Lambda / 配送予約サービス Lambda / 売上集計サービス Lambda / 在庫管理サービス Lambda / 受注管理サービス save
  37. SUPINF Inc. // twitter.com/toricls ઌ΄Ͳͷ Event-driven なシステム例を拡張 save stream Lambda

    / Data Transform stream stream stream publish Kinesis Data Streams / Data Transform
  38. SUPINF Inc. // twitter.com/toricls with TTL Event-driven なシステムの別の形 save item

    deletion event stream archive
  39. SUPINF Inc. // twitter.com/toricls with TTL Event-driven なシステムの別の形 save item

    deletion event stream archive サーバーレス・アーキテクチャーの真髄
  40. SUPINF Inc. // twitter.com/toricls 「サーバーレス」システム設計時の思考フロー

  41. SUPINF Inc. // twitter.com/toricls 「サーバーレス」なシステム設計時の思考フロー そのシステムは イベント・ドリブンな形で 表現できないか

  42. SUPINF Inc. // twitter.com/toricls 「サーバーレス」なシステム設計時の思考フロー そのシステムは イベント・ドリブンな形で 表現できないか YES

  43. SUPINF Inc. // twitter.com/toricls 「サーバーレス」なシステム設計時の思考フロー そのシステムは イベント・ドリブンな形で 表現できないか やる YES

  44. SUPINF Inc. // twitter.com/toricls 「サーバーレス」なシステム設計時の思考フロー そのシステムは イベント・ドリブンな形で 表現できないか やる YES

    NO
  45. SUPINF Inc. // twitter.com/toricls 「サーバーレス」なシステム設計時の思考フロー そのシステムは イベント・ドリブンな形で 表現できないか やる YES

    NO もう一度考える
  46. SUPINF Inc. // twitter.com/toricls 「サーバーレス」なシステム設計時の思考フロー そのシステムを イベント・ドリブンな形で 表現できないか やる YES

    NO もう一度考える なぜこんなことをするか
  47. SUPINF Inc. // twitter.com/toricls 「サーバーレス」なシステム設計時の思考フロー そのシステムを イベント・ドリブンな形で 表現できないか やる YES

    NO もう一度考える アーキテクチャー的な利点 サーバー管理からの解放
  48. SUPINF Inc. // twitter.com/toricls まとめ

  49. SUPINF Inc. // twitter.com/toricls 「サーバーレス」なシステムについてのまとめ ▶︎ 運用面だけでなくアーキテクチャー面のメリットがわりとデカい ▶︎ アーキテクチャー面のメリットはプラットフォームの特性を生かすことを意識しないと得に くいことも

    ▶︎ イベント・ドリブンな形でシステムを表現できないか?という考え方 ▶︎ サービス間の相互作用をイベントとして表現できれば ▶︎ サービス間が疎結合に保たれて ▶︎ 洗練されたアーキテクチャーが手に入る ▶︎ サーバーレス楽しい
  50. SUPINF Inc. // twitter.com/toricls おまけ

  51. SUPINF Inc. // twitter.com/toricls 私の脳内「サーバーレス」世界 サーバー管理からの解放 サーバーレス・アーキテクチャー Fully-Managed FaaS イベント・ドリブン・アーキテクチャー

    ベンダー様の思惑 ロックインのお花畑 「俺の FaaS」
  52. SUPINF Inc. // twitter.com/toricls λ おしまい