マイクロサービスのチュートリアル: とは何か Archi構造と例

マイクロサービスとは何ですか?

Microservices サービス指向です archiアプリケーションがさまざまな最小の独立したサービス単位の集合として構築される構造パターン。それは ソフトウェア工学 アプリケーションを、明確に定義されたインターフェイスを持つ単一機能モジュールに分解することに焦点を当てたアプローチ。 これらのモジュールは、サービスのライフサイクル全体を所有する小規模なチームによって個別にデプロイおよび運用できます。

「マイクロ」という用語は、単一の開発チーム (5 ~ 10 人の開発者) が管理できる必要があるマイクロサービスのサイジングを指します。 この方法では、大きなアプリケーションが最小の独立したユニットに分割されます。

モノリシックとは Archi構造?

平たく言えば、モノリシックと言えます。 archi構造は、アプリケーションのすべてのソフトウェア コンポーネントが 1 つのパッケージにまとめられた大きなコンテナのようなものです。

モノリシックのコンテキストでの e コマース ストアの例について説明します。 archi構造。

一枚岩 Archi構造
一枚岩 Archieコマースアプリケーションの構造

どの e コマース アプリケーションにも、検索、レビューと評価、支払いなどの標準機能がいくつかあります。 これらの機能は、顧客がブラウザまたはアプリを使用してアクセスできます。 e コマース サイトの開発者がアプリケーションを展開するとき、それは単一のモノリシック ユニットになります。 検索、レビューと評価、支払いなどのさまざまな機能のコードは同じサーバー上にあります。 アプリケーションを拡張するには、これらのアプリケーションの複数のインスタンス (サーバー) を実行する必要があります。

マイクロサービスとは Archi構造?

マイクロサービス Archi構造 あります archiビジネス ドメイン向けに開発された小規模な自律サービスの集合としてアプリケーションを構築できる構造的な開発スタイル。構造スタイルのバリエーションです archiアプリケーションを疎結合サービス コレクションとして配置するのに役立つ構造。マイクロサービス Archiアーキテクチャには、きめ細かいサービスと軽量のプロトコルが含まれています。

マイクロサービスを使用して開発された電子商取引アプリケーションの例を見てみましょう archi構造。このマイクロサービスでは archi構造の例では、各マイクロサービスは単一のビジネス機能に焦点を当てています。検索、評価とレビュー、支払いはそれぞれ独自のインスタンス (サーバー) を持ち、相互に通信します。

Microservices Archi構造
Microservices Archi構造

モノリシックの中で Archiこの構造では、すべてのコンポーネントが 1 つのモジュールに結合されます。しかし、マイクロサービスでは Archi上記のマイクロサービスの例に示すように、それらは相互に通信する個々のモジュール (マイクロサービス) に分散されます。

マイクロサービス間の通信は、リクエストとレスポンスの各ペアが独立したステートレス通信です。したがって、マイクロサービスは簡単に通信できます。マイクロサービスでは Archiこの構造では、データはフェデレーションされます。各マイクロサービスには個別のデータ ストアがあります。この Java マイクロサービス チュートリアルの次は、マイクロサービスとモノリシックの違いについて学習します。 archi構造。

マイクロサービス vs. モノリシック Archi構造

