DUICUO

これら 7 つのオープンソース プラットフォームは、サーバーレス コンピューティングの開始に役立ちます。

[51CTO.com クイック翻訳] 最近、「サーバーレス」という言葉が話題に上ることが多くなりました。この概念と、サーバーレスコンピューティングやサーバーレスプラットフォームといった関連概念について、改めて明確にしていきましょう。

サーバーレスは、FaaS(Function as a Service)と同義語として使われることがよくあります。しかし、サーバーレスとは​​サーバーが存在しないという意味ではありません。実際には、パブリッククラウドプロバイダーによって、アプリケーションのデプロイ、実行、管理のために多くのサーバーが提供されています。

サーバーレスコンピューティングは、開発者によるソフトウェアシステムの構築と提供方法に変化をもたらす新たな分野です。アプリケーションソフトウェアのインフラストラクチャをコードから抽出することで、開発プロセスが大幅に簡素化されるとともに、コストと効率の面で新たなメリットがもたらされます。サーバーレスコンピューティングとFaaSは、クラウドネイティブサービスやハイブリッドクラウドと並んで、エンタープライズITの次世代を定義づける上で重要な役割を果たすと確信しています。

[[249819]]

サーバーレスプラットフォームは、ユーザーがコード関数(オペレーションとも呼ばれます)を実行し、各関数の結果を返すためのAPIを提供します。また、開発者が関数の結果を取得できるHTTPSエンドポイントも提供します。これらのエンドポイントは他の関数への入力として使用できるため、関連する関数のチェーンを構築できます。

ほとんどのサーバーレスプラットフォームでは、ユーザーは関数を実行する前にデプロイ(または作成)します。サーバーレスプラットフォームは、指示に応じて関数を実行するために必要なすべてのコードを保有します。ユーザーはコマンドを使用してサーバーレス関数の実行を手動で呼び出すことも、スケジュールされたタスクのアラート、ファイルのアップロード、その他多くのイベントの発生時に関数をアクティブ化するように設定されたイベントソースによってトリガーすることもできます。

サーバーレスコンピューティングのための7つのオープンソースプラットフォームを使い始める

1. Apache OpenWhisk

Apache OpenWhiskは、あらゆる規模のイベントに応じてコードを実行できるサーバーレスのオープンソースクラウドプラットフォームです。Scalaで記述されており、HTTPリクエストなどのトリガーからの入力を処理し、JavaScriptまたはSwiftの小さなコードを実行します。

2.核分裂

Fissionは、Kubernetesを用いて関数を構築できるサーバーレスコンピューティングフレームワークです。プログラマーはFissionを使用することで、任意のプログラミング言語で一時的な関数を作成し、任意のイベントトリガー(HTTPリクエストなど)にマッピングできます。

3.アイアン関数

IronFunctionsは、既存のサービスを統合し、Dockerを採用することで、一貫性と整合性のあるマイクロサービスプラットフォームを提供するサーバーレスコンピューティングフレームワークです。開発者はGo言語を使用して関数を記述します。

4. Fnプロジェクト

Fnプロジェクトは、あらゆるクラウド環境やオンプレミス環境など、あらゆる環境で実行できるオープンソースのコンテナネイティブなサーバーレスプラットフォームです。使いやすく、幅広いプログラミング言語をサポートし、スケーラブルで高性能です。

5.オープンラムダ

OpenLambdaは、Go言語で記述され、LinuxコンテナをベースにしたApacheライセンスのサーバーレスコンピューティングプロジェクトです。OpenLambdaの主な目的は、ユーザーがサーバーレスコンピューティングの新しい手法を探求できるようにすることです。

6.キューブレス

Kubelessは、Kubernetesネイティブのサーバーレスフレームワークです。基盤となるインフラストラクチャを気にすることなく、最小限のコードをデプロイできます。Kubernetesのリソースを活用して、自動スケーリング、APIルーティング、モニタリング、トラブルシューティングなどの機能を提供します。

7. オープンファアス

OpenFaasは、DockerとKubernetesを用いてサーバーレス関数を構築するためのフレームワークであり、クラス最高のメトリクスサポートを提供します。あらゆるプロセスを関数としてパッケージ化できるため、定型的なコードを繰り返し記述することなく、多数のWebイベントを利用できます。

