Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

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

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/cobolambda - COBOL on AWS Lambda -

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

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 「サーバーレス」のメリット サーバーの事前プロビジョニングや管理なしで 1. 機能を得られる 2. コード実行環境を得られる

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

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 おまけ

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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