サーバーレスクラウド開発の高度なアプリケーションを紹介する記事

サーバーレスクラウド開発の高度なアプリケーションを紹介する記事

以前、アプリケーションにクラウド関数を作成し、そのクラウド関数を Express と統合し、クラウド データベースと連携して追加、削除、変更、クエリのインターフェースを作成しました。ただし、この開発方法は Serverless を使用する最良の方法ではありません。

私たちのコードでは、バックエンド アプリケーション全体のすべてのビジネス機能が 1 つの関数に記述されています。これを行う利点は、管理が容易になることです。結局のところ、1 つのアプリケーションの下には 1 つのクラウド機能しかありません。ただし、単一のクラウド関数の同時実行には制限があります。並列関数インスタンスの数はクラウドベンダーによって決定されます。制限を超えると、イベント キューは、新しい関数インスタンスを生成する前に、他の関数インスタンスの実行が完了するまで待機する必要があります。

サーバーレスは弾力的にスケーラブルではないのかと疑問に思う人もいるかもしれません。業務処理のニーズに応じてリソースが自動的に割り当てられると言われています。関数に同時実行制限があるのはなぜですか?

これを理解するには、FaaS がどのように機能するかを理解する必要があります。

FaaSの仕組み

FaaS プラットフォームでは、デフォルトでは関数は実行されず、リソースは割り当てられず、関数コードも FaaS に保存されません。 FaaS はトリガー イベントを受信した場合にのみ関数を開始して実行します。以前は、関数コードを実行するために HTTP トリガーを使用しました。関数実行プロセス全体は、実際には次の 4 つの段階に分けられます。

コードのダウンロード: FaaS プラットフォーム自体はコードを保存しません。代わりに、コードをオブジェクト ストレージに配置します。関数を実行する必要があるときは、関数コードがオブジェクト ストレージからダウンロードされ、解凍されます。したがって、FaaS プラットフォームでは通常、コード パッケージのサイズが制限され、通常は 50 MB を超えることはできません。

コンテナを起動します。コードがダウンロードされた後、FaaS は関数構成に基づいて対応するコンテナを起動します。 FaaS はリソースの分離にコンテナを使用します。

オペレーティング環境を初期化します。コードの依存関係を分析し、ユーザー初期化ロジックを実行し、エントリ関数の外部でコードを初期化するなどします。

コードの実行: エントリ関数を呼び出してコードを実行します。

関数が初めて実行されるときは、4 つの完全なステップが実行されます。最初の 3 つのプロセスは総称して「コールド スタート」と呼ばれ、最後のステップは「ホット スタート」と呼ばれます。

コールド スタート プロセス全体には、最大で数百ミリ秒かかる場合があります。関数の実行が終了した後、実行環境は一定期間保持されます。保持時間は、クラウド ベンダーによって異なりますが、数分から数十分の範囲になります。この期間中に関数を再度実行する必要がある場合、FaaS プラットフォームは最後に実行された環境を使用します。これは「実行コンテキストの再利用」であり、「インスタンスの再利用」とも呼ばれます。関数の起動プロセスは「ホット スタート」とも呼ばれます。 「ホット スタート」にかかる時間は、すべて機能の起動にかかる時間です。一定時間リクエストがない場合、関数実行環境は次のイベントが到着するまで解放され、その後再びコールドスタートから初期化されます。

次のクラウド関数を検討してください。

クラウド関数が初めて呼び出されたとき、関数の戻り値は 1 であり、これは予想どおりです。

しかし、このクラウド関数を継続的に呼び出すと、戻り値が 2 から増加したり、1 になったりすることがあります。これはインスタンスの再利用の結果です。

  • ホットスタート時は関数を実行するNode.jsプロセスが再利用され、プロセスのコンテキストが保持されるため、変数 i がインクリメントされます。
  • コールドスタートの場合、Node.js プロセスは新しく、コードは最初から完全に実行され、1 が返されます。

以下は関数のリクエスト図です。「リクエスト 1」と「リクエスト 3」はコールド スタート、「リクエスト 2」はホット スタートです。

関数が実行されると、実行環境は破棄されます。最初の関数実行時にはパフォーマンスが低下しますが、リソースの利用効率は大幅に向上します。環境は初期化され、コードを実行する必要がある場合にのみハードウェア リソースが消費されます。また、アプリケーションに多数のリクエストがある場合、ほとんどの場合、関数の実行はホット スタートになる可能性があります。

