web-dev-qa-db-ja.com

マイクロサービスとナノサービス?

それで、あなたはそれを何と呼びますか?マイクロサービスまたはナノサービス?

彼らにはどのような違いがありますか?インターネットでたくさんのブログに出くわしましたが、満足のいく答えは見つかりませんでした。

マーク・リトルからのこの引用を InfoQ で見つけました:

まず最初に、実際にマイクロサービスとは何ですか?確かに難しい定義はありませんが、さまざまな人々との会話から、マイクロサービスは10〜100のLOCマークの周りにある単純なアプリケーションであるというコンセンサスがあるようです。

もう1つ:

Nanoserviceは、サービスがきめ細かすぎるアンチパターンです。ナノサービスは、そのオーバーヘッド(通信、保守など)がその有用性を上回るサービスです。スティーブや他の人と同様に、アーノンはマイクロサービスはSOAの単なる別名であると結論付けています

私は、マイクロサービスとナノサービスの正確で説明可能な区別を探しています。ご意見ありがとうございます!

10
Sunny Sharma

Jeroenの答えは、SOA、マイクロサービス、ナノサービスの違いの要点に近づいていますが、最終的には少しうまくいかないと思います。

したがって、SOAは、ビジネス機能(JeroenのOrderService、またはおそらくCustomerServiceなど)に応じてシステム機能を分類します。サービスは他のサービスを呼び出すことが多いため、依存関係のあるサービスのネットワークの概念が非常に含まれます。それらは、サービス構成の概念も具体化しており、一部のサービスは本質的に他のサービスを集約します。

マイクロサービスは非常によく似ており、SOAサービスを調整して実装する可能性があります。そのため、Mark Littleのような人々はそれらをSOAと同じものと見なしていました。ただし、マイクロサービスは、明確ではなかった特定の実装の詳細を示す傾向もあります。 SOAの文献に明確に示されています。たとえば、DDD BoundedContextsにスコープまたはサイズ設定されることが多く、ストレージに独自のDBを使用し、データの変更をサブスクライバーに公開する必要があります。

その場合、ナノサービスはマイクロサービスよりも範囲が狭く、サーバーレスアーキテクチャで現在実装されているものに沿って、一般的に機能レベルにあります。したがって、nanoservicesからマイクロサービスを構成できます。

したがって、OrderServiceの例に従います。

  • トップレベルには、注文を処理するためのビジネスに焦点を当てたサービスであるOrderServiceがあります。これはSOAレベルのサービスですが、3つの個別のサービスで構成されています。

  • OrderManagementService。注文の状態の作成と管理を担当します。これはマイクロサービスであり、独自のデータストアがあり、SOAサービスと見なすこともできますが、複数のエンドポイント(CreateOrder、CloseOrderなど)があり、ナノサービスではありません。

  • CustomerManagementServiceは、顧客の詳細の処理を担当します。これはマイクロサービスであり、独自のデータストアがあり、SOAサービスと見なすこともできますが、複数のエンドポイント(RegisterCustomer、DeleteCustomerなど)があり、ナノサービスではありません。

  • OrderProcessingServiceは、Orderワークフローの処理、OrderManagementServiceやCustomerManagementServiceなどのさまざまな外部サービスへの呼び出しの調整を担当し、マイクロサービスおよびSOAサービスです。ナノサービスではありません。サービス。

さて、ナノサービスへ。 CustomerManagementServiceを実装するチームは、顧客の電子メールアドレスを検証するための共通のメソッドが必要であると判断し、それをValidateEmailAddressServiceとして実装し、RESTfulエンドポイントを介して利用できるようにします。これはナノサービスであり、サービスとして利用できる単一の機能と考えるのが最適です。

サービスなどの機能を提供するのが良いかどうかは議論の余地がありますが、上記の例ではアンチパターンと呼ぶのは理解できると思います。ただし、ナノサービスはサーバーレスアーキテクチャに位置するという議論があるため、議論が激化する可能性があります。

15
Ubiguchi

SOAサービスとは、サービスレベルでのコンポーネント化(ビジネス機能を中心に構築)に関するものです。マイクロサービスとは、サービスレベル(入力->処理->出力)での機能構成に関するものです。ナノサービスはマイクロサービスよりもさらに小さいため、意味がありません。

サービスとプログラミングの間に類似点を描く場合、SOAはコンポーネント、マイクロサービスはメソッド、ナノサービスはメソッドの関連するコード行と見なすことができます。

OrderServiceは、注文処理を担当するSOAサービスであり、基本的には注文の存続期間中のステートマシンです。確認メールの作成はマイクロサービスです。確認メールのデータを取得するのはナノサービスです。

4
Jeroen