Slide 1

Slide 1 text

結局のところKnativeって何者?

Slide 2

Slide 2 text

KAZUTO KUSAMA @jacopen 2 Solutions Architect @

Slide 3

Slide 3 text

Knative試したことある人?

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

5 Docker=クラウドネイティブ Kubernetes=クラウドネイティブ ではない。 ツールやプラットフォームの導入が クラウドネイティブになるわけじゃない クラウドによって最大限に強化されるという マインドセットを持つこと=クラウドネイティブ

Slide 6

Slide 6 text

使った分だけ 課金 初期費用が 少ない リソースの 調達が早い スケール しやすい 運用を 肩代わり クラウドの 本質?

Slide 7

Slide 7 text

クラウドは人間を 強化する

Slide 8

Slide 8 text

サーバーの調達 OS・ミドルウェアの 設定 ソフトウェアの デプロイ ストレージ・ ネットワークの 設定 その他いろいろ これまでの世界 クラウドファーストな世界 クラウドになって、サーバーやネットワークなどインフラの 準備はだいぶ楽になりましたよね。

Slide 9

Slide 9 text

クラウドは人間を 強化する なので、クラウドという便利な道具で人間は強化されたわ けです。でも、こんな数字があります。

Slide 10

Slide 10 text

L1キャッシュ参照 分岐予測ミス L2キャッシュ参照 Mutexのlock/unlock メモリ参照 1KBをZIP圧縮 1Gbpsで1KB送る メモリから1MB連続で読む 同一のデータセンタ内のマシンと通信1往復 HDDシーク HDDから1MB読み出し カリフォルニアとオランダ間で通信1往復 上司の許可取ってサーバー1台構築 0.5 ns 5 ns 7 ns 25 ns 100 ns 3,000 ns 10,000 ns 250,000 ns 500,000 ns 10,000,000 ns 20,000,000 ns 150,000,000 ns 259,200,000,000,000 ns かかる時間 Latency Numbers Every Programmer Should Know https://gist.github.com/jboner/2841832

Slide 11

Slide 11 text

サーバーの調達 OS・ミドルウェアの 設定 ソフトウェアの デプロイ ストレージ・ ネットワークの 設定 その他いろいろ これまでの世界 クラウドファーストな世界 ボトルネック

Slide 12

Slide 12 text

μs, msの世界で人間が介在すること自体が ボトルネック

Slide 13

Slide 13 text

サーバーの調達 OS・ミドルウェアの 設定 ソフトウェアの デプロイ ストレージ・ ネットワークの 設定 その他いろいろ これまでの世界 クラウドファーストな世界 『クラウドに置き換えて効率化』 という思考から脱却しなければ 根本的な変革にはならない

Slide 14

Slide 14 text

クラウドは人間を 強化する

Slide 15

Slide 15 text

CLOUD

Slide 16

Slide 16 text

CLOUD NATIVE +

Slide 17

Slide 17 text

クラウドは人間を 強化する

Slide 18

Slide 18 text

『クラウドネイティブな思考』の最たる例が サーバーレス

Slide 19

Slide 19 text

Coding Test Build Delivery Monitoring Analyze 何も考えずにやると すぐ人がボトルネックに

Slide 20

Slide 20 text

IaaS Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares 自由度が高いプラットフォームもいいけれど CaaS PaaS FaaS

Slide 21

Slide 21 text

IaaS Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares よく抽象化され、生産性の高い仕組みもいい(Opinionated) 自由度が高いプラットフォームもいいけれど CaaS PaaS FaaS

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

テクノロジースタック

Slide 24

Slide 24 text

なぜ最初にクラウドネイティブの話をしたか Knativeは “Kubernetes上で動くサーバーレス” とよく言われるが “Kubernetesの上で動くLambdaみたいなもの” と考えてしまうと、メリットが伝わらない

Slide 25

Slide 25 text

こんなの出ました

Slide 26

Slide 26 text

DEMO Cloud Runを使ったデモをしました。 簡単な操作でアプリのデプロイが出来た一方、 これは”サーバーレス”なんだろうか? と 思ってしまいます。

Slide 27

Slide 27 text

なんか思ってたんと違う

Slide 28

Slide 28 text

IaaS Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares 生産性や標準化の向上 自由度、柔軟性の向上 CaaS PaaS FaaS

Slide 29

Slide 29 text

IaaS Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares 生産性や標準化の向上 自由度、柔軟性の向上 CaaS PaaS FaaS Knativeはサーバーレスと聞いていて、 こうだと思っていたでしょうけど

Slide 30

Slide 30 text

IaaS Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares Functions Applications Runtimes Containers Operating Systems Virtualization Hardwares 生産性や標準化の向上 自由度、柔軟性の向上 CaaS PaaS FaaS どっちかというとこっちが近いように思えちゃいます

Slide 31

Slide 31 text

https://www.youtube.com/watch?v=8Pd20Y4OMkE

Slide 32

Slide 32 text

