iPaaS·EasyFunctionは、多言語サポートとイベント駆動型を備えた完全に管理されたサーバーレス機能コンピューティングサービスプラットフォームです。

iPaaS·EasyFunctionは、多言語サポートとイベント駆動型を備えた完全に管理されたサーバーレス機能コンピューティングサービスプラットフォームです。

著者|プラットフォーム事業研究開発部・応用事業製品研究開発部 バベルチームの朱志国、王志群、趙漢、戴文龍ら。

前面に書かれた

サーバーレスは現在、注目の技術トピックであり、主要なクラウド プラットフォームやインターネット大手は積極的にサーバーレス製品を構築しています。本稿では、iPaaS(JDフロントエンド統合構築プラットフォーム)システムのサーバーレスFaaS製品であるEasyFunctionプラットフォームの機能と実装について紹介します。それは2つの部分に分かれています。最初の部分では、FaaS の適用可能なシナリオと利点を紹介しながら、EasyFunction を実行する必要がある理由と、それがもたらす利点について説明します。パート 2 では、EasyFunction の製品機能と一般的な実装事例の紹介を通じて、EasyFunction を深く理解していただきます。この記事を読むことで、皆さんにインスピレーションと助けがもたらされることを願っています。

背景

近年、サーバーレス技術は急速に発展しています。国内の大手インターネット企業は、サーバーレス関連製品の構築やサーバーレス技術の実装を積極的に模索しています。 Alibaba CloudやTencent Cloudなどの国内企業も対応する商用製品を持っています。このような状況の中で、Babel チームは自社のニーズと IPaaS 技術のオープン システムをサポートするニーズを組み合わせ、昨年 9 月に調査を行った後、Serverless FaaS プラットフォームの構築を開始しました。内部プロジェクト名は EasyFunction です。一言でまとめると、EasyFunction は、Java、NodeJs、Go などをベースとした多言語 Function as a Service (FaaS) プログラミング プラットフォームであり、ユーザーが面倒な開発構成、マシン リソースの適用、その他の運用および保守作業から解放されるよう支援します。開発者はビジネス コード ロジックの作成と実装にのみ集中する必要があります。現在、MVP版の迅速な検証と実装の段階にあります。テクノロジーの選択、製品とアーキテクチャの設計、開発の反復を通じて、構築、公開、柔軟なスケーリング、トリガー ソースへの接続、関数の実行など、サーバーレス FaaS 製品の基本機能を迅速に実装しました。現在、製品の検証と改良を支援するために、一部の企業へのパイロットアクセスを推進しています。

適用可能なシナリオ

01BFF (バックエンド フォー フロント) シナリオ

BFF レイヤーは主に、集約とクリッピングを通じて、比較的低レベルのドメイン オブジェクト データをフロントエンド ビュー レイヤー データに変換する役割を担います。ここでのビュー レイヤー データは、シナリオやデバイスによって異なり、多くの場合、カスタマイズされた処理が必要になります。フロントエンド開発者は、ビューレイヤーのデータモデルを最もよく理解しており、ページをレンダリングするためにどのようなデータが必要かを理解しています。従来の開発モデルでは、バックエンドに類似した機能を持つ集約インターフェースが多数存在し、インターフェースの大半はライフサイクルが短くなります(ビジネスの試行錯誤による)。フロントエンドとバックエンド間の通信コスト、その後のメンテナンスコスト、開発フェーズでのマシンリソースコストは比較的高くなります。 FaaS は複数言語での機能開発をサポートし、開発の敷居を下げます。開発者は関数の作成時にビジネス ロジックの実装に集中するだけで、API の作成、公開、オンライン化を完了できます。このようにして、フロントエンドの同僚はデータ層の自己管理を実現し、フロントエンドとバックエンド間の通信コストを削減できます。

02データ処理とスケジュールされたタスクのシナリオ

FaaS プラットフォームは、タスク スケジューリング システムと JMQ に直接接続されます。開発者は、タスク処理ロジックの作成に集中し、対応するタイプの関数トリガーを作成して、マシン リソースを管理することなく、スケジュールされたタスクへのアクセスを完了するだけで済みます。同時に、リアルタイムのトラフィックやインスタンスの CPU 負荷に応じてリソースを自動的にスケーリングし、オンデマンドでリソースを使用することもできます。

03SSR(サーバーサイドレンダリング)シナリオ

サーバーはデータとスタイルのバインディングを完了し、HTML データを返します。これにより、バックエンドのリソースがより多く消費されますが、ページをすばやく表示できるという利点があるため、特にフロントエンドの最初の画面を高速に表示するシナリオでは、これを FaaS で記述してみることができます。

04バックステージ管理プラットフォームのシナリオ

社内にはバックエンド管理プラットフォームのWebサービスが多数存在します。関数よりも重いですが、Serverless プラットフォーム上で直接ホストすることができ、Serverless プラットフォームの究極の公開および運用保守効率を存分に享受できます。

ビジネス上のメリット

