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

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

Tori Hara
February 16, 2018

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

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

Presented at Developers Summit 2018.

Tori Hara

February 16, 2018
Tweet

More Decks by Tori Hara

Other Decks in Technology

Transcript

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

    View full-size slide

  2. SUPINF Inc. // twitter.com/toricls
    ❤ Serverless, Docker/Container
    ▶︎ AWS Certified SA / DevOps Engineer Professional
    ▶︎ -
    Yasuhiro HARA
    @toricls

    View full-size slide

  3. SUPINF Inc. // twitter.com/toricls
    最近のサーバーレス活動

    View full-size slide

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

    View full-size slide

  5. SUPINF Inc. // twitter.com/toricls
    rate(1 minute)
    invoke
    http/https
    invoke
    stream
    github.com/toricls/pingbot
    SPA
    Bot
    - 外形監視 & 通知ツール -

    View full-size slide

  6. SUPINF Inc. // twitter.com/toricls
    github.com/toricls/github-codebuild-integration
    プルリク
    コミット履歴
    - GitHub Push/PR を契機に AWS CodeBuild でいい感じに CI できるようにするツール -

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  11. SUPINF Inc. // twitter.com/toricls
    コンピューティング・リソース調達方法の歴史を振り返る
    EC2
    DC Container
    +
    Lambda
    物理面の調達と運用を
    アウトソース
    リソースそのものの
    調達と運用を
    アウトソース
    調達したリソースを
    自分たちで管理・運用
    アプリケーションのみ
    自分たちで管理・運用

    View full-size slide

  12. SUPINF Inc. // twitter.com/toricls
    サーバーレス

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  21. SUPINF Inc. // twitter.com/toricls
    「サーバーレス」の見えにくいメリット
    Functional SaaS / BaaS
    Auth0
    Firebase
    SendGrid
    ...
    ▶︎ 機能性がコンポーネントとし
    て切り出される
    ▶︎ 結果、マイクロサービス的な
    取り組みが必要とされる
    ▶︎ e.g. サーキット・ブレイカー

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  24. SUPINF Inc. // twitter.com/toricls
    FaaS
    AWS Lambda
    Azure Functions
    ...
    「サーバーレス」の見えにくいメリット
    ▶︎ イベント・ドリブン
    プラットフォーム自体が
    ネイティブに

    View full-size slide

  25. SUPINF Inc. // twitter.com/toricls
    Event-driven Architecture

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  28. SUPINF Inc. // twitter.com/toricls
    Event-driven ではないシステムの例
    受注管理サービス
    配送予約サービス
    在庫管理サービス
    注文
    Data
    Data
    売上集計サービス
    Data
    こっちのコードに手を
    入れなきゃいけない
    感じになる

    View full-size slide

  29. SUPINF Inc. // twitter.com/toricls
    Event-driven なシステムではどうなるか

    View full-size slide

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

    View full-size slide

  31. SUPINF Inc. // twitter.com/toricls
    受注管理サービス
    配送予約サービス
    在庫管理サービス
    注文
    subscribe
    subscribe
    publish
    event 売上集計サービス
    subscribe
    Event-driven なシステムの例
    既存のコードに
    手を入れなくても
    サービスを増やせる
    (理論上は)
    New!

    View full-size slide

  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

    View full-size slide

  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
    ツラい

    View full-size slide

  34. SUPINF Inc. // twitter.com/toricls
    クラウドベンダーの
    イベント・ルーティングやソーシング機能が
    最高にロック
    Event-driven ͳج൫͸Ͳ͏͢Δͷ

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  37. SUPINF Inc. // twitter.com/toricls
    ઌ΄Ͳͷ Event-driven なシステム例を拡張
    save stream
    Lambda
    / Data Transform
    stream
    stream
    stream
    publish
    Kinesis Data Streams
    / Data Transform

    View full-size slide

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

    View full-size slide

  39. SUPINF Inc. // twitter.com/toricls
    with TTL
    Event-driven なシステムの別の形
    save
    item deletion event
    stream archive
    サーバーレス・アーキテクチャーの真髄

    View full-size slide

  40. SUPINF Inc. // twitter.com/toricls
    「サーバーレス」システム設計時の思考フロー

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  47. SUPINF Inc. // twitter.com/toricls
    「サーバーレス」なシステム設計時の思考フロー
    そのシステムを
    イベント・ドリブンな形で
    表現できないか
    やる
    YES
    NO
    もう一度考える
    アーキテクチャー的な利点
    サーバー管理からの解放

    View full-size slide

  48. SUPINF Inc. // twitter.com/toricls
    まとめ

    View full-size slide

  49. SUPINF Inc. // twitter.com/toricls
    「サーバーレス」なシステムについてのまとめ
    ▶︎ 運用面だけでなくアーキテクチャー面のメリットがわりとデカい
    ▶︎ アーキテクチャー面のメリットはプラットフォームの特性を生かすことを意識しないと得に
    くいことも
    ▶︎ イベント・ドリブンな形でシステムを表現できないか?という考え方
    ▶︎ サービス間の相互作用をイベントとして表現できれば
    ▶︎ サービス間が疎結合に保たれて
    ▶︎ 洗練されたアーキテクチャーが手に入る
    ▶︎ サーバーレス楽しい

    View full-size slide

  50. SUPINF Inc. // twitter.com/toricls
    おまけ

    View full-size slide

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

    View full-size slide

  52. SUPINF Inc. // twitter.com/toricls
    λ
    おしまい

    View full-size slide