Microservices 一枚岩 Archi構造
アプリケーション全体の各単位は最小である必要があり、XNUMX つの特定のビジネス目標を達成できる必要があります。 すべてのビジネス目標に単一のコードベースで対応
サービスの起動が比較的早い サービスの起動に時間がかかる
障害の切り分けは簡単です。 XNUMX つのサービスがダウンしても、他のサービスは機能し続けることができます。 障害の切り分けは困難です。 特定の機能が動作しない場合、システム全体がダウンします。 この問題に対処するには、アプリケーションを再構築、再テストし、さらに再デプロイする必要があります。
一方のマイクロサービスで行われた変更が他方に影響を与えないように、すべてのマイクロサービスは疎結合である必要があります。 一枚岩 archi構造は密接に結合しています。コードの 1 つのモジュールを変更すると、もう 1 つのモジュールに影響を与えます
企業は、より高い ROI を生み出すサービスに、より多くのリソースを展開できます。 サービスが分離されていないため、個別のリソース割り当ては不可能
頻繁に使用されるサービスには、より多くのハードウェア リソースを割り当てることができます。 上記の電子商取引の例では、支払いと比較して、商品リストをチェックして検索するユーザーの数が多くなります。 そのため、より多くのリソースを検索および製品リストのマイクロサービスに割り当てることができます。 アプリケーションのスケーリングは困難であると同時に無駄も伴います。
マイクロサービスは常に一貫性があり、継続的に利用可能です。 プロセスを最初から開始する必要があるため、開発ツールに過度の負担がかかります。
データはフェデレーションされます。 これにより、個々のマイクロサービスは、そのニーズに最適なデータ モデルを採用できるようになります。 データは一元化されます。
集中力のある小規模チーム。 並行かつ迅速な開発 大規模なチームと多大なチーム管理努力が必要
XNUMX つのマイクロサービスのデータ モデルを変更しても、他のマイクロサービスには影響しません。 データモデルの変更はデータベース全体に影響します
明確に定義されたインターフェイスを使用して他のマイクロサービスと対話します。 適用されない
マイクロサービスはプロジェクトではなく製品に焦点を当てる原則に基づいて動作します プロジェクト全体に重点を置く
コードベース間の相互依存関係はありません。 さまざまなマイクロサービスにさまざまなテクノロジーを使用できます。 ある機能またはプログラムは他の機能またはプログラムに依存します。

マイクロサービスの課題

  • マイクロサービスは相互に依存しており、相互に通信する必要があります。
  • モノリシック システムと比較すると、さまざまなシステムを使用して開発された監視対象のサービスが多くなります。 プログラミング言語.
  • 分散システムであるため、本質的に complex モデル。
  • 異なるサービスには個別のメカニズムがあり、その結果、非構造化データ用に大量のメモリが必要になります。
  • 効果的な管理と teamwork 連鎖的な問題を防ぐために必要
  • あるバージョンで問題が発生し、最新バージョンで問題が再発すると、問題を再現するのは困難になります。
  • マイクロサービスを使用すると、独立したデプロイメントが複雑になります。
  • マイクロサービス archiこの構造により、多くの操作オーバーヘッドが生じます。
  • 新しいサービスがシステムに追加されるとアプリケーションの管理が困難になる
  • 異質なゲームをサポートするには、幅広い熟練した専門家が必要ですneo適切に分散されたマイクロサービス
  • マイクロサービスは、さまざまなビジネス タスクに応じてさまざまなサーバー スペースを維持する必要があるため、コストがかかります。

SOA 対マイクロサービス

SOA サービスは、ディレクトリ リストとして機能するレジストリによって組織内で維持されます。 アプリケーションは、レジストリ内のサービスを検索して、サービスを呼び出す必要があります。

別の世界で、 SOA 音楽監督が全員に指示を与えながら、各アーティストが自分の楽器で演奏するオーケストラのようなものです。

一方、マイクロサービスはサービス指向の一種です archiアプリケーションが 1 つのソフトウェアやアプリケーションではなく、さまざまな小さなサービスの集合として構築される構造スタイル。

マイクロサービスは、各ダンサーが独立しており、何をする必要があるかを知っている劇団のようなものです。そのため、いくつかのステップを見逃した場合でも、正しい順序に戻る方法を知っています。このマイクロサービスで今 archi技術チュートリアルでは、SOA とマイクロサービスの違いについて学びましょう。

SOA とマイクロサービスの詳細な比較は次のとおりです。

