ソフトウェアアーキテクチャの開発・研究状況

ソフトウェアアーキテクチャ研究の現状

ソフトウェア アーキテクチャの開発は、単一アーキテクチャ、分散アーキテクチャ、SOA アーキテクチャ、マイクロサービス アーキテクチャの 4 つの段階を経てきました。

1.3.1 モノリシック アーキテクチャ

Web アプリケーション開発の黎明期、ほとんどの Web エンジニアはすべての機能を 1 つのプロジェクト プロジェクトに統合し、war パッケージ内のすべての機能をサーバーにデプロイし、アプリケーション クラスターとデータベース クラスターをデプロイすることでシステム パフォーマンスを改善しました。このモードでは、プロジェクト構造がシンプルで、初期開発コストが低く、サイクルが短く、開発効率が高く、モジュール間の相互作用はローカル メソッド呼び出しを使用するため、デプロイとテストが容易です。しかし、欠点も明らかです。すべての機能が 1 つのプロジェクトに統合されているため、大規模なプロジェクトよりも大きい場合、開発、拡張、および保守が容易ではありません。バージョンの反復速度が徐々に遅くなる. 場所を変更するには、アプリケーション全体をコンパイル、デプロイ、および開始する必要がある. 開発とテストのサイクルが長すぎる. スケーラビリティに乏しく、横展開はクラスター方式であり、特定の業務のニーズに応じたスケーリングができません。

1.3.2 分散アーキテクチャ

単一のアーキテクチャの欠如を考慮し、将来の大規模プロジェクトの開発ニーズを満たすために、多くの企業は、単一のシステムをビジネスの垂直方向の違いに応じていくつかのシステムに分割します. システムは互いに相互作用してユーザーの業務処理、および各システムを分散して配置できるため、このアーキテクチャは分散アーキテクチャになります。分散アーキテクチャは、システムに負荷分散機能を提供し、モジュール間のコードの結合を減らし、システムの柔軟性を向上させます。欠点は、データの冗長性、機能の冗長性、およびサブシステム間の結合度が高いことです。オンデマンド スケーリングの粒度は十分ではなく、同じサブシステム内のさまざまなビジネスに対して実現することはできません。
ここに画像の説明を挿入

1.3.3 SOA アーキテクチャ

SOA は、さまざまなビジネス機能をサービスに分割し、明確に定義されたインターフェイスとプロトコルを介してそれらを接続する、分散アーキテクチャに基づくサービス指向アーキテクチャです。繰り返し機能をサービスとして抽出し、開発効率を向上させ、システムが提供する再利用性と保守性を向上させることがメリットです。さまざまなサービスの特性に応じてスケーリングできます。欠点は、システムとサービスの間の境界があいまいになり、抽出されるサービスの粒度が大きくなりすぎ、システムとサービスの間の結合が高くなることです。ESB を使用していますが、サービス インターフェイス プロトコルが固定されておらず、多くの種類があり、システムの保守には不向きです。
ここに画像の説明を挿入

1.3.4 マイクロサービス アーキテクチャ

SOA アーキテクチャの考え方に基づいて、大規模なプロジェクトやマルチクライアント向けのモバイル インターネットのニーズを満たすために、サービス レイヤーは細かい分割に分割され、分割された各サービスは特定のビジネス機能のみを完了します。たとえば、注文サービスは注文関連のビジネスのみを実装し、ユーザー管理関連のビジネスのユーザー サービス実装など、サービスの粒度は非常に小さいため、マイクロ サービス アーキテクチャと呼ばれます。利点は、サービス分割の粒度が細かくなることです。これにより、リソースの再利用が促進され、開発効率が向上します。各サービスの最適化計画をより正確に策定し、必要に応じて拡張することができます。インターネット時代に適用され、製品のイテレーション サイクルが短くなります。しかし、ビジネス プロセスはネットワークの相互作用を通じて完了するために複数のマイクロサービスを必要とするため、開発の複雑さが増すという欠点も明らかです。マイクロサービスが多すぎて、サービス ガバナンスのコストが高くなり、システムのメンテナンスに役立たない。そのため、小規模プロジェクトのアーキテクチャには適していません。

2014 年、Martin Fowler と James Lewis は共同でマイクロサービスの概念を提案しました。マイクロサービス アーキテクチャは、SOA の実装と見なすことができます。以前にマイクロサービスを使用していた Netflix は、マイクロサービスが細粒度の SOA であると考えています。マイクロサービス アーキテクチャを図 1-1 に示し、マイクロサービスと SOA の比較を表 1-2 に示します。マイクロサービスはアプリケーションをより細かい粒度で分割し、各サービスは RESTful API または RPC (リモート プロシージャ コール) を介して通信します。
ここに画像の説明を挿入

2016 年、Pivo​​tal チームは Spring Cloud サービス ガバナンス フレームワークをリリースしました。このフレームワークは、Spring Boot に基づいて迅速に構築されました[5]。Spring Boot は、Spring フレームワークに基づいて改良されており、設定より規約の原則に従うことで、面倒な Spring の設定を簡素化します。Spring の最大の貢献は、アスペクト指向プログラミング (AOP、Aspect Oriented Programming) と制御の反転 (IoC、Inversion of Control) にあります. 現在、Spring は依然としてバックエンド開発の主導的地位にあります. Spring Cloud には Spring Boot の優れた機能が含まれており、サービスの検出と登録、サービス ヒューズ、負荷分散、ゲートウェイ ルーティング、リンク トラッキングなどのコンポーネントを含む完全なソリューション セットを構築します。第 1 世代の Spring Cloud は Spring Cloud Netflix をベースにしています.Spring Cloud Netflix がメンテナンス状態に入ったので、第 2 世代は Alibaba チームのオープンソースの Spring Cloud Alibaba をベースにしています.現在、Spring Cloud Alibaba はうまく培養されています. Spring Cloud Alibaba は、広く使用されている Nacos、Sentinel、RocketMQ、Spring Cloud Gateway など、Alibaba チームの優れたオープン ソース コンポーネントを統合します。

おすすめ

転載: blog.csdn.net/qq_45473439/article/details/124093940