メインコンテンツへ移動

FaaS はフロントエンドに何をもたらしたか?

無料2020-07-05#Front-End#Mind#FaaS#FaaS SSR#前端FaaS化#基于FaaS的SSR#端云一体化

FaaS の支援を受けたフロントエンド開発モードはどのようなものになるのでしょうか?

一.Serverless と FaaS

Serverless はクラウドコンピューティングの概念であり、サーバーレスコンピューティング(Serverless Computing)です:

Serverless suggests that the cloud user simply writes the code and leaves all the server provisioning and administration tasks to the cloud provider.

サーバー関連の設定管理作業をすべてクラウドプロバイダーに任せ、ユーザーは Server(またはクラウドリソース)の管理に多大な労力を費やす必要がないため、Serverless と呼ばれます

FaaS(Function as a Service)は Serverless の鍵です:

Serverless 的核心是 FaaS(Function as a Service),但云平台通常还提供 Serverless 框架来满足 BaaS (Backend as a Service) 等特定应用程序要求。因此,可以简单理解为:

Serverless computing = FaaS + BaaS

クラウド関数(Cloud functions)が通常の計算を提供し、特定の BaaS 製品エコシステム(オブジェクトストレージ、データベース、メッセージメカニズムなど)で補完され、ユーザーは関数ロジックの実装に集中し、クラウドプログラミングを大幅に簡素化します

まるで神秘的に聞こえ、何年後に現実になるか分からないようですが、実際、今日まで(2020/7/5)市場にはすでに多くの比較的成熟した FaaS 製品があります

二.すでに上市されている FaaS 製品

AWS Lambda

Amazon は 2015 年に早くも AWS Lambda サービスをリリースしました:

AWS Lambda - Run code without thinking about servers. Pay only for the compute time you consume.

サーバー(の管理と設定)を考慮せずにコードを直接実行し、使用した計算時間のみに対して課金されるクラウドコンピューティングサービス製品

つまり、開発者はコードをアップロードするだけで、Lambda がコードの実行と高可用性拡張に必要なすべての作業を自動的に処理します

Just upload your code and Lambda takes care of everything required to run and scale your code with high availability.

主なアプリケーションシナリオには以下が含まれます:

  • データ処理

  • リアルタイムファイル処理:例えばサムネイルの作成、ビデオコードの変換、ログの処理など

  • リアルタイムデータストリーム処理:例えばユーザーアクセス指標の追跡

  • 機械学習:データを機械学習モデルに入力する前に前処理

  • バックエンド:Web、モバイル、モノのインターネット (IoT)、第 3 者 API リクエストの処理

小規模顧客向けの無料トライアルパッケージも提供:

アリババクラウド FC

アリババクラウドも FaaS 方案を提供しており、関数計算 と呼ばれます:

函数计算 - 阿里云函数计算是事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,并提供日志查询、性能监控、报警等功能。借助于函数计算,您可以快速构建任何类型的应用和服务,无需管理和运维。而且,您只需要为代码实际运行所消耗的资源付费,代码未运行则不产生费用。

アプリケーションシナリオは以下の通り:

  • 低コストクロスボーダーファイル転送:大規模ファイル同期

  • ファイル処理:例えば OSS にアップロードされたファイルの圧縮/解凍、トランスコード、ウォーターマーク追加など

  • フロントエンド CI/CD システム:Webhook 通知がクラウド関数をトリガーし、フロントエンドコードリポジトリを OSS にアップロードし、CDN デプロイ

  • ログ ETL 処理:データの加工、配信

  • スマート家電:スマートホーム、App が天気、環境指数を取得

  • 中小サイト:例えば 関数計算 + wordpress に基づく serverless ウェブサイト構築

同様に小規模顧客(1-10 人チーム)向けの無料パッケージを提供:

しかし無料枠はあまり透明ではなく、将来的に課金される可能性もないわけではない

P.S.また、アリババクラウドが提供する OSS には無料枠がないようですトライアルには注意が必要

テンセントクラウド SCF

テンセントクラウドが提供する FaaS 製品は SCF(Serverless Cloud Function) です:

云函数 SCF - 云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。SCF 是实时文件处理和数据处理等场景下理想的计算平台。

主に推進する 4 大アプリケーションシナリオ:

  • リアルタイムファイル処理:例えばオーディオ/ビデオトランスコード

  • データ ETL 処理:ビッグデータセットの並行分析処理(ETL は典型的な Extract-Transform-Load データ処理プロセス)

  • モバイル及び Web アプリケーションバックエンド:クラウド関数の形式でバックエンドサービスを実装

  • AI 推論予測:AI モデルがトレーニング完了後、外部に推論サービスを提供

月間にある程度の 無料枠 があると言われていますが、しかし 外部ネットワーク出力トラフィック は無料ではない ので、トライアルには注意が必要です

三.FaaS はフロントエンドに何をもたらしたか?

FaaS があれば、以下が可能になります:

サーバーなどの計算リソースやサービスの拡張性、安定性などの問題を考慮せずに、バックエンドコードを直接実行でき、ログ、監視、アラームなどの付帯施設も开箱即用

