イベント駆動型アーキテクチャはなぜ人気があるのですか? Amazon Cloud Technology が答えを提供します

過去 20 年から 30 年の間、ソフトウェア開発の分野は間違いなく最も急速に成長している産業の 1 つです。

1990 年代、世界で時価総額が最も高い企業のほとんどは、エクソン モービルやゼネラル モーターズなどの資源または重工業企業でしたが、現在、時価総額が最も高い企業の中で、純粋なソフトウェア企業である Google と Microsoft がトップです. 5 つ、そしてナンバーワン Apple もソフトウェアビジネスのかなりの部分を占めています。

今日、すべての企業は例外なくソフトウェアを使用してビジネスを最適化しているため、ソフトウェア業界で多くの雇用機会が生まれ、ソフトウェアおよび関連業界に参入する小さなパートナーもますます増えています。

同様に、ソフトウェア業界も日々変化しているからこそ、新しい技術や新しいパラダイムが絶え間なく生まれています。初期のオブジェクト指向プログラミングと 23 の設計パターンから、サービス指向のソフトウェア アーキテクチャ、そして今日人気のあるマイクロサービスとクラウド ネイティブ ソフトウェアに至るまで、目まぐるしく見えます。

ソフトウェア アーキテクチャの中で最も人気があるのは、間違いなくイベント ドリブン アーキテクチャ (EDA) です。このアーキテクチャは、その高い耐障害性、高いアップグレード可能性、およびさまざまなモジュールの結合の少なさから、さまざまなソフトウェア開発チームによって広く使用されています。

クラウド コンピューティング サービス プロバイダーは、最新のソフトウェア開発のインフラストラクチャとして、イベント駆動型アーキテクチャ ソフトウェアの開発と展開のための一連のネイティブ サービスも提供しています。今日は、イベント駆動型アーキテクチャのアプリケーションを見ていきます。

簡単な例で説明しましょう。現在、多くのウェブサイトには写真をアップロードする機能があり、ソーシャル メディアのウェブサイトであれ、e コマースのウェブサイトであれ、ユーザーは写真をアップロードすることができ、アップロードされた写真はバイヤーズ ショーなどのこのウェブサイトに表示されます。

通常のユーザーにとって、画像をアップロードすることは単純なアクションですが、その背後にあるロジックは、ソフトウェア開発チームによる慎重な設計が必要です。

携帯電話のカメラの強力な機能のおかげで、ユーザーがアップロードした写真はサイズが大きいことが多く、直接 Web サイトに配置すると、画面表示のサイズを超えて、Web ページの他の要素の位置を占有してしまいます。また、大きすぎる写真は読み込み速度が遅く、Webページの読み込みや表示に大きな影響を与えます. この時、画像をサムネイルに縮小して表示するのは自然な考えです.

では、「画像のアップロード」から「サムネイルの生成」、「サムネイルの表示」まで、この機能をソフトウェア アプリケーションでどのように実装できるのでしょうか。

分析には従来のデータ駆動型の考え方を使用します. ユーザーが画像を Web サイト サーバーにアップロードすると、画像を圧縮するメソッドが直接呼び出され、元の画像とサムネイルがそれぞれファイル サーバーに保存されます。 Web サイト上の画像要素は、サムネイルの場所をポイントすることによって、サムネイルを生成するための要求を実現できます。

ただし、サムネイル機能のユーザーの増加に伴い、ユーザーは新しい要件を提案しました。使用されるデバイス画面は大小さまざまであるため、サムネイル機能は、さまざまな画面サイズに対してさまざまなサイズの複数のサムネイルを生成できますか? シンプルなサムネイル機能が徐々に拡張され始めました。

同時に、サムネイル機能のユーザーが増えるにつれて、Web サイトの応答速度はますます遅くなり、直接クラッシュすることさえありました。