Kubernetesは、きめ細かなデプロイメントモデルを用いてワークロード処理を迅速かつ容易にする、サーバーレスワークロードとマイクロサービスアプリケーションコンテナを管理するための最も人気のあるプラットフォームです。Knative Serving(https://github.com/knative/serving)を使用すると、Kubernetes上にサーバーレスアプリケーションと関数を構築・デプロイできます。また、Istio(https://istio.io/)を使用することで、以下のような高度なシナリオを拡張・サポートできます。

  • サーバーレスコンテナを迅速にデプロイ
  • 自動的にゼロまで拡大・縮小
  • Istioコンポーネントのルーティングとネットワークプログラミング
  • デプロイされたコードと構成のポイントインタイムスナップショット

Knative (https://github.com/knative/) は、ソースコードとコンテナビルドのオーケストレーション、イベントエコシステムへのサービスのバインド、デプロイメント中のトラフィックのルーティングと管理、ワークロードの自動スケーリングなど、クラウドネイティブプラットフォーム上でのアプリケーションの構築と実行の一般的なタスクに重点を置いています。

Istio は、マイクロサービス (Envoy プロキシの観点からは、基本的にはサービス メッシュ コントロール プレーン) を接続して保護するためのオープン プラットフォームであり、開発者、オペレーター、プラットフォーム プロバイダーなど、フレームワークと対話する複数の役割を考慮して設計されています。

たとえば、次のコード スニペットを使用して、ローカルの Minishift プラットフォーム (https://github.com/minishift/minishift) で Knative Serving を使用して JavaScript サーバーレス ワークロードをデプロイできます。

  1. ## Dockerファイル
  2. bucharestgold/centos7-s2i-nodejs:10.xから
  3. ワークディレクトリ /opt/app-root/src
  4. package*.json をコピーします。/
  5. npm install を実行する
  6. コピー。
  7. エクスポーズ 8080 3000
  8. CMD [ "npm" , "start" ]
  9.  
  10.  
  11. ## パッケージ.json
  12. {
  13. 「名前」 「挨拶係」
  14. 「バージョン」 : 「0.0.1」
  15. プライベート」 true
  16. 「スクリプト」 : {
  17. 「開始」 : 「ノード app.js」  
  18. },
  19. 「依存関係」 : {
  20. 「エクスプレス」 : 「~4.16.0」  
  21. }
  22. }
  23.  
  24. ## アプリ.js
  25. var express = require( "express" );
  26. var app = express();
  27.  
  28. var msg = (process.env.MESSAGE_PREFIX || "" ) + "OpenShift 上の NodeJs::Knative" ;
  29.  
  30. app.get( "/" ,関数(req, res, next ) {
  31. res.status(200).send(メッセージ);
  32. });
  33.  
  34. app.listen(8080,関数() {
  35. console.log( "アプリはポート8080で起動しました" );
  36. });
  37.  
  38. ## サービス.yaml
  39. APIバージョン: serving.knative.dev/v1alpha1
  40. 種類: サービス
  41. メタデータ:
  42. 名前: 受付係
  43. 仕様:
  44. 構成:
  45. リビジョンテンプレート:
  46. 仕様:
  47. 容器:
  48. イメージ: dev.local /greeter:0.0.1-SNAPSHOT

Node.jsサーバーレスアプリケーションを構築し、ローカルKubernetesプラットフォームにサービスをデプロイします。必要な基本コンポーネント(Knative、Istio、Knative Serving)をKubernetes(またはMinishift)にインストールします。手順は以下のとおりです。

1. 次のコマンドを使用して Docker デーモンに接続します。

  1. (minishift docker-env) && eval(minishift oc-env)

2. 次のコマンドと Jib (https://github.com/GoogleContainerTools/jib) を使用して、サーバーレス アプリケーション コンテナ イメージを構築します。

  1. ./mvnw -DskipTests クリーンコンパイル jib:dockerBuild

3. Minishift などのサーバーレス サービスを Kubernetes クラスターにデプロイします。

  1. kubectl apply -f service.yaml

結論は

上記の例は、Kubernetes、Knative Serving、Istio などのクラウドネイティブ プラットフォームを使用してサーバーレス アプリケーションの開発をどこからどのように開始するかを示しています。

原題: サーバーレスコンピューティングを始めるための 7 つのオープンソースプラットフォーム、著者: Daniel Oh

[この記事は51CTOによって翻訳されました。提携サイトへの転載の際は、元の翻訳者と出典を51CTO.comとして明記してください。]