つまり、シンプルなバックエンドサービス(例えばインターフェース集約、データオーケストレーション)をオンラインにするのに、もはや経験豊富な専門バックエンドエンジニアの助けを借りる必要はありません

  • 技術スタックの選択

  • 高並行下での拡張メカニズムの考慮

  • ピークトラフィックの見積もり、リソースの事前配分(マシンの申請)

  • CI/CD フローの実行

  • 監視、運用保守システムへの接続

私たちはコードの一部を提供するだけで、クラウドプロバイダーが精心して研究した FaaS 方案がそのプログラミング言語に対応する技術スタックのベストプラクティスを選択し、内蔵の拡張メカニズムに基づいて実際の必要に応じて計算リソースを動的に拡張し、サービスを簡単にパブリックネットワークにデプロイし、信頼性の高い監視、アラーム保障を提供します

FaaS に関数を渡せば、高可用性のサービスをオンラインにできます。(簡単)サービスインターフェース開発の専門性要件が低下し、フロントエンドはより大きな発揮空間を得ました。以下を含みますがこれらに限定されません:

  • BFF(Backend For Frontend)

  • SSR(Server-Side Rendering)

  • エンドクラウド一体化開発

BFF

Backend For Frontend (BFF)(ユーザー体験適応層)の理念はすでに新しくはありません:

给每种用户体验对应一个后端(one backend per user experience)

つまり:

BFF は特定のユーザー体験向けであり、この部分の UI を実装するフロントエンドチームが実装及び維持を担当します(つまり UI と対応する BFF は同じチームが担当)

2018 年(さらにそれ以前)から一部のチームは Node.js に基づいて BFF の探索と実践を展開し、フロントエンドモジュールの開発者が対応する BFF 層上のいくつかのインターフェース開発作業を担当して完了しました

BFF 層があれば、バックエンドエンジニアはビジネス領域に集中できますが、フロントエンドエンジニアにより高い要求を提起しました:フロントエンド型フルスタックエンジニアが必要であり、BFF 層の発展に伴い、要求はますます高くなります(拡張性、安定性など)

FaaS の出現はこの問題を很好地に解決し、BFF 概念は SFF(Serverless For Frontend)にアップグレードされ、専門性要件が比較的高いバックエンドサービスフレームワーク部分を FaaS 解決策にカプセル化し、BFF 中のビジネスロジック以外の可用性保障作業をフロントエンドエンジニアからクラウドプロバイダーのバックエンド領域専門家に移譲し、お互いにより専門的で効率的になりました

SSR

SSR(Server-Side Rendering)(サーバーサイドレンダリング)も同様に新奇的な概念ではありません:

サービス側で完全な HTML ページを生成

クライアントの二次リクエストデータのネットワークオーバーヘッドと、ビューテンプレートのレンダリングの性能負担を省き、最初のスクリーン読み込みを加速するのに役立ちます。しかし SSR も BFF と類似の問題に直面しており、Demo レベルの SSR レンダリングサービスを開始するのは難しくありませんが、高可用性の SSR レンダリングエンジンをオンラインにするのは決して容易ではありません

FaaS はサービスの高可用性要件を手の届くものにさせ、ステートレスなテンプレートレンダリング作業は特にクラウド関数で完了するのに適しています

P.S.コミュニティにはすでにいくつかの Serverless Side Rendering 方案が現れています。例えば ykfe/ssr

エンドクラウド一体化開発

つまり前後端一体化開発で、単一プロジェクト内で、フロントエンド表示ニーズを完了でき、データサービスも搞定できます

以前の PHP、Java Web 整站開発とどのような違いがあるのでしょうか?巡り巡ってまた起点に戻ったのでしょうか?

明らかに違います。主な違いは以下の通り:

  • 前後端分层解耦:前後端一体ですが、過度に耦合していません

  • フロントエンドプロジェクトを主体とする:PHP、Java Web がバックエンド部分を主体とするのとは違います

  • Web に限定されず、モバイル端末でも同様に適用

一体化は以下に体現されます:

  • クラウド IDE に基づく一整套の開発/デバッグ環境、シームレスな開発体験

  • フロントエンド部分に集中し、(ほぼ)バックエンドサービスのデプロイ、運用保守を关心する必要がありません

P.S.現在 FaaS+React/Vue の一体化開発フレームワークも現れています。例えば midwayjs/midway

四.将来の可能性

未来に向けて、FaaS はさらにこれらの変化をもたらす可能性があります:

  • 小規模顧客向けの無料/安価な方案がますます多くなる:例えばミニプログラムクラウド、IoT 開発パッケージなど

  • FaaS に基づく Web サービスフレームワークと伝統的な Web サービスフレームワークが統一に向かう:伝統的な Web サービスフレームワークに基づくアプリケーションを低コストで移行可能

  • SSR、CSR/NSR などの異なるフロントエンドレンダリング方式 が Web フロントエンドフレームワークの設定オプションになる:異なるレンダリングモード間で柔軟に切り替え、さらに混用さえ可能

  • フロントエンドが完全なクラウド研究開発モードに入る:FaaS の普及と BaaS エコシステムの成熟が、SSR、BFF の流行を加速し、フロントエンド開発をローカル環境からクラウド上に引き上げます

あなた、準備はできましたか?

コメント

コメントはまだありません

コメントを書く