Web サイト サーバーから見ると、画像をアップロードする圧縮操作と、ユーザーの要求に応答する Web サイトの機能が結合されて同期的に実行されるため、Web サイト サーバーのリソースが過剰に占有され、Web サイトはより多くの要求に応答できなくなります。より多くのユーザー リクエスト。

開発チームはすぐに、サムネイル生成機能を個別に抽出し、時限タスクの方法を使用して固定フォルダー内の画像ファイルを圧縮することを決定しました。これにより、Web サイト サーバーから圧縮機能を削除し、Web サイト サーバーのリソースを節約できます。

ただし、これにより、ユーザーがアップロードしたファイルを時間内に表示できるように、このスケジュールされたタスクがどのくらいの頻度で実行されるかという新たな問題が生じました。スケジュールされたタスクの実行時に圧縮が必要なファイルを特定する方法は? 圧縮が完了した後、圧縮ファイルをロードするよう Web サイト アプリケーションにどのように通知する必要がありますか?

このような小さな機能の設計は非常に精巧なようです. さまざまなタイプとサイズの圧縮機能をサポートするには, 非同期で実行し、異なるサーバーに個別に展開できる必要があります. さらに、他のチームもこの機能に関心を持っています. . 、このサムネイル生成機能も他のアプリケーションと統合する必要があります。単純な機能から拡張し、さまざまな異なるニーズを考慮に入れるために、今回はイベント ドリブン アーキテクチャを使用して構築する必要があります。

イベントドリブンアーキテクチャは、その名の通り、アーキテクチャ内の各モジュールをイベントの順序で柔軟に実行できるようにし、実行結果を新しいイベントとして使用して、次のモジュールの実行を駆動できるようにするものです。

このように、各モジュールには明確な実行境界と開始条件があり、アーキテクチャの役割は、これらのイベントと対応するモジュールを組み合わせて完全なアプリケーションを形成することです。

この画像アップロード機能の例では、最初に発生するイベントはユーザー アップロードです. Web サイト サーバーがユーザーによってアップロードされた画像を受信すると、ファイル サーバーに画像が保存され、「アップロード完了」の結果が返されます。クライアントに返される. シンプルかつ迅速; ファイルサーバー上のファイル変更は2番目のイベントになり、すぐにサムネイルモジュールの起動を開始し、画像をパラメーターとしてサムネイルモジュールに渡し、非同期で実行できます、他のモジュールができるように実行がブロックされず、他のモジュールの応答性が向上します。

同時に、さまざまなサイズの圧縮タスクを、タスクを渡すパイプラインのように、直列または並列で実行できます.各モジュールは、効率的で簡潔な独立したタスクのみを担当し、モジュールの組み合わせアーキテクチャによって柔軟に制御されるため、将来の拡張や変更に便利です。

このように、今まで複雑に見えていた機能が単純な機能の組み合わせになり、さまざまなイベントの発生に柔軟に対応できるようになり、開発作業が単純明快になります。

将来、運用チームがユーザー アップロードのログ機能を追加するなどの新しい要件を提案した場合、ログ機能を追加して、ユーザー アップロード イベントによって駆動されるように設定するだけで、非常に簡単になります。が実現します。

また、各モジュールが独立しているため、テストとスケーリングが容易になり、アプリケーション全体がより堅牢で高速になります。エンジニアリング構築の観点から、イベント駆動型アーキテクチャは、ソフトウェア開発における高凝集性と低結合の仕様を満たし、開発と拡張の難しさを大幅に簡素化します.したがって、国内外の開発チームは、イベント駆動型アーキテクチャアプリケーションを積極的に採用しています. .

現在のテクノロジの巨人の中で、Amazon Cloud Technology は、イベント駆動型アーキテクチャを最も強力にサポートする主要なプレーヤーの 1 つです。

Amazon クラウド テクノロジー プラットフォームでは、そのネイティブ サーバーレス マイクロサービスは、イベント駆動型アーキテクチャのパラダイムに完全に従います。

