Martin Fowler、Sam Newman、Adrian Cockcroft、Sudhir Tones の多数の記事を見て読んだ後、マイクロサービスは私のソフトウェアに非常に適しているようです。ただし、実装をより深く考えると、いくつかの懸念事項があります。
- 私のソフトウェアには UI があります。これを Web ベースのコンポーネントと呼びましょう。このコンポーネントは、10 ~ 20 の異なるマイクロサービスへの呼び出しを内部で調整/調整し (「プライベート マイクロサービス」と呼びましょう)、AJAX 呼び出しにデータを返す必要があります。このコンポーネントでオーケストレーション ロジックを結合するのは適切な設計ですか? それとも、ジョブを実行する別のマイクロサービスを作成し、このマイクロサービスへの呼び出しを委任するために Web ベースのコンポーネントを非常に薄くする必要がありますか?
- いくつかのパブリック API を公開する必要があります。上記の場合のように、呼び出しを委任するために別のレイヤーが必要ですか?
多かれ少なかれ、パブリック/プライベート マイクロサービスの設計パターンに関するものだと思います。
上記の懸念に対処するための良いパターンは何ですか?
2015 年 4 月 9 日更新:
API Gateway Pattern は実際に私の懸念に対処します。EAI パターンまたはセキュリティの考慮事項に関する他の回答にも同意します。
私の調査結果をさらに拡張すると、Netflix アーキテクチャにはいわゆる「エッジ サービス」があると思います。これは、Web ベースまたはデバイスからのリクエストを処理するフロント層であり、中間層サービスは実際にはマイクロサービスです。したがって、中間層サービスをエッジ サービスに昇格させるには、デリゲートが必要だと思います。これにより、中間層がクリーンで一貫した状態に保たれます。
さらにアイデアを得るには、https://github.com/cfregly/fluxcapacitor#project-overviewをご覧ください。