従来のアプリケーションと FaaS クラウド機能の簡単な比較を見てみましょう。

  • 事業グループ間の業務遂行方法を「統一」し、業務の切り替えを迅速化
  • サーバー側の技術的障壁を排除し、ビジネスロジック開発に使い慣れたテクノロジースタックを使用する
  • ユーザーにとって「フレームワーク」という概念はありません。ユーザーは関数の入力と出力を理解するだけで済みます。
  • 展開、リリース、監視に至るまで、プラットフォーム サービスは効率的かつ安定しています。

リソースの活用や研究開発、運用の効率化など、FaaS は多くのメリットをもたらしました。

製品の特徴

EasyFunction-Cloud Functionの基盤となるk8sの運用と保守、マシンリソースのオーケストレーションはJD Cloudでホストされており、ゲートウェイ機能の構築、ワンストッププラットフォーム開発、機能テンプレートの開発など、FaaS製品の上位層機能の構築に重点を置いています。現在、構築、公開、エラスティックスケーリング、トリガーソースへの接続、機能の実行など、Serverless FaaS製品の基本機能が迅速に実装されています。具体的な機能は以下の通りです。

01機能作成

EasyFunction は、Java8、NodeJs14、Go、Python、PHP、Ruby の 6 つの言語での関数作成をサポートしています。その中でも、Java8 の機能エコシステムが最も豊富で、グループの主なミドルウェア (JSF、Ducc、JMQ、ClickHouse、UMP など) を統合し、次に NodeJs が続きます。ご興味がございましたら、ぜひご参加いただき、関数言語テンプレートを構築し、関数エコシステムを充実させてください。

開発者は、関数を作成するための言語を選択し、対応する関数テンプレート コードをダウンロードして Coding にアップロードし、関数の基本構成情報で関数ウェアハウス アドレスを構成し、関数インスタンスの CPU、メモリ構成を選択し、環境変数を構成して関数の作成を完了します。

02バージョンとルーティング

関数が作成されると、関数コードの作成、テスト、バージョンリリースの段階に入ります。特定の言語の機能コードの記述ガイドについては、開発マニュアルドキュメントを参照してください。開発ツールに関しては、EasyFunction は CloudIDE を統合し、WEB 側のコーディングを簡単に実装します。オンライン機能テスト機能も提供しています。

展開とテストの後、現在の最新バージョンをリリースできます。新しいバージョンをリリースするということは、関数コードと関数構成 (トリガーを除く) の最新バージョンのスナップショット コピーを作成することを意味します。開発者は、リリースされたバージョンのログを表示し、レプリカ インスタンスを再起動してリアルタイムで調整できます。

最初のバージョンのリリースが完了したら、開発者は対応するエイリアスを作成することをお勧めします。エイリアスを使用してサービスまたは関数にアクセスする場合、EasyFunction はエイリアスをそれが指すバージョンに解決します。呼び出し元は、エイリアスが指す特定のバージョンを知る必要はありません。同時に、開発者はエイリアスで管理されるバージョンのトラフィック比率を自由に調整できます。

03 トリガー

トリガーは関数の実行をトリガーするものです。イベント駆動型コンピューティング モデルでは、イベント ソースはイベントのプロデューサーであり、関数はイベントのハンドラーです。対応するトリガーが作成された場合にのみ、外部イベントはトリガーの特定のメソッドを通じて関数にアクセスできます。 EasyFunction は、HTTP、Color Gateway、JMQ の 3 種類のトリガーをサポートしています。 HTTP は社内イントラネット システム間の呼び出しに使用され、Color Gateway は外部ネットワーク イベント ソースが機能をトリガーするために使用されます。

04自動スケーリング

EasyFunction は現在、CPU 負荷と単一インスタンス QPS という 2 種類の指標に基づくスケーリングのトリガーをサポートしています。トラフィック量が多いシナリオでは、単一のインジケーターの一時的なジッターにより、頻繁で不安定なスケーリングが発生する可能性があります。今後は、複数の負荷指標 + アルゴリズム予測をスケーリングのトリガーの基礎として使用し、時間指定のスケーリング機能を追加します。ただし、トラフィックが安定しており、一定の規則性があるシナリオでは、現在の単一指標のスケーリングは比較的良好であると予想されます。次の図はオンライン機能の例です。関数インスタンスの数は基本的に、QPS の増加に応じて増減します。午前 4 時にトラフィックが最低点に達し、インスタンスのコピー数も最小の 2 に減少しました。

データのシミュレーション

05ログと監視

EasyFunction は、オンライン機能ログの取得といくつかの基本的な機能インジケーターの監視を提供します。

ケーススタディ

MVP版のリリース後、すでにいくつかの企業にアクセスを促進しています。以下に典型的なケースをいくつか示します。

1. Shuidi CMSとEasyFunctionの組み合わせにより、開発者はCMSを迅速かつ効率的に構築できます。

