나는 적어도 똑 바른 포크를 고려할 것입니다. 이를 통해 개별 프로젝트를 독립적으로 발전시킬 수 있습니다. 사용하지 않는 비트는 정리할 수 있습니다. 공유 라이브러리가 필요하다면 필요에 따라 나중에 식별하고 리팩토링하여 필요할 때 사용할 수 있습니다.
나는 과거에 이런 식으로했을 때 "의존성"이 내가 생각하는 것만 큼 공통적이지 않다는 것을 알았고, 나는 그것들을 같은 것으로 구속했다는 것을 발견했다. 모양을 수년에 걸쳐.
예를 들어, 모듈 A (청구라고하겠습니다)에는 신용 조건, 미결제 잔액 등이있는 고객이 있습니다. 모듈 B (지원 전화)에서는 동일한 고객 그러나 소프트웨어 버전이나 지원 내역과 같이 완전히 다른 특성을 갖습니다.
둘 다 "사용자"라고 불리는 것 이외에 공통된 ID 값을 가지지 만 서로에게 아무런 관련이 없으며 실제로 같은 클래스에 속하지 않습니다. 모듈 A가 모듈 B에서 분기되면 바로 User 객체가 훨씬 작아지고 집중됩니다.
사람들이 마이크로 서비스에서 만드는 동일한 발견입니다. 그들이 공유해야 할 필요가 있다고 생각되는 것들은 정말로 공유 할 필요가 없었으며, 실제로 그것들을 분해함으로써 이익을 얻었습니다. 치료법이 아닙니다. 때로는 실제로 정말로 공유되는 복잡한 대상이 있지만, 생각만큼 일반적이지는 않습니다. 종종 동일한 "이름"을 가지며 동일한 클래스/모듈에 포함되는 두 가지 다른 사물의 문제 일뿐입니다.
A와 B는 서로 관련이 없다고 가정하고 있지만 서로의 기능을 호출해야합니다. 오늘, 그들은 직접 전화를합니다. 포크 후 가장 좋은 방법은 무엇입니까? B는 그것의 구현을 인터페이스로 노출시키고 A는 class.forName을 사용하고 그것을 구현 인터페이스로 던지고 그것을 사용한다. – cloudpre