Architectural Thinking Growth Series チュートリアル (6) - サーバーレス アーキテクチャに関する予備調査

バックグラウンド

テクノロジー業界の人々は、一般的にサーバーレスを「サーバーレス アーキテクチャ」と呼んでいます。サーバーレスは、特定のプログラミング フレームワーク、クラス ライブラリ、またはツールではありません。

コンテンツ

サーバーレスとは​​?

簡単に言えば、サーバーレスはソフトウェア システム アーキテクチャのアイデアと方法です。

その核となる考え方は、ユーザーは、アプリケーション サービスの操作をサポートする基礎となるメカニズムに注意を払う必要がないということです。このアーキテクチャの考え方と方法は、将来のソフトウェア アプリケーションの設計、開発、運用に大きな影響を与えるでしょう。

いわゆる「サーバーレス」とは、サーバーレス アーキテクチャに基づくソフトウェア アプリケーションがサーバーなしで実行できるという意味ではなく、ユーザーが状態やリソース (CPU、メモリ、ディスク、ネットワークなど) を気にする必要がないことを意味します。ソフトウェア アプリケーションの操作に関与する基盤となるサーバーの数と量。ソフトウェア アプリケーションの通常の動作に必要なコンピューティング リソースは、基盤となるクラウド コンピューティング プラットフォームによって動的に提供されます。

サーバーレスと従来のアーキテクチャの違い