Shuidi CMS 構築プラットフォームはページスタイルの構築とデータのレンダリングを担当し、FaaS は CMS に必要なデータを提供します。開発者は関数を作成して記述することでこのデータを定義できます。 EasyFunctionは複数の言語をサポートしており、メンテナンスも不要です。これにより、開発者の開発ハードルが下がり、開発者はビジネス ロジックの実装のみに集中して、CMS にカスタマイズされたデータを提供する機能を迅速に公開できるようになります。

2. マーケティング センター リソース インターフェイスの例 (BFF シナリオ)

管理ディメンションとして API を備えたオンライン集計 API を提供するのは、典型的な BFF シナリオです。マーケティング センター システムの目的の 1 つは、集中型の作業プラットフォームを作成し、内部の垂直プラットフォーム機能を統合することです。そのため、複数の外部プラットフォームのインターフェイス データをオーケストレーションして処理し、マーケティング センターの CMS フロントエンド スタイルの要件を満たすデータを返す必要があることがよくあります。このシナリオでは、開発者は、マシン リソースの適用やドメイン名の適用などの運用および保守の問題を考慮することなく、関数内の他のプラットフォームの既存の JSF または HTTP インターフェイスをオーケストレーションすることで、関数を迅速に構築して公開できます。

3. Babelログ解析機能(データ処理シナリオ)

バベルの塔のコアシステムログの MQ トラフィックは、業務リクエストトラフィックの増加とともに増加します。以前は、ログ分析のロジックはバックエンドの管理プラットフォームで処理されていました。トラフィックのピーク時にはログ処理のスループットが不足し、監視ダッシュボードの表示が遅れるという問題が頻繁に発生していました。従来の方法では、事前にトラフィックを予測して、バックエンド管理アプリケーションのインスタンスを手動で拡張するしかありませんでした。上記の問題は、関数を使用し、JMQ タイプの関数トリガーを作成し、適切な自動スケーリング戦略を構成することでうまく解決できます。

今後の計画

次に、コア技術の最適化、事業の安定性の確保、エコシステムの改善、収益の方向性の実現に取り組んでいきます。実践面では、上記の 4 つの適用可能なシナリオのケースを実装し、真のコスト削減と効率化を実現します。次号では、EasyFunction の基盤となるアーキテクチャ設計とコアとなる技術原理について詳しく紹介します。

<<:  デジタル変革、優れた IT コンサルティング サービスを提供するにはどうすればよいでしょうか?中義科技は言いたいことがある

>>:  ついにクラウドコンピューティングとデジタルトランスフォーメーションの関係を説明する人が現れる

推薦する

オンラインで稼ぐ初心者:ウールプロジェクトからの単一の収入はかなり寛大です

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますネットで稼...

QingCloud、さらなるパフォーマンス向上を実現したプロフェッショナル向け強化ホスト「National Good Cloud」をリリース

エンタープライズレベルのフルスタッククラウドICTサービスプロバイダーであるQingCloud(qi...

スポーツマーケティングインサイトレポート

ところで、オリンピックがもうすぐ始まりますが、観客がいないので、雰囲気がかなり薄れています。一昨日の...

SEO初心者のためのブログ外部リンク運用方法

多くの初心者の SEO の友人は、このタイトルを見ると、ブログの外部リンクについて長々と話す必要はな...

Xuziyu: ウェブサイト外部リンク分析の SEO 診断レポート

みなさんこんにちは。私は徐子宇です。以前、SEO診断の6つの側面、「Xu Zi Yu:SEO診断レポ...

巨人の到来により、星生有軒に残された時間は多くない。

コミュニティ共同購入は、少し前にとても人気がありました。多くの商人や大手企業が野菜ビジネスに参入した...

Kafka の設計原則の詳細な説明

Kafka コア コントローラKafka クラスターには 1 つ以上のブローカーがあり、そのうちの ...

ホリデー企業サイト:既存ランキング維持に向けた「準備」方法

春節が近づくにつれ、ほとんどの個人ウェブマスターは、これまでの集中的な最適化を緩め、新年の雰囲気に溶...

オンラインマーケティングの効果を測定するための中核指標について、どのようなロジックで考えるか

コンテンツ1. 実際には、「コア」という言葉には統一された基準はなく、コアである必要すらありません。...

Kubernetesガバナンス戦略を確立する方法

翻訳者 |李睿校正:孫淑娟ガバナンスにより一貫性と再現性がもたらされ、品質が決して損なわれることがな...

小紅書のジレンマを解決できるのは誰か?

草植えトラックではアクションが頻繁に発生します。 3月10日のLatePostによると、lemon8...

マネージド Kubernetes サービス: 最新のクラウド インフラストラクチャのアップグレードを加速

コストの削減と効率性の向上は、イノベーションと開発における永遠のテーマです。過去10年間、開発者はコ...

エッジコンピューティングとクラウドコンピューティングの違い

処理とデータの保存はクラウド エッジ システムで行われます。しかし、ネットワークの制限はエッジとクラ...