包括的な比較[翻訳] Kubernetesサーバレスフレームワーク(OpennFaas、OpenWhisk、核分裂、Kubeless、等)

原文链接:Kubernetes用サーバレスフレームワークの比較:OpenFaas、OpenWhisk、核分裂、Kubelessより

AWSラムダは、サーバレス(サービスなし)の代名詞となっています。しかし、AWSとは別の2つの利点がありますいくつかの制限を回避し、より柔軟にします。

サーバレス(なしのサービス)は、それは実際には完全に抽象化技術基盤となるハードウェア技術で、人工的な用語ではありません。明らかに、これらの関数や機能は実際にはまだどこかのサーバー上で実行されているが、我々はこれを気にしないでください。開発者は、コードの機能を提供する必要があり、その後、インターフェースを介して消費者に、または特定の呼び出しする:一般RESTだけでなく、(などカフカ、キネシス、たNats、SQS、など)を介して呼び出されたメッセージベースの技術であってもよいです。

サーバレスKubernetesプラットフォームの次のフレームワークを比較して、いくつかの提案を提供していますされました:

結果の比較

以下の表は、主にこれらの分野での使用の人気は、安定性、ツール、技術と使いやすさから、何のサービスフレームワークよりK8Sの一部ではありません。

このビューの人気のような問題は、定量化することは困難であるので、我々は、指標の数を使用する必要がありました。例えば、毎日、私は本当にこのフレームワークを使用しているどのように多くの人を知りたいが、これらの正確な数の1が困難である見つけることが好きなので、私たちは「人気」を表現するためのGithubの星や、Googleトレンドインデックスを使用。人気の詳細についてはここで見ることができます:オープンソースのメトリック

そこに多くの指標であるだけ概算であることに注意してください。フレームワークが実際の状況より良いか、全体的な状況と併せてお読みくださいより悪いだろうに見えるかもしれません。

