コンテナベースサーバーレスプラットフォーム
「Knative」は
Serverlessなのか?
青柳 英明
2018/11/16
Serverless Meetup Fukuoka #3 - LT
自己紹介
青柳 英明
クラス: オンプレインフラおじさん
(サーバーフルおじさん)
レベル: Lv20
JAWS-UG福岡 Fukuoka.NET (ふくてん)
Knative
・ Google Cloud Next ‘18 で発表
・ Kubernetes をベースとしたサーバーレスプラットフォーム
・ Google、Pivotal、IBM、Red Hat、Cisco 等が開発する
OSS であり、GCP のプロダクトという訳ではない
(AKS、IKS、OpenShift、etc. 向けのインストール手順も提供)
そもそも 「Serverless」 とは?
[狭義]
≒ FaaS
「サーバー管理が不要な」 コンピューティングサービス
[広義]
FaaS や Functional SaaS を組み合わせたアーキテクチャ
FaaS と コンテナ の違い ①
FaaS:
呼び出された時のみコンピューティング資産が使われる
コンテナ(一般的な):
常時起動してリクエストを待つ
FaaS と コンテナ の違い ①
FaaS: 呼び出された時のみコンピューティング資産が使われる
コンテナ: 常時起動してリクエストを待つ
Knative 「Serving」 コンポーネント
「0」へのスケールイン
・ 一定時間リクエストが無い場合、コンテナ起動数を「0」にする
・ リクエストが来たら起動する
当然、コールドスタートによるタイムラグはあるが… それってFaaSでも同じですよね?
FaaS と コンテナ の違い ②
FaaS:
イベント契機(トリガ)による実行
(例 AWS Lambdaの場合: S3、DynamoDB、Kinesis、SNS、SES、SQS、etc.)
コンテナ(一般的な):
基本は REST、gRPC などの
Web API によるリクエスト/レスポンス
FaaS と コンテナ の違い ②
FaaS: イベント契機(トリガ)による実行
コンテナ: REST、gRPC などの Web API によるリクエスト/レスポンス
Knative 「Eventing」 コンポーネント
メッセージングシステムと連係してコンテナを起動させる
・ Apache Kafka ・ CNCF NATS ・ GCP Pub/Sub
ストレージ/DB更新のトリガは用意されていない
・ 現状はメッセージングシステムを介すことにより実現可能
・ 将来的には実装される?
FaaS と コンテナ の違い ③
FaaS:
実行単位は「関数」
→ 開発者はコードを書くだけで実行可能
コンテナ(一般的な):
実行単位は「コンテナ」
→ コンテナイメージの準備が必要
FaaS と コンテナ の違い ③
FaaS: 実行単位は「関数」、開発者はコードを書くだけで実行可能
コンテナ: 実行単位は「コンテナ」、コンテナイメージの準備が必要
Knative 「Build」 コンポーネント
code
GitHub
build/push
Bazel
Buildah
BuildKit
Buildpack
Jib
Kaniko
Build Template
Registry
(Public/Private)
pull/run
Knative
Serving
なるほど、Knative って多少は FaaS 的かも…
けど、
・ 「0-スケールイン」 があるとは言え、
基盤となる Kubernetes の費用がかかるよね…
・ Kubernetes や Istio を管理するインフラ部隊が必要…
・ FaaS のような手軽さがない… (YAMLとの格闘)
そこで、
「GKE serverless add-on」
・ Knative と同時に発表
・ 「マネージド Knative」 的なものになると言われている
ただし、現在アルファプレビュー中のため詳細は明らかになっていない
Knative が目指す世界(?)
@IT: Googleのウルス・ヘルツル氏に聞いた、
「IstioやKnativeで目指すのはクラウドのアンロックイン」
http://www.atmarkit.co.jp/ait/articles/1808/28/news036.html
・ サーバーレスを使うとベンダロックインされるのか?
・ ベンダロックイン、上等じゃないか
…等の意見はあるかもしれませんが、Googleではそう考えているようです

