問題タブ [microservices]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
897 参照

java - Discovery pattern for REST API endpoint

I m actually studying Microservice architecture pattern and it seems that the API Gateway pattern uses the Discovery pattern, but with REST API endpoints.

Can anybody explain me how it works for example if my API Gateway is NodeJS based and my REST APIs are Java written ?

I dont really know how can I implement this pattern and I dont find any code or schema to help me understand a bit more.

Thanks for advance

0 投票する
2 に答える
3098 参照

java - マイクロサービス通信

私は実際にマイクロサービスを研究していて、問題に直面しています。

環境

私は2つのマイクロサービスを開発しています:

  • ユーザー管理、Spring ベース、MySQL データベースを使用
  • 計画管理、ASP.NET ベース、SQL Server データベース。このサービスの唯一のアクセス ポイントは、次のようないくつかの RESTFUL エンドポイントをリストする API です。/planning/{day}/{userId} or /planning/{startDate}/{endDate}/{idUser}
  • 請求管理、MongoDB ベースの Node.Js。

問題

  1. 2 つのサービスを結合せずに、ユーザー サービスを介した計画情報へのアクセスのみを許可するにはどうすればよいですか? 後で別の場所から計画サービスにアクセスできることを知っていますが、今はそうではありません。

  2. MySQL データベースのユーザーに対応する課金サービスの課金情報にアクセスするにはどうすればよいですか? マイクロサービスが結合されていないことは知っていますが、この点は私を殺しています。何らかの方法で結合する必要があるからです。請求書で参照idUserするのが好きですか?それ以外の場合、API からどの請求を公開する必要があるかをどのように知ることができますか? より正確には、マイクロサービスは結合せずに、それらの間でどのように通信するのでしょうか?

  3. 他のサービスから認証サービスへの認証要求を複製せずに認証を作成する方法は?

0 投票する
2 に答える
3853 参照

domain-driven-design - マイクロサービスは境界付けられたコンテキストを壊しますか?

私は少し混乱しています。私は若い銀行会社で働いており、複雑さを解消するために DDD アーキテクチャを実装することにしました。

それで、ここに私の質問があります(チームの誰かが行った設計提案に従います)。3 つの異なるドメインがあるとします。ドメイン (Web) サービスを公開する D1、D2、D3。各ドメインは、同じテーブルに依存する厳密に型指定されたビジネス エンティティを操作します。これらのドメインの前では、テーブルに保持されているデータの一貫性を一元的に保証するマイクロサービスが必要です。D1、D2、および D3 は、特定のルールに従ってデータを永続化するようにマイクロサービスに要求します。マイクロサービスがテーブルへの CRUD プロキシとして機能するようにします。マイクロサービスは、D1、D2、および D3 ドメインに特定の DTO を提供し、テーブルを D1、D2、D3 に難読化します。

このアプローチはよさそうですか?DDD アーキテクチャでマイクロサービスを使用して、1 つ以上のドメインの CRUD とデータの一貫性を管理することを検討しますか? マイクロサービスを使用してデータを「CRUD」および検証すると、境界付けられたコンテキストが壊れますか? DDD アーキテクチャでマイクロサービスを扱う場合のベスト プラクティスは何ですか?

あなたの貢献に感謝します。

[編集]

次の記事は、私の考えを洗練するのに役立ちました: http://martinfowler.com/bliki/MicroservicePremium.html

マイクロサービスは、モノリシック システムの保守に失敗した複雑な状況で役立ちます。これらは、先行設計の実装には適していません。一方、DDD はプロジェクトの最初の段階で複雑さに取り組もうとします。成功する DDD は、マイクロサービスの実装に対応するべきではありません。

0 投票する
1 に答える
5317 参照

java - マイクロサービス、サービス レジストリ、API ゲートウェイ、データ共有

マイクロサービス アーキテクチャに関する記事のトーンを実際に読んでいるのですが、それらは説明を深めることなく、可能な限り簡単な方法で物事を扱っているようです。

私の質問を説明するために、実際の小さなアーキテクチャを示します。

ここに画像の説明を入力

そこで、使いたいのがこちら。技術的に何かを作る前に、もっと理論的な情報が必要です。

私のドメインの説明

私には、アプリケーションに接続し、ユーザー情報を取得し、購入したものに関する請求情報を参照できる、モバイルおよびブラウザー ベースの顧客が何人かいます。

モノリシック アプリケーションでは、次のアーキテクチャを使用します。 - Mobile / Angular-Ember を使用したプレゼンテーション レイヤー - その前に NGINX を使用した REST API を使用したビジネス レイヤー - 標準の MySQL データベースを使用した DAL - スケーラビリティは X 軸にのみ適用されます

この場合、マイクロサービス アーキテクチャを使用したいと考えています。なぜなら、それは「ドメイン スケーラブル」で非常に柔軟だからです (もちろん、それについてもう少し学びたいからです)。

スキーマでは、各サービスで、関連する API によって公開される唯一の HTTP URL があります。

質問

a/ (1) フラックスでは、「モバイル」はhttp://myDomain.or/authで http リクエストを送信します。

私の考えでは、APIGateway は標準のサービス レジストリ (Eureka、ZooKeeper など) に、AuthSrv にアクセスできるかどうかを確認し、ネットワーク アドレスを取得できるように依頼できます。その後、ApiGateway は AuthSrv を要求し、サーバーに応答できます。

それはそれを機能させる良い方法ですか?データにアクセスするために X マシンを処理する際に、遅延の問題はありませんか?

