Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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 できるようにするツール -

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

SUPINF Inc. // twitter.com/toricls e.g. Express アプリを API Gateway + Lambda + RDS する Lambda API Gateway RDS ❄ ίʔϧυɾελʔτ͕͊͊͊͊

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

SUPINF Inc. // twitter.com/toricls e.g. Express アプリを API Gateway + Lambda + RDS する API Gateway RDS ίωΫγϣϯ਺͕͊͊͊͊͊

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

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

Slide 74

Slide 74 text

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

Slide 75

Slide 75 text

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

Slide 76

Slide 76 text

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

Slide 77

Slide 77 text

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

Slide 78

Slide 78 text

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

Slide 79

Slide 79 text

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

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

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

Slide 82

Slide 82 text

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

Slide 83

Slide 83 text

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

Slide 84

Slide 84 text

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

Slide 85

Slide 85 text

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

Slide 86

Slide 86 text

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

Slide 87

Slide 87 text

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

Slide 88

Slide 88 text

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

Slide 89

Slide 89 text

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

Slide 90

Slide 90 text

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

Slide 91

Slide 91 text

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

Slide 92

Slide 92 text

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

Slide 93

Slide 93 text

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