【アーキテクチャ】Javaシステムアーキテクチャの進化について考える

1 はじめに

モバイルインターネットの発展に伴い、Webサイト、H5、モバイル端末のアプリケーション規模も拡大を続け、アプリケーションの量と質は飛躍的に向上しました。開発者の数は日々増加し、アプリケーションの複雑さも増しているため、機能の提供を迅速に完了し、多数の開発者が協力して作業できるように調整するのは複雑なシステムエンジニアリングです。インターネットの始まりから現在に至るまで、システム アーキテクチャは通常、単一アプリケーション アーキテクチャ、垂直アプリケーション アーキテクチャ、分散アーキテクチャ、SOA アーキテクチャ、およびマイクロサービス クラウド アーキテクチャといういくつかのプロセスを経てきました。この記事では、アーキテクチャの進化の過程と私自身の考え方を紹介します。

2 モノリシックアプリケーションアーキテクチャ

インターネット開発の初期には、Web サイト アプリケーションのトラフィックは小さく、すべての機能コードとデータ ストレージは 1 つのサーバー上にあったため、開発、展開、および保守プロジェクトのコストを削減できました。この段階では、通常、フロントエンドとバックエンドは分離されておらず、複数のアプリケーション サービスが 1 つの Tomcat の下にデプロイされます。一般的な技術スタックには、spring+mybaits+jspまたは が含まれますspring+mybaits+freemakerこの方式の利点は、メンテナンスが 1 人で行えること、開発ペースが速いことですが、欠点は、大規模プロジェクトには適していないこと、モジュール間の結合が大きく、単一点耐障害性率が低いことです。

ここに画像の説明を挿入

3 垂直アプリケーションアーキテクチャ

垂直アプリケーションアーキテクチャの登場の背景には、Webサイトへのアクセス数が増加しており、それに対応するために単一のアプリケーションでもノードを追加できるが、すべてのモジュールがサービス機能を高める必要があるわけではないため、機能に応じてサービスを分割し、多数のモジュールの容量を拡張します。システムを分割することでトラフィックを共有し、同時実行性の問題を解決し、異なる機能モジュールを分割して最適化することができ、また、あるシステムの問題が他のシステムに影響を与えないため、システム間の耐障害性が向上します。垂直アプリケーションであると同時に、さまざまなシステムを呼び出すことができず、重複したファンクションコードが発生します さらに、管理システムにとって、セッションのセッション保持も大きな問題になります このモードでは、Tomcat セッションレプリケーションのモード一般的に使用されており、リソースの消費量が比較的多くなります。
ここに画像の説明を挿入

4 分散アーキテクチャ

分散システムでは、システム内で繰り返されるコードは、独立したサービスとして個別に抽出されます。元の垂直システムは、独立したサービス層と特定のビジネス プレゼンテーション層に分割されます。このアーキテクチャにより、コードの再利用性は向上しますが、コード間の複雑さと結合が低下します。システムが増加し、プロジェクトのメンテナンスがより困難になります。

ここに画像の説明を挿入

5 SOAアーキテクチャ

SOA アーキテクチャでは、分散アーキテクチャに基づいてサービス登録センターが導入され、プレゼンテーション層とサービス層が分離され、システムの運用と保守の困難が大幅に解決されます。SOA アーキテクチャでは、ssm フレームワーク + dubbo + zk の構造が大流行していると言えます。SOAアーキテクチャでは、サービスをさらに分割することで人材の効率を最大化することができ、フロントエンドとバックエンドの分離も実現し、開発効率がさらに向上します。 、システムの複雑さはさらに増加し​​ました。
ここに画像の説明を挿入

6 マイクロサービスクラウドアーキテクチャ

あらゆるものがクラウドにつながり、あらゆるものがクラウドにつながる時代、時代の要請に応じてマイクロサービスのアーキテクチャが登場します。マイクロサービス アーキテクチャでは、サービスがさらに分割され、サービス ガバナンス、サービス監視、リンク追跡、認証および認可のためのさまざまなシステム コンポーネントが導入されます。このシナリオでは、各サービス コンポーネントは、サービスの登録と検出だけでなく、構成センター、リンク トラッキングなどのマイクロサービス ファミリー バケット (springcloud springcloud alibaba) も含めて、より特化されています。
SOA アーキテクチャとマイクロサービス アーキテクチャのサービス機能の比較:

SpringCloud の各コンポーネントのオプションの技術ソリューション。

ここに画像の説明を挿入

7 まとめ

この記事では、主に過去10年間のサービスアーキテクチャの進化の軌跡と、各アーキテクチャのメリット・デメリットを紹介します。今はすべてがクラウド上のインターネットの時代であり、マイクロサービスは現在、大規模プロジェクトで非常に人気のあるソリューションです。ただし、実際のプロジェクト開発では、現実の状況も考慮する必要があります。プロジェクトの位置付けや開発は過度に開発すべきではありません。最も人気のあるソリューションが必ずしも最良であるとは限りませんが、ビジネス シナリオに最適なアーキテクチャを選択する必要があります。これにより、プロジェクトの配信と反復的な更新が保証されます。

おすすめ

転載: blog.csdn.net/u011397981/article/details/132128670