b ) フラックス (2) は、サービス レジストリを調べます。/auth/other (公開されている場合) のような子 URL であっても、/auth に対するすべての要求が、このアドレス ip:port のこのサービスに関連していることを、サービス レジストリはどのように理解できますか?

c/フラックス (3) は、サービス レジストリに利用可能な AuthSrv があることを示しています。(3 bis) はその他を示しています: AuthSrv は利用できません。小さなアプリケーションでは、いつか責任を失うことを認めることができますが、何百ものサービスがリンクされている大きなシステムでは、サービスの不足にどのように対処できるでしょうか?

d/別の投稿で、ユーザー、別のサービス、および別のデータベースに関連する請求情報を保存する方法を尋ねていました。

標準アーキテクチャでは、次のようになります。

マイクロサービス アーキテクチャでは、次の使用が推奨されました。

これは「サービスデータ共有」を処理し、サービスを結合しないための最良の方法ですか?

e/この特定のケースで、HTTP プロトコルの代わりに AMQP プロトコルを使用したほうがよいのはいつですか?

前もってありがとう

0 投票する
2 に答える
1474 参照

.net - .NET アプリのマイクロサービスへの移行 - いくつかの質問

アプリをマイクロサービスに分割する作業を開始したいと考えています。私の最初のタスクは、各アプリで繰り返される機能を削除することです。メールの送信、エクスポート、インデックスの検索など、すべてのアプリで同じまたは類似のコードが繰り返されるもの。

私は少し圧倒され、始めるのに苦労しています。マイクロサービスの目的は、仕事に適した言語を選択できるようにすることだと理解していますが、現在の目的では、.NET がすべてを構築する主要なフレームワークであると想定しています。

基本的に、まず最初に、すべてのアプリが必要なメールを送信するように指示して通信できるメールを送信するだけのマイクロサービスを作成したいと考えています。私が考えていた方法は、メール送信者にはメールを送信するロジックがありますが、各アプリは受信者、本文などを伝える必要があります.

私は次のようなことに苦労しています:

  • アプリがこのサービスと通信するには、どのプロトコルを使用する必要がありますか? HTTP 経由の REST? この場合、電子メール送信マイクロサービスは実質的に Web API 2 アプリになります (これは、私が REST API を構築する場合に個人的に使用するものです)。

  • REST を使用する場合、バックエンドから安らかな呼び出しを行う最善の方法は何ですか? 現在、システム内のほとんどのメールはバックエンド コードを介して送信されています。RestSharp という名前が飛び交っているのを見たことがありますが、これが一般的に最善の方法と考えられていますか?

  • 将来の計画では、すべてのサービスを知っているある種のゲートウェイを持つことは有益だと思います。これにより、各アプリはこのゲートウェイについてのみ知る必要があり、ゲートウェイは必要なサービスと通信します。これは、アプリとマイクロ サービスの間の単なる別の REST API でしょうか?

質問ばかりで申し訳ありませんが、職場でステップアップするために、この種のもの (およびアーキテクチャ全般) を始めたところです。

0 投票する
2 に答える
3954 参照

junit - 統合テスト Spring Boot ベースのマイクロサービス

Spring Boot および RESTful サービスの操作に関する多くのガイドを読みましたが、それらの多くには単体テストの実行に関する情報が含まれており、特に「Spring Boot を使用したアプリケーションの構築」が有名です。ただし、クラウド マイクロサービス アーキテクチャで一般的であるように、他の Spring Boot アプリケーションを消費/依存する Spring Boot アプリケーションを単体テストする方法の例を示すものは見たことがありません。たとえば、次の Spring Boot サービスがあります。

ServiceMediator、Adapter1、Adapter2

ServiceMediator は、入力に応じて Adapter1 または Adapter2 を呼び出します。

Spring JUnit テストで ServiceMediator を開始してテストする前に、Spring Boot サービス Adapter1 および Adapter2 を開始する方法はありますか?

0 投票する
2 に答える
1000 参照

git - マイクロ サービス アーキテクチャの依存関係管理

私はマイクロ サービス アーキテクチャに基づいてアプリを構築しています。現在、両方に共通のコードを持つ 2 つのサービスがあります。

それを行う従来の方法は何ですか?(さまざまなプロジェクト、モジュールなど) git リポジトリでそれらを処理する方法についても参照してください (すべての場合? それぞれの場合?)

0 投票する
5 に答える
28665 参照

database - マイクロサービスとデータベース結合

モノリシック アプリケーションをマイクロサービスに分割しようとしている人にとって、データベースを分割するという難問にどのように対処していますか。私が取り組んできた典型的なアプリケーションは、パフォーマンスと単純さの理由から多くのデータベース統合を行っています。

論理的に異なる 2 つのテーブル (場合によっては境界付けられたコンテキスト) があるが、そのデータの大量の集計処理を頻繁に行う場合、モノリスではオブジェクト指向を避け、代わりにデータベースの標準を使用する可能性が高くなります。 JOIN 機能を使用して、集計されたビューをアプリ層に戻す前にデータベース上のデータを処理します。

データベースではなくAPIを介してデータを「結合」する必要があると思われるマイクロサービスにそのようなデータを分割することをどのように正当化しますか。

私は Sam Newman の Microservices book を読みました。モノリスの分割に関する章で、彼は「Breaking Foreign Key Relationships」の例を挙げており、API を介した結合を行うと遅くなることを認めていますが、とにかくあなたのアプリケーションは十分に高速ですが、以前よりも遅くても問題はありませんか?

これは少しばかげているようですか?人々の経験とは?API 結合を適切に実行するために使用した手法は何ですか?