関数のライフサイクルから、関数が 1 分ごとに実行される場合、関数はほぼ常にホットスタートされ、つまり以前の実行コンテキストが再利用されることがわかります。実行コンテキストには、関数のコンテナ環境とエントリ関数の外部のコードが含まれます。

クラウド プラットフォームは、現在の負荷に基づいてクラウド機能インスタンスの数を自動的に制御し、リクエストを均等に分散します。複数の連続したリクエストは、同じインスタンスによって処理される場合とされない場合があります。これは上記のコードで確認できる内容です。 i の値は非常に制限がなく、パターンはまったくありません。したがって、クラウド関数を作成するときは、クラウド関数がステートレスかつべき等であること、つまり、現在のクラウド関数の実行が、前のクラウド関数の実行中に実行環境に残っていた情報に依存しないことを確認する必要があります。

Todo の例に戻りましょう。すべてのビジネス ロジックをクラウド関数に配置するため、処理できる同時実行の量が大幅に制限されます。同時実行性が一定のレベルに達すると、それ以上の関数インスタンスは作成できなくなり、サーバー リソースを割り当てることもできなくなります。より良い方法は、ビジネス ロジックを分割することです。 1 つのクラウド関数は、独立したビジネス ロジック プロセスに対応します。これはミニプログラムのクラウド開発に反映されています。私たちに提供されるデフォルトのミニプログラム クラウド開発テンプレートは、ミニプログラム アプリケーションが各クラウド機能を処理する方法です。

そして、機能や業務が増えていくと必然的に機能も増え、開発工程におけるコード管理が特に重要になってきます。 Tencent が公式に提供している cloudbase-framework ツールがその方法を提供します。先ほど使用した CloudBase CLI コマンドライン ツールは、cloudbase-framework の外部インターフェース ツールです。つまり、使用するコマンドラインは、実際には cloudbase-framework によって提供される関数を呼び出します。

アプリケーションを作成するための tcb new、http トリガーを作成するための tcb application deployment、http トリガーを作成するための tcb service create、コードを段階的に更新するための tcb fn code update xxx function name など、それらのいくつかは以前にすでに使用しています。

コードのデプロイに関連するこれらのコマンドに加えて、フレームワークはクラウド プラットフォーム リソースをワンストップで管理する機能も提供します。

CloudBaseフレームワークの使用

次に、サーバーレス開発モデルに従って Todo ケースをリファクタリングします。 Tencent Cloud Development CloudBase では、さまざまな開発テンプレートが作成されています。 tcb new コマンドを使用すると確認できます。アプリケーション テンプレートを選択するときは、Vue アプリケーションを選択して、Vue クラウド開発プロジェクトを作成します。

プロジェクトが作成されると、プロジェクト パスの下に cloudfunctions ディレクトリがあることがわかります。ここにクラウド関数が保存されます。 1 つの機能はフォルダーです。

では、これらの機能をどのように管理すればよいのでしょうか?プロジェクトのルート パスには、アプリケーション フレームワーク全体の構成ファイルである cloudbaserc.json ファイルがあります。この構成ファイルを使用して、プロジェクト アプリケーションを管理できます。したがって、始める前に、まずこの構成ファイル内の各構成項目の意味を理解する必要があります。

バージョン フィールド: CLI 0.9.1 以降では、動的変数機能をサポートする新しいバージョン 2.0 構成ファイルが導入されています。

新しい機能を有効にするには、cloudbaserc.json で "version": "2.0" を宣言します。新しいバージョンの構成ファイルは JSON 形式のみをサポートします。動的変数機能を使用すると、cloudbaserc.json 構成ファイル内の動的変数を使用して、環境変数やその他のデータ ソースから動的データを取得できます。 {{}} で囲まれた値は動的変数として定義され、データソース内の値を参照できます。

envId フィールド: アプリケーション ID

$schema : 設定テンプレートの説明

地域: アプリケーションが配置されている地域

フレームワーク: 設定ファイルの主な設定項目

フレームワークフィールド: name属性はアプリケーション名です

framework.plugins : ここでアプリケーションを管理します。