コンテナベースサーバーレスプラットフォーム「Knative」はServerlessなのか?

  • 1.
  • 2.
  • 3.
    Knative ・ Google CloudNext ‘18 で発表 ・ Kubernetes をベースとしたサーバーレスプラットフォーム ・ Google、Pivotal、IBM、Red Hat、Cisco 等が開発する OSS であり、GCP のプロダクトという訳ではない (AKS、IKS、OpenShift、etc. 向けのインストール手順も提供)
  • 4.
    そもそも 「Serverless」 とは? [狭義] ≒FaaS 「サーバー管理が不要な」 コンピューティングサービス [広義] FaaS や Functional SaaS を組み合わせたアーキテクチャ
  • 5.
    FaaS と コンテナの違い ① FaaS: 呼び出された時のみコンピューティング資産が使われる コンテナ(一般的な): 常時起動してリクエストを待つ
  • 6.
    FaaS と コンテナの違い ① FaaS: 呼び出された時のみコンピューティング資産が使われる コンテナ: 常時起動してリクエストを待つ Knative 「Serving」 コンポーネント 「0」へのスケールイン ・ 一定時間リクエストが無い場合、コンテナ起動数を「0」にする ・ リクエストが来たら起動する 当然、コールドスタートによるタイムラグはあるが… それってFaaSでも同じですよね?
  • 7.
    FaaS と コンテナの違い ② FaaS: イベント契機(トリガ)による実行 (例 AWS Lambdaの場合: S3、DynamoDB、Kinesis、SNS、SES、SQS、etc.) コンテナ(一般的な): 基本は REST、gRPC などの Web API によるリクエスト/レスポンス
  • 8.
    FaaS と コンテナの違い ② FaaS: イベント契機(トリガ)による実行 コンテナ: REST、gRPC などの Web API によるリクエスト/レスポンス Knative 「Eventing」 コンポーネント メッセージングシステムと連係してコンテナを起動させる ・ Apache Kafka ・ CNCF NATS ・ GCP Pub/Sub ストレージ/DB更新のトリガは用意されていない ・ 現状はメッセージングシステムを介すことにより実現可能 ・ 将来的には実装される?
  • 9.
    FaaS と コンテナの違い ③ FaaS: 実行単位は「関数」 → 開発者はコードを書くだけで実行可能 コンテナ(一般的な): 実行単位は「コンテナ」 → コンテナイメージの準備が必要
  • 10.
    FaaS と コンテナの違い ③ FaaS: 実行単位は「関数」、開発者はコードを書くだけで実行可能 コンテナ: 実行単位は「コンテナ」、コンテナイメージの準備が必要 Knative 「Build」 コンポーネント code GitHub build/push Bazel Buildah BuildKit Buildpack Jib Kaniko Build Template Registry (Public/Private) pull/run Knative Serving
  • 11.
    なるほど、Knative って多少は FaaS的かも… けど、 ・ 「0-スケールイン」 があるとは言え、 基盤となる Kubernetes の費用がかかるよね… ・ Kubernetes や Istio を管理するインフラ部隊が必要… ・ FaaS のような手軽さがない… (YAMLとの格闘)
  • 12.
    そこで、 「GKE serverless add-on」 ・Knative と同時に発表 ・ 「マネージド Knative」 的なものになると言われている ただし、現在アルファプレビュー中のため詳細は明らかになっていない
  • 13.
    Knative が目指す世界(?) @IT: Googleのウルス・ヘルツル氏に聞いた、 「IstioやKnativeで目指すのはクラウドのアンロックイン」 http://www.atmarkit.co.jp/ait/articles/1808/28/news036.html ・サーバーレスを使うとベンダロックインされるのか? ・ ベンダロックイン、上等じゃないか …等の意見はあるかもしれませんが、Googleではそう考えているようです