外形寸法/フレーム オープンFAAS OpenWhisk Kubeless 核分裂 IronFunctions FN
(ようこそ度)のGithubスター
(ようこそ度)Googleトレンド(100は最も人気を表します) 37 58 24 N / A(および核分裂コンフリクト) N / A 3
(ようこそ度)安定性(寄稿)
(ようこそ度)StackOverflow.com投稿 21 359 15 2 5 9
(ようこそ度)10>貢献者の数を提出 10 33 7 6 9 19
(安定性)のスポンサー企業 VMWareの IBM(アパッチ財団) Bitnami Plaform9 Iron.io オラクル
(安定性)が初公開します 12分の2016 2016/02 11分の2016 2016/08 2016/02 2016/05
(安定性)開発言語 行きます スカラ 行きます 行きます 行きます 行きます
(ツール)パッケージツール Docker 容器 Docker 容器 Docker 容器 Docke 容器 ドッカー ドッカー
(ツール)K8S展開 カスタムYAMLマニフェスト カスタムYAMLマニフェスト マニフェスト カスタムYAMLマニフェスト 約ユーザー 約ユーザー
よる(ツール)サーバレス展開? YES(WIP はい はい NO NO はい
(ツール)の基本的な技術 AlertManager /プロメテウス、たNats CouchDBの、カフカ、Nginxは、Redisの、飼育係 なし(またはオプションたNatsカフカ) fluentd(もたNatsを使用することができます) Postgresの、Redisの DB(sqlite3のはPostgreSQL、MySQLの)、MQ(ボルト、Redisの)、プロメテウス
箱から出して(使いやすさ) はい はい NO(サーバレスの展開で失敗しました) YES(やや問題) 試みません 試みません
(使いやすさ)ドキュメントの品質 良い 良い 一般的な(やや悪化し、合理的な) 悪い(貧しい明快、行方不明の文書) 一般的な(やや悪化し、合理的な) 良い
スラックチャネルか(使いやすさ) (電子メールで)あります 持っています (ありslack.k8s.io 持っています 持っています 持っています

勧告のサーバレスフレームワーク

テーブルの上の比較によると、私はお勧め:

  • 使用するサーバレスframworkを SDKとして
  • 管理機能へのK8SにOpenFaasまたはOpenWhiskを使用します
  • OpenFaasはあまりにも人気が比較的小さいのではなく、プロジェクトで、使いやすいと拡張性成熟、およびOpenWhiskが、そのアクティブコア開発者に比べて。(アクティブ開発者の私の定義によると、人気順)
  • 非常に人気があり、多くのアクティブな開発者によってサポートされていた、非常に成熟しただけでなく、非常に複雑なOpenWhisk。これは、IBM / Apacheのサポート(それはこのの彼らの視点を見て、悪いものになる可能性があり、おそらく良いこと)によっても書き込みにスカラ座を使用していますが、

だから、最終的に生成技術スタックは、次のようになります。

少し余分なアドバイスがあるもあり、サーバレスframworkは、開発者はラムダ関数または他のK8S無料サービスプラットフォームに展開することができます。あなたはすでに非常に参考に移行機能であるラムダに配備機能を持っている場合。

様々なフレームワークを記述します

Severlessフレームワーク

以下の記事は、数回サーバレスframworkを述べる、それは最初それが何であるかを言う必要があります。

これは、プラットフォームではありませんが、それは任意の関数を実行することができます。これは、SDKの無料サービスです。実際には、それは単なるラッパーをした本質的です。しかし、サーバレスframwork機能によってパッケージくるジューシーは、あなたがでラムダ、Googleの機能、Azureの機能、OpenWhisk、OpenFaas、KubelessかのFnに同じコードを展開することができます。

だから、便利な機能が、それはまた、標準、コスト、可用性、およびその他の機能の面で開発を可能にする、開発者は基準が自分のコードをたどる構築することができ、標準を開発している、または分析し、それらを展開する場所を決定するために、非常に魅力的です。

また、それはまた、ある程度で、「使用すべきフレームワーク。」、私たちは気にしないしましょう 私はKubelessの実装を好むが、それは十分に成熟していないです。私たちは、サーバレスフレームワークをベースとしている場合は、私たちはOpenFaasとラムダに、当社の機能コードをビルドすることができ、後から簡単にKubelessに移植することができます。

唯一の欠点は、誤解を引き起こすことは容易である、名前は少し厄介だったということです。今そこにサポートされている言語は限られているが、これらに加えて、私はこれが最も安全な選択肢だと思います。

OpenWhisk

OpenWhiskは無料サービスの成熟したフレームワークであり、およびApache財団を取得し、IBMでサポートされています。IBMのクラウドサービスも構築されOpenWhisk機能をベースとしています。主な提出者は、IBMの従業員です。

CouchDBの、カフカ、Nginxは、Redisのと飼育係のOpenWhiskの使用、基礎となるコンポーネントの多くを持って、それが一定の複雑さを追加します。メリットは、開発者が明らかにスケーラブルで柔軟なサービスに焦点を当てることができるということです、欠点は、開発者やユーザーが知識を持っており、これらのツールを使用する方法を学ぶ必要があるということです、別の欠点は、それがすでにKubernetesに存在するいくつかの機能を実装して繰り返されるということです(例えば自動スケーリング容量など)。関数は、最終的に一緒に実行し、フレームドッカーコンテナます。

OpenWhiskヘルム・チャートは、インストールするために使用することができますが、いくつかは、まだ手作業が必要です。関数のアプリケーションが展開するCLIツールまたはサーバレスフレームワークを使用することができます。プロメテウスメトリック(関数実行を監視するために使用される指標)が箱の外です。

オープンFAAS

OpenFaas(上記の表にOpenWhiskていないが)人気があり、無料のサービスフレームワークを使用して簡単です。OpenWhiskそれはそんなに人気ではなく、行動規範の著者は、個人的に基づいています。自分の空き時間での個々の開発者の貢献に加えて、VMWareのもフルタイムのメンテナンスOpenFaasのチームを雇いました。今そこに英国で組み込まOpenFaasという会社がありますが、同社とOpenFaasは、プロジェクトをどのような関連性によっては不明。

OpenFaasアーキテクチャは比較的簡単です。ゲートウェイAPIはNATSストリーミング非同期呼び出しが処理されるカフカ、SNS、CloudEvents、CRON、または他の同期/非同期フリップフロップによって呼び出すことができます。伸縮性のサービスは、完了するまでプロメテウスとプロメテウスのAlertManagerの使用ですが、また、サポートのHorizo​​ntalPodAutoscaler Kubernetesを置き換えます

ヘルムは、(機能kubectlを取得することなどによって)オペレータのCRDを含む、支持体を装着完全またはkubectl Kubernetesによって提供されてもよいです。KubernetesオペレータWIP良い使用もあります:openfaas-演算子

関数のアプリケーションは、CLIツールまたはサーバレスフレームワークによって展開することができます。また、それは、「提供目的球ストアを、」OpenFaas上で使用するために多くの機能を提供します。プロメテウスメトリック(関数の実行を監視するために使用される指標は)箱から出してもです。

Kubeless

それはネイティブKubernetesに基づいているので、私は、Kubeless非常に興味があります。ネイティブKubernetesでの作品は、CRDの「機能」このカスタムリソースを追加しました。この実現に加えて、それは非常に賢いですが、またそれは、メッセージングなど他のフレームワークのように、複雑なさまざまな機能を追加していないとしながら、関数は、実行Kubernetesになることを意味します。

私はなどの標準Kubernetes管理機能を来オブジェクトが好き、(などヘルム、アーク、など)箱から出してKubernetesすべての通常の良いものを意味します。

相互作用は、標準kubectlによって行われるので、余分なツールが存在しない、と何のサービスのサポートを内蔵していません。

これは完璧なああ聞こえるが、。

残念ながら、それは、ユーザーの生産性は十分成熟していないではありません。コミュニティは、不完全なドキュメント(他の記事や投稿に頼る必要が)十分な大きさではありません。そして、何のサポートサービスのバグが存在しない、それはまた、あなたがアマゾンEKSで使用することはできませんを意味し、

ビューの正の点から、私は次の6ヶ月で、Kubelessが真とな​​ると信じている「Kubernetesのサーバレスフレームワーク。」

核分裂

それは中央のKubelessとOpenWhiskの間にあるので、核分裂は、非常に興味深いです。それはKubernetes機能の多くに大きく依存しているが、完全に統合されていません。この方法の利点は、それが(例えば自動弾性ストレッチなど)Kubernetesの強みを活用していますが、より良いパフォーマンスを得ることができたときに、異なるいくつかの他の事をする必要があるということです。例えば、それはかなり複雑なコールドスタートプーリング機構を備えています。

核分裂Platform9のサポートは、ヘルムでインストールすることができます。Influxdbは状態を処理するために使用される、とFluentDボックスにログを収集し提供します。たNats、Redisのを使用してキャッシュを使用してメッセージ。あなたが見ることができるように、他のフレームワークは、手動で追加が、これらの機能は非常に単純です、箱から出して、キャッシングおよびロギングを提供していません。

核分裂は非常に良い拡張が呼び出された核分裂ワークフローを開発者は機能が機能しなくなる書くことができるようにするツールです。これは非常に興味深い方向であり、私が何をすべきかを彼ができる知っていただきたいと思います。

しかし、核分裂ユーザーめったに(のみStackOverflowの関連する2つの問題について、それで非常に使いやすいですこと?)。コア貢献者の10倍以上を提出することも非常に小さく、わずか6貢献。しかし、主な理由は、ユーザーと開発者の欠如に加えて、他の欠点がありますが、文書はまた、より多くの欠落です。このフレームワークは、どのようにコードテンプレートで、将来的には、いくつかの隠された危険性を有することができるポッドを、開始私は知らない、知ってもらうのは難しいの開発者が実行する方法であることができます。全体的に、私は核分裂の建設のための非常に混乱していました。「私たちが知らない何を、私が尋ねることを敢えてしません。」

もう一つのポイントは、核分裂名が検索を得ることが困難です。

FN

名前FN少しぎこちないですね。これはオープンソースですが、主な要因は、Oracleからです。主には、CLIのFnに依存して使用し、ドッカー機能は、コンテナで実行されます。このブログは、 CLI、文書に関するいくつかの情報があるここをフレームの一部のコンポーネントはヘルムを展開することができます。多機能、類似したOpenWhiskをスケジュールするために使用することができますのFnフローと呼ばれる新しい機能もあります。

しかし、最も重要な違いは、使用する新しい簡単にその仕事、Fnがより焦点を絞っているが、それは非常に独善的と思われます。彼はホットデプロイ機能(他のフレームワークもこの機能を提供することができます)、および「ストリーム機能」を提供(それはユニークだが、他のフレームワークと連携する方法とは明らかではありません)。

FNプロジェクトは2016年からなので、それは本当に古いだとほとんどOpenWhiskは、また、貢献者の一定量を持っています。それにもかかわらず、いくつかの機能とKubernetesの競合が、私はこれらの機能のドラッグ(例えば、あなたがKubernetesはAFAICTを展開することはできません)でした。しかし、これは私の魅力であるので、私はもう使用しませんでした。しかし、それは互換性があり、サーバーレスフレームワークは、それはある程度いくつかの救済となっています。

IronFunctions

鉄の関数は、同じ名前の会社の支援を得ました。だからここにあなたが「文書」をクリックしてgithubの上のreadmeのいくつかのピットは、実際に鉄のホーム・ページにジャンプされています。次に、ページ上ではなく、鉄関数の結果の内容について「ドキュメント」をクリックしてください。代わりに、リポジトリ内の実際のドキュメントdocsディレクトリ。

そして、他のフレームワークは、それはまたドッカーのに基づいています。興味深い特徴は、AWSラムダは、いくつかの特別なサポートを持っていることがあるということです。あなたはラムダからコードを取得し、アイアンの機能を直接実行することができます。これは、移行が非常にいいです。

残念ながら、それは同様ネイティブKubernetesに配置マニフェストを通じてサポートし、サーバレスのフレームワークをサポートしていないのFnが好きではありません。すべてのこれらの欠点なので、私はそれを使用しようとしていきませんでした。それは十分に普及していない、それはGoogleトレンドでは表示されません。

機能

Funktionは、RedHatのは、期限切れのソリューションを持っています。


[コミュニティ]世間の注目IVWEB号は、生活の頂上につながる、週に最新の記事を入手します!

おすすめ

転載: juejin.im/post/5d1abf09f265da1bc8544227