フレームワークはプラグイン メカニズムをサポートし、さまざまなアプリケーション フレームワークやクラウド リソース用のプラグインを提供します。アプリケーションが依存するプラグインは、plugins パラメータの下で構成されます。フレームワークは、プラグインの構成に従ってアプリケーションを管理し、アプリケーションのビルド、デプロイメント、開発、デバッグなどのプロセスを処理します。アプリケーションは複数のプラグインを使用し、異なるカスタム プロパティ名を使用してそれらを管理できます。

公式プラグインは多数あり、https://docs.cloudbase.net/framework/plugins/ で確認できます。

クラウド関数プラグイン

まず、以前に記述したクラウド関数をプラグインとして変更します。


構成が完了したら、コードを変更してデプロイメント テストを実行します。


静的ウェブサイトプラグイン

クラウド関数が構成されたら、クライアント コードに戻ります。通常の開発および展開プロセスは次のとおりです。

クラウド開発には、静的サイトホスティングサービスがあります。静的 Web サイト プラグインを使用すると、パッケージ化とオンライン展開のすべての作業を手動で行う必要がなく、ワンクリックで完了できます。

設定も非常に簡単です。

<<:  ブロックチェーンに基づく分散型金融が増加中

>>:  早く来なさい! Amazon クラウド テクノロジー AI カンファレンス オープンソース スペシャル セッションが盛り上がりを見せる

推薦する

ソーシャルネットワークでマーケティングするのに最適な時期

ソーシャル ネットワークが人々の生活の中でますます大きな部分を占めるようになるにつれ、企業はソーシャ...

BandwagonHost: 12.12、DC_8 コンピュータ ルーム、特別価格 VPS、購入をお勧めします!

BandwagonHostは12月12日に特別プロモーションを実施します。伝説のzenlayerとし...

斗宇は「捨て子」になってしまったのか?

もし合併が失敗していなかったら、斗魚の現在の財務実績や市場での人気は、ゲーム業界以外の人々から話題に...

A5年末レビュー: 2013年のモバイルインターネットで何が起こったか

はじめに:いつの間にか、時間は静かに過ぎていきます。あっという間に、2013 年も終わりを迎えます。...

新規出店失敗から学ぶ教訓:タオバオへの出店は焦ってはいけない

タオバオの文化にはキーワードがあり、それはスピードです。他社は7月上旬に秋服を作り始めますが、あなた...

クラウドストレージの人気が高まり、プライベートクラウドのセキュリティパフォーマンスは高く評価されています

現在、世界各国はビッグデータ、モノのインターネット、クラウドコンピューティングなどのハイテクの発展に...

ウェブマスターが最適化に適したキーワードを選択する方法を説明する 5 つのステップ

ウェブサイトのランキングやユーザー エクスペリエンスのどちらを行う場合でも、ランキングの最適化作業を...

turnkeyinternet - マルチ IP SEO ホスティングが 85% オフ

Turnkeyinternet は 1999 年に設立された IDC で、米国の老舗 IDC と言え...

当サイトに適した色調の選び方

ウェブサイトの色調がどれほど重要であるか気づいていないかもしれません。サイトの色調が緑か青かであまり...

reliablehostingservices-VPS 30% オフ/大容量ハードディスク/256M メモリ/20 ドル/年

ReliableHostingServices は 2010 年に設立されました。主な事業はホスティ...

「王宝宝」の新しいブランドマーケティング手法

2017年4月、ブラックアントキャピタルは王宝宝のシリーズB資金調達に約1億元の投資を主導しました。...

WeChat の成功は QQ トラフィックの転換に依存しているのでしょうか?

多くの人は、WeChat の成功はQQ からのトラフィック転換によるものであり、Tencent のサ...

2018年テンセントクラウド+フューチャーサミットが広州で開催され、クラウドを通じてインテリジェントな未来を活性化

5月23日、広東省人民政府の指導の下、広東省経済情報化委員会とテンセントの主催により、2018年テン...

VPS ベンダーの Virmach が半警告のリマインダーを発行しました。データのセキュリティに注意してください。

この記事を書く目的は、データ セキュリティに注意を払い、十分な準備をしておくよう、すべての人に思い出...

ゴダディ 47% オフ

Godaddy が中国人向けの特別な割引コードを提供したのは久しぶりです。今回は強力な割引コードが登...