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

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

cndjp第11回勉強会で発表した資料です。
結局のところKnativeって何がどう嬉しいんだっけ?という話をしました。

Cbc297b07593321e52c75a9ebcc0f843?s=128

Kazuto Kusama

April 17, 2019
Tweet

Transcript

  1. 4.
  2. 8.

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

    クラウドファーストな世界 クラウドになって、サーバーやネットワークなどインフラの 準備はだいぶ楽になりましたよね。
  3. 10.

    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
  4. 13.

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

    クラウドファーストな世界 『クラウドに置き換えて効率化』 という思考から脱却しなければ 根本的な変革にはならない
  5. 15.
  6. 20.

    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
  7. 21.

    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
  8. 22.
  9. 28.

    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
  10. 29.

    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はサーバーレスと聞いていて、 こうだと思っていたでしょうけど
  11. 30.

    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 どっちかというとこっちが近いように思えちゃいます
  12. 32.

    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)
  13. 34.

    Knativeでは 何ができるのか 一段上の抽象化 Deployment Service ReplicaSet Pod Pod LB DNS

    k8s外 Service (Knative) Route (Knative) Configuratio n (Knative) Revision (Knative) Deploymen t ReplicaSet Pod Service コンテナをつくろう NWをつくろう
  14. 35.

    Knativeでは 何ができるのか 一段上の抽象化 Deployment Service ReplicaSet Pod Pod LB DNS

    k8s外 Service (Knative) Route (Knative) Configuratio n (Knative) Revision (Knative) Deploymen t ReplicaSet Pod Service
  15. 38.

    Serving Scale to zero, request-driven compute model • ゼロからスケールする、リクエストドリブンの コンピュートモデルを実現するコンポーネント

    ◦ サーバーレスのワークロードを素早くデプロイ ◦ 自動でスケールアップ・ダウン ◦ Istioを利用したルーティングの設定 ◦ デプロイされたコードや設定のスナップショット https://github.com/knative/docs/tree/master/serving
  16. 39.

    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
  17. 43.

    誰もが同じようなことをやる 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 自動でうまいこと やってほしい
  18. 45.

    Builds Cloud-native source to container orchestration • ソースコードからのイメージ作成を実現するコンポーネント ◦ gitリポジトリからソースコードを取得

    ◦ 複数のジョブを実行 (依存関係のインストールやテストの実 行など) ◦ コンテナイメージへの作成 ◦ イメージリポジトリへの push • Build - Ship - RunのうちBuildとShipを担う • プラガブルであり、さまざまなイメージビルドの仕組みを利用可 能 ◦ Cloud Native Buildpack ◦ Google Container Builder ◦ Bazel ◦ Kaniko ◦ などなど
  19. 46.
  20. 53.

    Riff Riff for functions • Pivotalが中心になって開発しているFaaS ( https://projectriff.io/ ) •

    Kubernetes向けに作られていたが、Knativeを ベースにするように作り替え中
  21. 60.
  22. 62.
  23. 63.