独立したあなたの2つのマイクロのサービスを持って、私はまた、コードを複製するだろう将来的に独立したもそれらを持つという点で。私たちは以前とまったく同じ状況でした。いくつかのマイクロサービスは、別個のジャーに置くことができるいくつかの「共通の」クラスを使用しているようです。 最後に、次のような状況がありました。 - 同じJARを使用している複数の(5+)サービス - 異なるサービスでは、同じ意味を持つクラスが少し異なるようです。 - クラスは多かれ少なかれ、すべてのマイクロサービスでリリースするように強制しました(ここでは独立性がなくなりました) - 開発者はどこでも「共通」の動作を見ている傾向があります。したがって、「ヘルパー/ユーティリティ一方、OOPでコードの匂いと見なされていたクラスもあります。
ロングストーリーは短いですが、コードを複製することに切り替えました。私たちは、私たちのマイクロサービスを本当に独立して扱うことができます。 〜する必要があるサービス契約に固執する。内部的に起こることは完全にサービスにまで及ぶため、反復の最後にすべてのサービスをリリースする必要はありません。私は他のオプションが間違っていると言っているわけではありませんが、それは私たちには適していないことが判明しました。あなたが本当に2つのサービスの間の共通のクラスを見て、あなたは共通の図書館を他のひそかなものと混乱させないことを確信しているなら、あなたは保存してください。フォローアップとして
EDIT
は多分、我々はいくつかの共通のクラスで共有するテストコードを有するテスト(ユニットおよび統合)の点で同じ議論を行いました。最終的には、コードや受け入れ基準のわずかな変更によってテストの50%が失敗するため、これは地獄でした。一方、私たちの戦略は、テストレベルで何かを共有することではなく、テストの場ですべてのことをすることです。これにより、テストの削除や変更が非常に早くなります。結局のところ、私たちのための教訓は、ビジネスコードをきれいでエレガントなものにし、テストコードを最小限の頭痛の種にすることでした。
エンティティオブジェクトの一般的な瓶に何か問題はありません。それは外部のAPIライブラリを使用するのと同じ考えです –
私はhecko84によって指摘されているような一般的な瓶の問題は本当だと思います。今、このワットは良い問題のように見える。 –