KnativeのいうServerless ≠ FaaS ● ServerlessといってもAWS LambdaやGoogle Cloud Functionsのよ うなFaaSを指すわけではない ● Knativeが指すServerless Workloadとは ○ ステートレス ○ プロセスのスケールアウトモデルが適用可能 ○ 主にアプリケーションレベル(L7、例えばHTTP)から リクエストされるトラフィックによって駆動 ● CNCF Serverless Whitepapterの定義とはズレる (https://github.com/cncf/wg-serverless/tree/master/whitepapers/serverless-overview)

Slide 33

Slide 33 text

Microservices Platform on Kubernetes at Mercari https://speakerdeck.com/tcnksm/microservices-platform-on-kubernetes-at-mercari

Slide 34

Slide 34 text

Knativeでは 何ができるのか 一段上の抽象化 Deployment Service ReplicaSet Pod Pod LB DNS k8s外 Service (Knative) Route (Knative) Configuratio n (Knative) Revision (Knative) Deploymen t ReplicaSet Pod Service コンテナをつくろう NWをつくろう

Slide 35

Slide 35 text

Knativeでは 何ができるのか 一段上の抽象化 Deployment Service ReplicaSet Pod Pod LB DNS k8s外 Service (Knative) Route (Knative) Configuratio n (Knative) Revision (Knative) Deploymen t ReplicaSet Pod Service

Slide 36

Slide 36 text

Custom Resources Kubernetesは自前のリソースと、そのコントローラを追加することができる。 それがCustom Resources Kubernetesネイティブな機能拡張手段 https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/

Slide 37

Slide 37 text

Custom Resources KnativeはCRDモンスター

Slide 38

Slide 38 text

Serving Scale to zero, request-driven compute model ● ゼロからスケールする、リクエストドリブンの コンピュートモデルを実現するコンポーネント ○ サーバーレスのワークロードを素早くデプロイ ○ 自動でスケールアップ・ダウン ○ Istioを利用したルーティングの設定 ○ デプロイされたコードや設定のスナップショット https://github.com/knative/docs/tree/master/serving

Slide 39

Slide 39 text

Serving Scale to zero, request-driven compute model ● 4つのCustom Resourceを用いて実現 ○ Service - service.serving.knative.dev ○ Route - route.serving.knative.dev ○ Configuration - configuration.serving.knative.dev ○ Revision - revision.serving.knative.dev https://github.com/knative/docs/tree/master/serving

Slide 40

Slide 40 text

DEMO Cloud Runと、Cloud Run on GKEと、 Pivotal Container Serviceの上にKnativeをデプロイ した環境で比較をしました。 同じように利用できることが分かります。

Slide 41

Slide 41 text

https://twitter.com/ahmetb/status/1116041166359654400

Slide 42

Slide 42 text

Coding Test Build Delivery Monitoring Analyze イメージのビルド

Slide 43

Slide 43 text

誰もが同じようなことをやる Dockerfileの作成 docker build docker push Kubernetes manifestの作成 kubectl apply Dockerfileの作成 docker build docker push Kubernetes manifestの作成 kubectl apply Dockerfileの作成 docker build docker push Kubernetes manifestの作成 kubectl apply 自動でうまいこと やってほしい

Slide 44

Slide 44 text

抽象化すればいいじゃない 自動化すればいいじゃない

Slide 45

Slide 45 text

Builds Cloud-native source to container orchestration ● ソースコードからのイメージ作成を実現するコンポーネント ○ gitリポジトリからソースコードを取得 ○ 複数のジョブを実行 (依存関係のインストールやテストの実 行など) ○ コンテナイメージへの作成 ○ イメージリポジトリへの push ● Build - Ship - RunのうちBuildとShipを担う ● プラガブルであり、さまざまなイメージビルドの仕組みを利用可 能 ○ Cloud Native Buildpack ○ Google Container Builder ○ Bazel ○ Kaniko ○ などなど

Slide 46

Slide 46 text

DEMO

Slide 47

Slide 47 text

Coding Test Build Delivery Monitoring Analyze 負荷に応じたスケール コミットがあったら自動でテス ト イベントドリブンな アーキテクチャ が作られたら自動で の更新

Slide 48

Slide 48 text

Serverless Architecture API Gateway S3 Dynamo DB SNS SES Lambda イベント イベント

Slide 49

Slide 49 text

Eventing Universal subscription, delivery and management of events

Slide 50

Slide 50 text

https://www.slideshare.net/linecorp/lines-private-cloud-meet-cloud-native-world

Slide 51

Slide 51 text

https://www.slideshare.net/linecorp/lines-private-cloud-meet-cloud-native-world

Slide 52

Slide 52 text

https://www.slideshare.net/linecorp/lines-private-cloud-meet-cloud-native-world

Slide 53

Slide 53 text

Riff Riff for functions ● Pivotalが中心になって開発しているFaaS ( https://projectriff.io/ ) ● Kubernetes向けに作られていたが、Knativeを ベースにするように作り替え中

Slide 54

Slide 54 text

KLR (Knative Lambda Runtimes)

Slide 55

Slide 55 text

Kubernetes, Serverless, and You (Cloud Next '18) https://www.youtube.com/watch?v=LtELzpw1l1M Knative - Serverless workloadのためのBuilding Block

Slide 56

Slide 56 text

“Building Block” https://content.pivotal.io/blog/knative-powerful-building-blocks-for-a-portable-function-platfor m

Slide 57

Slide 57 text

Cloud Nativeのための Building Block Yoshizumi Endo https://www.flickr.com/photos/yendo0206/5041788308/ (CC BY-SA 2.0)

Slide 58

Slide 58 text

Coding Test Build Delivery Monitoring Analyze

Slide 59

Slide 59 text

商用展開

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

Pivotal Function Service Pivotal Container Service(PKS) の上で動作 Knative+Riffによる商用Serverless Platform + = + + =

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

おわり