写真をアップロードする機能を例にとると、アップロードされた写真が Amazon Cloud Technology の S3 ストレージに保存されると、ファイル追加イベントがトリガーされ、開発者はサムネイル機能をマイクロサービスとして Lambda に書き込むだけで済みます。 Function. をクリックし、マイクロサービスのトリガー条件を対応するファイル追加イベントに設定します。これは、画像がアップロードおよび保存されたときにトリガーおよび実行できます。

Amazon クラウド テクノロジー プラットフォームでは、Lambda 関数は、クラウド サービスで一般的に使用されるさまざまなイベントを開発チームが直接使用できるように提供します。これには、前述の Amazon クラウド テクノロジー S3 ストレージ サービスのイベントや、クラウド サービスによって監視されるイベントが含まれます。 、IoT Alexa デバイスでのイベント、API Gateway での API 呼び出しイベント、DynamoDB NoSQL データベースからのイベント、MQ 情報フロー イベントなど。

詳細については、このリンクをコピーしてブラウザで表示できます。

https://aws.amazon.com/cn/lambda/

これらのネイティブにサポートされているイベントによって生成された情報は、Lambda 関数が使用できるようにカプセル化されています。豊富なイベント フォーム サポートにより、開発者はこれらのイベントの背後にある基盤となるテクノロジをあまり気にする必要がなくなり、ビジネス ロジックの実装により集中できるようになります。

Amazon Cloud Technology がイベント駆動型アーキテクチャを包括的に採用していることは、ここに反映されています。Amazon Cloud Technology が提供するほぼすべてのクラウド コンピューティング サービスは、イベントのサポートを実装しています。これらのクラウド コンピューティング サービスのイベント トリガーには、統一された完全なインターフェイスがあり、開発者は自由に組み合わせて最適な組み合わせ効果を生み出すことができます。

開発チームが懸念するアプリケーションのパフォーマンスとクラウド コンピューティングのコストに関しても、Amazon Cloud Technology はイベント ドリブン アーキテクチャを使用することでスケーラビリティの高い設計を実現しています。

イベント駆動型アーキテクチャのアプリケーションでは、イベント駆動型論理モジュールを非同期で呼び出すことができます。つまり、イベントが発生しない場合、対応する論理モジュールはロードおよび実行されません。

このようにして, アプリケーションによってロードされるクラウド コンピューティング サービスをある程度最小限に抑えることができます. たとえば, 前述のサムネイル機能の例では, Web サイト アプリケーションは, ユーザーがファイルをアップロードするときにのみサムネイル マイクロサービスを呼び出します. このときサーバーレスの Lambda 関数マイクロサービスは休止状態であり、コストは発生しません。

マイクロサービスが開始されると、Amazon Cloud Technology はマイクロサービスの実行時間を秒単位で計算し、使用時間に応じて料金を請求します。同時に、マイクロサービスには自動的にスケーリングする機能もあります。

Amazon Cloud Technology Lambda 関数を使用すると、ユーザーは同時に実行されるマイクロサービスの数の上限を設定できます.上限が 1000 に設定されている場合、マイクロサービスはトリガーに応答するために同時に 1000 のインスタンスを起動できることを意味します仮想化の特性により、起動の実行とリソースの回復はすべてミリ秒レベルで行われます. 多数のイベントトリガーに直面した場合、それは本当に高速で高速です.途切れない。さらに、マイクロサービスには、パフォーマンスとリソースの自動スケーリングに関連する他のさまざまな設定もあり、ユーザーのさまざまな需要パターンを満たすことができます。

サムネイル機能の例に戻ると, 異なるサイズのサムネイルを生成するマイクロサービスを並行して実行することができます. 同じ S3 に保存された新しいファイルイベントを使用して, 異なる圧縮パラメータによって補完された複数の異なるサムネイルマイクロサービスを駆動することで, 生成することができます.並列に異なるサイズのサムネイル。