SOA Microservices
デザインタイプ SOA では、ソフトウェア コンポーネントはサービスの形式で使用するために外部の世界に公開されます。 マイクロ サービスは SOA の一部です。 SOAの実装です。
依存関係 ビジネスユニットは依存しています。 それらは互いに独立しています。
ソフトウェアのサイズ 従来のソフトウェアに比べてソフトウェアサイズが大きい マイクロサービスではソフトウェアのサイズは常に小さい
テクノロジースタック テクノロジー スタックはマイクロサービスに比べて低いです。 マイクロサービス テクノロジー スタックは非常に大規模になる可能性があります
アプリケーションの性質 本質的に一枚岩 自然の中でのフルスタック
独立性と集中力 SOA アプリケーションは、複数のビジネス タスクを実行するように構築されています。 これらは、単一のビジネス タスクを実行するように構築されています。
展開 導入プロセスには時間がかかります。 導入は簡単で、時間がかかりません。
費用対効果 よりコスト効率が高くなります。 費用対効果が低い。
スケーラビリティ マイクロサービスと比べると少ないです。 高度にスケーラブル。
ビジネスの論理 ビジネス ロジック コンポーネントは単一のサービス ドメイン内に保存されます シンプルなワイヤ プロトコル (XML JSON を使用した HTTP) API は SDK/クライアントで駆動されます ビジネス ロジックは、サービス間のレイヤーのようなエンタープライズ Service Bus のドメイン全体に存在できます。 ミドルウェア

マイクロサービスツール

1) ワイヤーモック: マイクロサービスのテスト

WireMock は、Web サービスのスタブ化およびモック化を行うための柔軟なライブラリです。 特定のリクエストを受信したときに HTTP API によって返されるレスポンスを構成できます。 マイクロサービスのテストにも使用されます。

リンクをダウンロード:http://wiremock.org/

2) ドッカー

Docker は、コンテナーを使用してアプリケーションを作成、デプロイ、実行できるオープン ソース プロジェクトです。 これらのコンテナを使用すると、開発者はアプリケーションを単一のパッケージとして実行できます。 これにより、ライブラリとその他の依存関係を XNUMX つのパッケージで配布できます。

リンクをダウンロード:https://www.docker.com/

3) ヒストリックス

Hystrix はフォールト トレランス Java ライブラリです。 このツールは、マイクロサービスなどの分散環境でリモート サービス、システム、サードパーティ ライブラリへのアクセス ポイントを分離するように設計されています。 障害が発生したサービスを隔離し、障害の連鎖的な影響を防ぐことで、システム全体を改善します。

リンクをダウンロード:https://github.com/Netflix/Hystrix

マイクロサービスのベスト プラクティス Archi構造

  • マイクロサービスごとに個別のデータ ストア
  • 同様の成熟度レベルのコードを維持します。
  • マイクロ サービスごとに個別のビルド。
  • 常に、重度の場合は無国籍として扱います。

まとめ

  • マイクロサービスはサービス指向です archiアプリケーションがさまざまな最小の独立したサービス単位の集合として構築される構造パターン。
  • マイクロサービス Archiテクチャは archiビジネス ドメイン向けに開発された小規模な自律サービスの集合としてアプリケーションを構築できる構造的な開発スタイル。
  • 一枚岩 archi構造は、アプリケーションのすべてのソフトウェア コンポーネントが 1 つのパッケージにまとめられた大きなコンテナのようなものです。
  • マイクロサービスでは、アプリケーション全体のすべてのユニットが最小である必要があり、XNUMX つの特定のビジネス目標を達成できる必要があります。
  • モノリシックで archiこの構造では、大規模なコード ベースが開発プロセス全体の速度を低下させる可能性があります。新しいリリースには数か月かかる場合があります。コードのメンテナンスが難しい
  • 1 種類のマイクロサービス: 2) ステートレス XNUMX) ステートフル
  • Java のマイクロサービスは相互に依存しており、相互に通信する必要があります。 特定の機能とビジネス ニーズを強調するのに役立ちます
  • サービス指向 archiSOA としてすぐに知られる技術は、要求または応答の設計モデルに基づいた分散コンピューティングの進化です。 sync恐ろしいこととsync異常なアプリケーション
  • SOA では、ソフトウェア コンポーネントはサービスの形式で使用するために外部に公開されますが、マイクロ サービスは SOA の一部です。 SOAの実装です
  • Wiremock、Docker、Hystrix は人気のあるマイクロサービス ツールです