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

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

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

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

Kazuto Kusama

April 17, 2019
Tweet

More Decks by Kazuto Kusama

Other Decks in Technology

Transcript

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

    View Slide

  2. KAZUTO KUSAMA
    @jacopen
    2
    Solutions Architect @

    View Slide

  3. Knative試したことある人?

    View Slide

  4. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  15. CLOUD

    View Slide

  16. CLOUD NATIVE
    +

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  22. View Slide

  23. テクノロジースタック

    View Slide

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

    View Slide

  25. こんなの出ました

    View Slide

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

    View Slide

  27. なんか思ってたんと違う

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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)

    View Slide

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

    View Slide

  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をつくろう

    View Slide

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

    View Slide

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

    View Slide

  37. Custom Resources
    KnativeはCRDモンスター

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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
    自動でうまいこと
    やってほしい

    View Slide

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

    View Slide

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

    ○ Cloud Native Buildpack
    ○ Google Container Builder
    ○ Bazel
    ○ Kaniko
    ○ などなど

    View Slide

  46. DEMO

    View Slide

  47. Coding
    Test
    Build
    Delivery
    Monitoring
    Analyze
    負荷に応じたスケール
    コミットがあったら自動でテス

    イベントドリブンな
    アーキテクチャ
    が作られたら自動で
    の更新

    View Slide

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

    View Slide

  49. Eventing
    Universal subscription, delivery and
    management of events

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  54. KLR
    (Knative Lambda Runtimes)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  58. Coding
    Test
    Build
    Delivery
    Monitoring
    Analyze

    View Slide

  59. 商用展開

    View Slide

  60. View Slide

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

    View Slide

  62. View Slide

  63. おわり

    View Slide