従来のシナリオでは、ユーザーがアプリケーション開発を完了した後、ソフトウェア アプリケーションは指定された動作環境に展開され、ユーザーは特定の仕様 (一定量の CPU、メモリ、およびアプリケーションの通常の動作。アプリケーションの起動後、実際の運用状況に応じて、ユーザーはより多くのサーバー リソースを申請して、より高いトラフィックに対応するための拡張を行うことができます。

サーバーレス アーキテクチャでは、状況はまったく異なります。

  • ユーザーがアプリケーション開発を完了すると、ソフトウェア アプリケーションは指定された動作環境にデプロイされます.この動作環境は、特定のサーバーまたはサーバーではなく、サーバーレスをサポートするクラウド コンピューティング プラットフォームです. クライアント要求が到着するか、特定のイベントが発生すると、クラウド コンピューティング プラットフォームは、サーバーレス クラウド コンピューティング プラットフォームのホストにアプリケーションをデプロイする責任を負います。
  • サーバーレス クラウド コンピューティング プラットフォームは、ホストがアプリケーションの通常の動作に必要なコンピューティング リソースを提供することを保証します。アクセス数が増えると、クラウド コンピューティング プラットフォームはアプリケーションの展開インスタンスを動的に増やします。アプリケーションが一定期間アイドル状態になると、クラウド コンピューティング プラットフォームはホストからアプリケーションを自動的にアンインストールし、リソースを解放します。

サーバーレスがもたらす価値

テクノロジーが広く認知され、採用される理由は、多くの場合、そのテクノロジーがいかに新しいかクールかという理由ではなく、最も重要な原動力は、それがビジネスに巨大な商業的または経済的価値をもたらすことができるということです。

サーバーレスの価値は、次の側面に反映されています。

まず、運用の複雑さを軽減します

サーバーレス アーキテクチャは、ソフトウェア アプリケーションとサーバーを切り離し、サーバーはもはやユーザー開発とアプリケーションの操作の中心ではありません。アプリケーションがオンラインになる前に、ユーザーはサーバーの数と仕様を事前に計画する必要がなくなりました。運用および保守プロセス中、ユーザーは特定のサーバーのステータスを継続的に監視および維持する必要がなくなり、アプリケーションの全体的なステータスのみを気にする必要があります。

第二に、運用コストを削減します

サーバーレス アプリケーションはオンデマンドで実行されます。The application will only be loaded and run when there is a request to be processing or an event is generated. アイドル状態では、サーバーレス アプリケーション自体はコンピューティング リソースを占有しません。

サーバーレス アーキテクチャでは、ユーザーは要求の処理に使用されるコンピューティング リソースに対してのみ料金を支払う必要があり、アプリケーションのアイドル期間中のリソース占有に対して料金を支払う必要はありません。この機能により、パブリック クラウド サービスを大規模に使用するユーザーは、かなりの費用を節約できます。

第三に、製品の市場投入までの時間を短縮する

サーバーレス アーキテクチャでは、アプリケーション機能がいくつかのきめ細かいステートレス機能に分解され、機能間の境界がより明確になり、機能モジュール間の結合度が大幅に減少します。これにより、ソフトウェア アプリケーションの開発がより効率的になり、アプリケーション開発の反復サイクルが短縮されます。

サーバーレス アーキテクチャ アプリケーションの市場投入までの時間 (Time To Market、TTM) は大幅に短縮されます。

第四に、イノベーション力の強化

アプリケーションの開発と展開の効率が向上することで、ユーザーは新しいアイデアやアイデアをより短い時間と少ない投資で試すことができます。

サーバーレスの技術的特徴

  • オンデマンドで読み込みます。サーバーレス アーキテクチャでは、アプリケーションのロード (ロード) とアンロード (アンロード) は、サーバーレス クラウド コンピューティング プラットフォームによって制御されます。これは、アプリケーションが常にオンラインであるとは限らないことを意味します。リクエストが到着したとき、またはイベントが発生したときにのみ、デプロイおよび開始されます。
  • イベントドリブン。さまざまなイベント ソース (Event Source) からのイベントを特定の関数に関連付けることで、さまざまなイベントに対するさまざまな反応を実現できるため、イベント駆動型 (Event Driven) アーキテクチャを非常に簡単に実装できます。
  • 状態はローカルに保持されません。アプリは特定のサーバーに関連付けられなくなりました。したがって、アプリケーションの状態は、それが実行されているサーバー上に保持することはできません。
  • セッション持続性なし。アプリは特定のサーバーに関連付けられなくなりました。リクエストを毎回処理するアプリケーション インスタンスは、同じサーバー上のアプリケーション インスタンスか、新しく生成されたサーバー上のアプリケーション インスタンスである可能性があります。したがって、サーバーレス アーキテクチャはステートレス アプリケーションにより適しています。
  • 自動弾性スケーリング。サーバーレス アプリケーションは、高可用性をネイティブにサポートし、突然の高トラフィックに対処できます。アプリケーション インスタンスの数は、実際のトラフィックに応じて、クラウド コンピューティング プラットフォームによって弾力的かつ自動的に拡張または縮小されます。
  • 機能化を適用します。サーバーレス アーキテクチャのアプリケーションは機能化されますが、サーバーレスはサービスとしての機能 (FaaS) とは言えません。
  • サービス化に頼る。サーバーレス アーキテクチャでのアプリケーションの依存関係は、サービス指向かつサーバーレスである必要があります。つまり、Backend as a Service (BaaS) を実装する必要があります。アプリケーションが依存するすべてのサービスはすべてバックグラウンド サービス (バックエンド サービス) であり、基礎となる詳細を気にすることなく、BaaS を介してアプリケーションを簡単に取得できます。FaaS と同様に、BaaS もサーバーレス アーキテクチャ実装の重要なコンポーネントです。

サーバーレスの適用シナリオ

1. Web アプリケーション

サーバーレス アーキテクチャは、さまざまな静的および動的 Web アプリケーションを十分にサポートできます。FaaS の自動伸縮拡張機能により、サーバーレス Web アプリケーションは、高トラフィックを処理できるサイトを迅速に構築できます。

興味深い例を挙げると、5 年ごとの国勢調査に対応するために、ある国の政府は 1,000 万ドル近くを費やしてオンラインの国勢調査システムを構築しました。しかし、システムは大量のトラフィックのために圧倒され、クラッシュしました。プログラミング コンテストで、2 人の大学生がパブリック クラウド上に同様のシステムを 2 日で構築し、費用は 500 ドル未満でした。ストレス テストでは、2 人の大学生のシステムが同様のストレスに耐えました。

2. モバイルインターネット

サーバーレス アプリケーションは、BaaS を介してさまざまなバックエンド サービスに接続し、ビジネス ニーズを満たし、アプリケーション開発の効率を向上させます。開発者は、サーバー側アプリケーション全体の開発に時間と労力を費やすことなく、関数を使用してビジネス ロジックをすばやく実装できます。

3.モノのインターネット

モノのインターネット (IoT) アプリケーションは、多数の異なるデバイスを接続する必要があります。さまざまなデバイスが継続的にデータを収集してサーバーに送信する必要があります。サーバーレス アーキテクチャは、IoT アプリケーションがさまざまなデータ入力ソースに接続するのに役立ちます。

4. システム統合

サーバーレス アプリケーションの機能アーキテクチャは、システム統合に最適です。ユーザーは、過去のようにいくつかの単純な統合ロジックのために完全なアプリケーションを開発および維持する必要はありません. ユーザーは、必要な統合ロジックにもっと集中し、完全なアプリケーションではなく、関連するコードロジックを記述して統合するだけで済みます.

サーバーレスの制限

1. コントロール

基盤となるコンピューティング リソースを制御する必要がある一部のアプリケーション シナリオでは、サーバーレス アーキテクチャは最適な選択肢ではありません。

2.携帯性

サーバーレス アプリケーションの実現は、サーバーレス プラットフォームと、プラットフォーム上の FaaS および BaaS サービスに依存します。さまざまな IT ベンダーのサーバーレス プラットフォームとソリューションの特定の実装は同じではありません。

3. セキュリティ

サーバーレス アーキテクチャでは、アプリケーションが実際に実行されるホストをユーザーが直接制御することはできません。異なるユーザーのアプリケーション、または同じユーザーの異なるアプリケーションが、実行時に基盤となるホスト リソースを共有する場合があります。高度なセキュリティ要件を持つ一部のアプリケーションでは、これにより潜在的なセキュリティ リスクが発生します。

4. パフォーマンス

アプリケーションの最初のロードおよびリロード中に、一定の遅延が発生します。一部の遅延の影響を受けやすいアプリケーションでは、アイドル タイムアウト期間をプリロードまたは延長して処理する必要があります。

5. 実行時間

ほとんどのサーバーレス プラットフォームでは、FaaS 機能の実行時間が制限されています。したがって、サーバーレス アプリケーションは、実行時間が短いジョブに適しています。

やっと:

全体として、この新しいクラウド コンピューティング サービス提供モデルは、開発者と管理者に多くのメリットをもたらします。適切なレベルの柔軟性と制御を提供するため、IaaS と PaaS の中間的な方法が見つかります. サーバー側で管理するものがほとんどないため、サーバーレス アーキテクチャは、ソフトウェアの開発と展開の分野に革命をもたらしています。 NoOps モデルの進化。

 

前の章のチュートリアル

Architectural Thinking Growth Series チュートリアル (5) - 大規模で複雑なマイクロサービス システムのアーキテクチャの実践

一連のチュートリアル

建築的思考の成長シリーズのチュートリアル

私のコラム

 

 

以上で、すべての紹介は終了です

 

 

-------------------------------

-------------------------------

 

私の CSDN ホームページ

私について(個人ドメイン名、私に関する詳細情報)

私のオープンソース プロジェクト コレクション Github

 

皆さんと一緒に学び、成長し、激励できることを楽しみにしています, O(∩_∩)O ありがとう

質問の交換へようこそ。個人的な QQ 469580884 を追加できます。

または、私のグループ番号 751925591を追加して、コミュニケーションの問題について一緒に話し合ってください

嘘について話さないで、ただ実行者になりなさい

話は安いです、コードを見せてください

おすすめ

転載: blog.csdn.net/hemin1003/article/details/114928776