次に、サムネイルの生成後にさまざまなサイズのサムネイルに透かしを追加する必要がある場合は、マイクロサービスを連続して実行できる必要があります。

開発者は、ウォーターマーク機能のコードをサムネイル マイクロサービスに直接追加することもできますが、ウォーターマーク機能を別のマイクロサービスにカプセル化して、個別に展開する方が適切です。 Web サイト アプリケーションの全体的なパフォーマンスと堅牢性。

リファレンス アプローチは、ユーザーがアップロードした元の画像を最初の S3 ファイル バスケットに保存することです. このバスケットは、新しく追加されたファイルのイベントをトリガーして、サムネイル マイクロサービスの実行を促進します; サムネイル マイクロサービスの実行が完了すると、サムネイルは S3 の 2 番目のバスケットに格納され、この 2 番目のバスケットは次の新しいファイルのイベントを駆動して、透かしを追加するマイクロサービスを駆動します; 最後に、透かしを追加するマイクロサービスは最終的な画像ファイルを 3 番目に格納しますかごに入れてウェブサイトに返却し、参考にしてください。

このように、一連のイベントによって駆動される複数のマイクロサービスは、さまざまな論理プロセスを柔軟に形成して、情報を処理し、ユーザーが期待する機能を実現できます。

これは、Amazon Cloud Technology におけるイベント駆動型アーキテクチャの幅広いアプリケーションを完全に示しており、Amazon Cloud Technology もイベント駆動型アーキテクチャを利用して、ユーザーと開発者に力を与えています。

サムネイル機能の実装全体を見ると、前述の Amazon Cloud Technology のさまざまなサービスに加えて、Amazon Cloud Technology は、サムネイル機能を完成させるために他の何百ものサービスも提供しています。

API Gateway は、マイクロサービスを整理するための統一された API インターフェイスを提供します。Amazon Cloud Technology CloudFront CDN ネットワークは、ネットワーク リソースへのアクセスを高速化するために、さまざまな地域のデータ センターにサムネイルをキャッシュできます。Amazon Cloud Technology は、開発者がコードを簡単に管理できるようにする完全な開発者ツールも提供します。導入の自動化、アプリケーション ステータスの監視などを行います。

Amazon Cloud Technology のワンストップ サービスとツール コレクションは、開発チーム、運用チーム、およびエンド ユーザーに最も近い完璧なソリューションを提供します。

現代のソフトウェア エンジニアリング技術の開発において、イベント駆動型アーキテクチャの適用は新しい概念ではなく、長年にわたって続いてきたものであり、クラウド コンピューティング技術が爆発的に普及している現在、ソフトウェア アプリケーションの設計および構築方法を完全にガイドしています。柔軟かつ効率的に. .

クラウド コンピューティング プラットフォームのリーダーとして、Amazon Cloud Technology は、クラウド コンピューティングの分野での最先端をさらに強化し、開発チームにとっても最良の選択である、イベント駆動型アーキテクチャの包括的な採用からも恩恵を受けています。

来月には、Amazon Cloud Technology China Summit (オンライン ライブ ブロードキャスト) が開催されます. サミットには、イベント駆動型アーキテクチャのアプリケーションの実践が含まれます. さらに、会議には、機械学習の進化傾向、Web3 の開発と傾向も含まれます.などなど。内容は非常に充実しており、技術系の学生は生放送を視聴することを強くお勧めします。

以下のリンクをクリックするか、下のQRコードを読み取って無料で登録してください。

https://summit.awsevents.cn/2022/signin?source=gh/ZsR4xii4TX2Vs20QVMll1zZPRiPIKqZ5oXQYJ9F8=&tab=1&type=2

転載元:  Passerby A TM

{{o.name}}
{{m.name}}

おすすめ

転載: my.oschina.net/u/4806939/blog/5580448