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

サーバーレスについて語るときに僕の語ること / What I Talk About When I Talk About Serverless and its Potential

サーバーレスについて語るときに僕の語ること / What I Talk About When I Talk About Serverless and its Potential

サーバーレスについて最近思っていることをポエムしました. サーバーレス過激派です.

Presented at Serverlessconf Tokyo 2017.

Tori Hara
PRO

November 03, 2017
Tweet

More Decks by Tori Hara

Other Decks in Technology

Transcript

  1. SUPINF Inc. // twitter.com/toricls
    サーバーレスについて語るときに僕の語ること
    Yasuhiro HARA
    Nov. 3, 2017
    Serverlessconf 版

    View Slide

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

    View Slide

  3. SUPINF Inc. // twitter.com/toricls
    最近のサーバーレス活動
    pingbot
    github-codebuild-integration
    cobolambda
    - 外形監視 & 通知ツール -
    - GitHub Push/PR を契機に AWS CodeBuild でいい感じに CI できるようにするツール -
    - COBOL が AWS Lambda 上で動く夢のツール -

    View Slide

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

    View Slide

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

    View Slide

  6. SUPINF Inc. // twitter.com/toricls
    ▶︎ 2016年7月実装、9月公開
    ▶︎ サーバーレス・アーキテクチャーの POC
    ▶︎ S3 バケットへの SPA デプロイは Bash
    ▶︎ それ以外のリソースは全部 CloudFormation
    github.com/toricls/pingbot
    - 外形監視 & 通知ツール -

    View Slide

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

    View Slide

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

    View Slide

  9. SUPINF Inc. // twitter.com/toricls
    ▶︎ AWS CodeBuild は並列数じゃなくて実行時間課金 :)
    ▶︎ CI 結果でプルリクのマージ可否を制御したい
    ▶︎ AWS SAM & CloudFormation でデプロイ
    ▶︎ GitHub Webhook も CloudFormation で管理・設定
    github.com/toricls/github-codebuild-integration
    - GitHub Push/PR を契機に AWS CodeBuild でいい感じに CI できるようにするツール -

    View Slide

  10. SUPINF Inc. // twitter.com/toricls
    github.com/toricls/cobolambda
    - COBOL が AWS Lambda 上で動く夢のツール -

    View Slide

  11. SUPINF Inc. // twitter.com/toricls
    今日のお話

    View Slide

  12. SUPINF Inc. // twitter.com/toricls
    「サーバーレス」ってなんですか?

    View Slide

  13. SUPINF Inc. // twitter.com/toricls
    昨今の「サーバーレス」に思うこと

    View Slide

  14. SUPINF Inc. // twitter.com/toricls
    昨今の「サーバーレス」に思うこと
    A ͞Μ (Ծ໊)

    View Slide

  15. SUPINF Inc. // twitter.com/toricls
    昨今の「サーバーレス」に思うこと
    このイケてる SaaS を
    利用すれば
    ナウいサーバーレスだ!
    A ͞Μ (Ծ໊)

    View Slide

  16. SUPINF Inc. // twitter.com/toricls
    昨今の「サーバーレス」に思うこと
    このイケてる SaaS を
    利用すれば
    ナウいサーバーレスだ!
    A ͞Μ (Ծ໊)
    mBaaS もヤングや!

    View Slide

  17. SUPINF Inc. // twitter.com/toricls
    昨今の「サーバーレス」に思うこと
    このイケてる SaaS を
    利用すれば
    ナウいサーバーレスだ!
    A ͞Μ (Ծ໊)
    mBaaS もヤングや!
    Functional SaaS
    フゥゥウ〜!!

    View Slide

  18. SUPINF Inc. // twitter.com/toricls
    今までもずっとやってた方法論のことを
    サーバーレスって呼んでるんですか?
    昨今の「サーバーレス」に思うこと

    View Slide

  19. SUPINF Inc. // twitter.com/toricls
    昨今の「サーバーレス」に思うこと
    このイケてる SaaS を
    Lambda と組み合わせて
    ナウいサーバーレスだ!
    A ͞Μ (Ծ໊)

    View Slide

  20. SUPINF Inc. // twitter.com/toricls
    昨今の「サーバーレス」に思うこと
    このイケてる SaaS を
    Lambda と組み合わせて
    ナウいサーバーレスだ!
    A ͞Μ (Ծ໊)
    うーん..

    View Slide

  21. SUPINF Inc. // twitter.com/toricls
    SaaS を含んだ構成 = サーバーレスじゃない
    と言っているわけではありません

    View Slide

  22. SUPINF Inc. // twitter.com/toricls
    Lambda だって言ってみれば SaaS です

    View Slide

  23. SUPINF Inc. // twitter.com/toricls
    昨今の「サーバーレス」に思うこと
    SaaS や Lambda を
    フル活用して
    サーバー管理から
    解放されましょう!
    B ͞Μ (Ծ໊)

    View Slide

  24. SUPINF Inc. // twitter.com/toricls
    SaaS や Lambda を
    フル活用して
    サーバー管理から
    解放されましょう!
    B ͞Μ (Ծ໊)
    昨今の「サーバーレス」に思うこと
    間違っていないと思う

    View Slide

  25. SUPINF Inc. // twitter.com/toricls
    昨今の「サーバーレス」に思うこと
    SaaS や Lambda を
    フル活用して
    サーバー管理から
    解放されましょう!
    B ͞Μ (Ծ໊)
    管理しなきゃいけないサーバーは確かにない

    View Slide

  26. SUPINF Inc. // twitter.com/toricls
    昨今の「サーバーレス」に思うこと
    SaaS や Lambda を
    フル活用して
    サーバー管理から
    解放されましょう!
    B ͞Μ (Ծ໊)
    サーバー管理から解放されるの、とても良い

    View Slide

  27. SUPINF Inc. // twitter.com/toricls
    昨今の「サーバーレス」に思うこと
    SaaS や Lambda を
    フル活用して
    サーバー管理から
    解放されましょう!
    B ͞Μ (Ծ໊)
    セキュリティ・パッチとか当てなくていいの、
    最高よね

    View Slide

  28. SUPINF Inc. // twitter.com/toricls
    「サーバーレス」のメイン・トピックはそこなの?

    View Slide

  29. SUPINF Inc. // twitter.com/toricls
    「サーバー管理からの解放」ってそんなに喋ることある?

    View Slide

  30. SUPINF Inc. // twitter.com/toricls
    もしも「サーバー管理からの解放」が主題なら

    View Slide

  31. SUPINF Inc. // twitter.com/toricls
    e.g. いつもの Express アプリケーションを
    API Gateway と Lambda に載せて Yeah
    もしも「サーバー管理からの解放」がサーバーレスの主題なら

    View Slide

  32. SUPINF Inc. // twitter.com/toricls
    e.g. Express アプリを API Gateway + Lambda + RDS する
    Lambda
    API Gateway RDS

    View Slide

  33. SUPINF Inc. // twitter.com/toricls
    e.g. Express アプリを API Gateway + Lambda + RDS する
    Lambda
    API Gateway RDS

    ίʔϧυɾελʔτ͕͊͊͊͊

    View Slide

  34. SUPINF Inc. // twitter.com/toricls
    e.g. Express アプリを API Gateway + Lambda + RDS する
    Lambda
    API Gateway RDS
    rate(1 minute)

    View Slide

  35. SUPINF Inc. // twitter.com/toricls
    e.g. Express アプリを API Gateway + Lambda + RDS する
    いやいやいや

    View Slide

  36. SUPINF Inc. // twitter.com/toricls
    Lambda
    e.g. Express アプリを API Gateway + Lambda + RDS する
    API Gateway RDS

    View Slide

  37. SUPINF Inc. // twitter.com/toricls
    e.g. Express アプリを API Gateway + Lambda + RDS する
    API Gateway RDS

    View Slide

  38. SUPINF Inc. // twitter.com/toricls
    e.g. Express アプリを API Gateway + Lambda + RDS する
    API Gateway RDS

    ίωΫγϣϯ਺͕͊͊͊͊͊

    View Slide

  39. SUPINF Inc. // twitter.com/toricls
    e.g. Express アプリを API Gateway + Lambda + RDS する
    API Gateway RDS

    View Slide

  40. SUPINF Inc. // twitter.com/toricls
    e.g. Express アプリを API Gateway + Lambda + RDS する
    API Gateway RDS
    EC2

    View Slide

  41. SUPINF Inc. // twitter.com/toricls
    e.g. Express アプリを API Gateway + Lambda + RDS する
    謎のコネクション・プーリング
    ミドルウェア

    View Slide

  42. SUPINF Inc. // twitter.com/toricls
    e.g. Express アプリを API Gateway + Lambda + RDS する

    View Slide

  43. SUPINF Inc. // twitter.com/toricls
    e.g. Express アプリを API Gateway + Lambda + RDS する
    まじかよ

    View Slide

  44. SUPINF Inc. // twitter.com/toricls
    e.g. Express アプリを API Gateway + Lambda + RDS する
    積み重なるワークアラウンド
    犠牲になる機能性

    View Slide

  45. SUPINF Inc. // twitter.com/toricls
    「サーバー管理からの解放」
    という文脈"だけ"で
    サーバーレスを捉えている
    なぜこんな悲劇が起きたのか

    View Slide

  46. SUPINF Inc. // twitter.com/toricls
    これまでのアーキテクチャーや方法論を
    そのまま持ち込もうとしている
    なぜこんな悲劇が起きたのか

    View Slide

  47. SUPINF Inc. // twitter.com/toricls
    ·ͩҾ͖ฦͤ·͢

    View Slide

  48. SUPINF Inc. // twitter.com/toricls
    システムの価値を差別化するものは何か

    View Slide

  49. SUPINF Inc. // twitter.com/toricls
    何がシステムの価値を差別化するか
    自分たちのシステムのために書かれたコード

    View Slide

  50. SUPINF Inc. // twitter.com/toricls
    May 26 2016, Serverlessconf NYC - https://twitter.com/serverlessconf/status/735839492431548418

    View Slide

  51. SUPINF Inc. // twitter.com/toricls
    ▶︎ Function are the unit of deployment and scaling.
    ▶︎ No machines, VMs, or containers visible in the programming model.
    ▶︎ Permanent storage lives elsewhere.
    ▶︎ Scales per request; Users cannot over- or under-provision capacity.
    ▶︎ Never pay for idle (no cold servers/containers or their costs).
    ▶︎ Implicitly fault-tolerant because functions can run anywhere.
    ▶︎ BYOC - Bring Your Own Code.
    ▶︎ Metrics and logging are a universal right.
    Apr 19 2016, AWS Chicago Summit - https://www.slideshare.net/AmazonWebServices/getting-started-with-aws-lambda-and-the-serverless-cloud/29
    The Serverless Manifesto

    View Slide

  52. SUPINF Inc. // twitter.com/toricls
    自分たちのコードを動かす Managed FaaS を
    最大限活かせるアーキテクチャーは
    どうすれば実現できるのか
    「サーバーレス」について本当に議論したいこと

    View Slide

  53. SUPINF Inc. // twitter.com/toricls
    そのアーキテクチャーは
    どのようなものなのか
    「サーバーレス」について本当に議論したいこと

    View Slide

  54. SUPINF Inc. // twitter.com/toricls
    Event Driven Architecture

    View Slide

  55. SUPINF Inc. // twitter.com/toricls
    Event Driven ではないシステム

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  59. SUPINF Inc. // twitter.com/toricls
    Event Driven ではないシステムの例
    受注管理サービス
    配送予約サービス
    在庫管理サービス
    注文
    Data
    Data
    売上集計サービス
    New!

    View Slide

  60. SUPINF Inc. // twitter.com/toricls
    Event Driven ではないシステムの例
    受注管理サービス
    配送予約サービス
    在庫管理サービス
    注文
    Data
    Data
    売上集計サービス
    Data
    New!

    View Slide

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

    View Slide

  62. SUPINF Inc. // twitter.com/toricls
    Event Driven なシステムではどうなるか

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  68. SUPINF Inc. // twitter.com/toricls
    受注管理サービス
    配送予約サービス
    在庫管理サービス
    注文
    subscribe
    subscribe
    publish
    event 売上集計サービス
    Event Driven なシステムの例
    New!

    View Slide

  69. SUPINF Inc. // twitter.com/toricls
    受注管理サービス
    配送予約サービス
    在庫管理サービス
    注文
    subscribe
    subscribe
    publish
    event 売上集計サービス
    subscribe
    Event Driven なシステムの例
    New!

    View Slide

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

    View Slide

  71. SUPINF Inc. // twitter.com/toricls
    Event Driven なシステムにおける
    「データ」の考え方

    View Slide

  72. SUPINF Inc. // twitter.com/toricls
    受注管理サービス
    publish
    event
    配送予約サービス
    在庫管理サービス
    subscribe
    subscribe
    売上集計サービス
    subscribe
    Event Sourcing という考え方
    DB
    注文イベント

    View Slide

  73. SUPINF Inc. // twitter.com/toricls
    受注管理サービス
    publish
    event
    配送予約サービス
    在庫管理サービス
    subscribe
    subscribe
    売上集計サービス
    subscribe
    Event Sourcing という考え方
    DB
    注文イベント
    Event Sourcing
    Event Store

    View Slide

  74. SUPINF Inc. // twitter.com/toricls
    受注管理サービス
    publish
    event
    配送予約サービス
    在庫管理サービス
    subscribe
    subscribe
    売上集計サービス
    subscribe
    Event Sourcing という考え方
    DB
    注文イベント
    Event Sourcing
    Event Store
    全イベントの再生によるデータ復元

    View Slide

  75. SUPINF Inc. // twitter.com/toricls
    みなさんの心の声が聞こえます

    View Slide

  76. SUPINF Inc. // twitter.com/toricls
    やりたいなら
    勝手にイベント・ドリブンしなよ
    みなさんの心の声が聞こえます

    View Slide

  77. SUPINF Inc. // twitter.com/toricls
    特に議論することなくない?
    みなさんの心の声が聞こえます

    View Slide

  78. SUPINF Inc. // twitter.com/toricls
    いやいや

    View Slide

  79. SUPINF Inc. // twitter.com/toricls
    受注管理サービス
    配送予約サービス
    在庫管理サービス
    注文
    subscribe
    subscribe
    publish
    event 売上集計サービス
    subscribe
    Event Driven なシステム (再掲)

    View Slide

  80. SUPINF Inc. // twitter.com/toricls
    Event Driven なシステムの実現のためにもっと思考が必要なところの例
    ▶︎ 「イベント・ディスカバリ」どうする? (like サービス・ディスカバリ)
    ▶︎ 在庫管理システムにイベントが流れた時点で在庫がなかったら?
    ▶︎ 在庫不足イベントが発火してそれに Subscribe してる受注管理サービス
    が注文キャンセルしてそのイベントを Publish してキャンセルイベントに
    Subscribe している XX システムが jふぃ̌̎jふぃあjwrじょ̎̏ckまm

    View Slide

  81. SUPINF Inc. // twitter.com/toricls
    受注管理サービス
    publish
    event
    配送予約サービス
    在庫管理サービス
    subscribe
    subscribe
    売上集計サービス
    subscribe
    Event Driven なシステムの実現のためにもっと思考が必要なところの例
    DB
    注文イベント
    Event Sourcing
    Event Store
    こいつらは何者なのか

    View Slide

  82. SUPINF Inc. // twitter.com/toricls
    FaaS と Event Driven の
    相性がいいことは
    なんとなくみんな分かっている

    View Slide

  83. SUPINF Inc. // twitter.com/toricls
    それぞれが模索していく中で面白いものが少しずつ出始めている
    ▶︎ Durable Functions
    ▶︎
    Azure Cloud Functions のエクステンションという位置付け
    ▶︎
    関数内のステートの復元をイベントストアからのリプレイという手段で実現している
    ▶︎
    https://azure.github.io/azure-functions-durable-extension/
    ▶︎ Event Gateway
    ▶︎
    Serverless 社による「イベント・ドリブン」への解をプロダクトにする試み
    ▶︎
    Function の呼び出し契機をユニバーサルなイベントとして表現しようとしている
    ▶︎
    https://github.com/serverless/event-gateway

    View Slide

  84. SUPINF Inc. // twitter.com/toricls
    でも
    ▶︎ 実現のためのベスト・プラクティスはまだない
    ▶︎ 実現のために必要なシステム上のコンポーネントも揃っていない
    ▶︎ そもそも何が必要なのかもまだはっきりしていない
    ▶︎ と、僕は思っているのです

    View Slide

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

    View Slide

  86. SUPINF Inc. // twitter.com/toricls
    おまけ「本ポエムの図解」

    View Slide

  87. SUPINF Inc. // twitter.com/toricls
    私の脳内「サーバーレス」世界

    View Slide

  88. SUPINF Inc. // twitter.com/toricls
    私の脳内「サーバーレス」世界
    サーバーレス・アプリケーション

    View Slide

  89. SUPINF Inc. // twitter.com/toricls
    私の脳内「サーバーレス」世界
    サーバーレス・アプリケーション サーバーレス・アーキテクチャー

    View Slide

  90. SUPINF Inc. // twitter.com/toricls
    私の脳内「サーバーレス」世界
    サーバーレス・アプリケーション サーバーレス・アーキテクチャー
    FaaS

    View Slide

  91. SUPINF Inc. // twitter.com/toricls
    私の脳内「サーバーレス」世界
    サーバーレス・アプリケーション サーバーレス・アーキテクチャー
    FaaS
    サーバーレス・マニフェスト
    イベント・ドリブン・アーキテクチャー

    View Slide

  92. SUPINF Inc. // twitter.com/toricls
    私の脳内「サーバーレス」世界
    サーバーレス・アプリケーション サーバーレス・アーキテクチャー
    FaaS
    サーバーレス・マニフェスト
    イベント・ドリブン・アーキテクチャー
    ベンダー様の思惑

    View Slide

  93. SUPINF Inc. // twitter.com/toricls
    私の脳内「サーバーレス」世界
    サーバーレス・アプリケーション サーバーレス・アーキテクチャー
    FaaS
    サーバーレス・マニフェスト
    イベント・ドリブン・アーキテクチャー
    ベンダー様の思惑
    「俺たちの FaaS」

    View Slide