일반적으로 대규모 소프트웨어 프로젝트에서 런타임에 발생하는 전이 종속성 문제에 어떻게 접근합니까?
지난 3 주 동안 소프트웨어의 다른 구성 요소 내에서 큰 소프트웨어 구성 요소를 시작하려고했지만 런타임에만 알려진 전이 종속성 문제로 인해 간헐적으로 죽습니다.
전 이적 의존성 문제는 특정 프로젝트의 종속성에 대한 특정 종속성이 런타임에 다른 종속성과 충돌하여 불안정성 또는 즉각적인 오류를 유발한다는 것을 의미합니다.
사용중인 수백 가지의 의존성에는 수백 가지가 있으며, 모든 모듈이 서로 밀접하게 중첩되어있는 다른 팀에 의해 독립적으로 작업되는이 도구와 관련된 약 50 개의 하위 프로젝트가 있습니다. 프로젝트의 규모와 복잡성을 감안할 때 모든 하위 프로젝트가 무엇에 사용되는지는 아무도 모릅니다.
이 상황에서 영향을받는 구성 요소의 각 종속성에 대한 DAG의 시각적 표현을 생성하고 런타임시 충돌이 발생할 수있는 위치를 결정하려고합니까? 다른 하위 프로젝트에서 종속성을 관리하는 방법을 제어 할 수 없으며 다른 개발자가 작성한 Java 코드를 변경할 수 없습니다
내가 제시 한 솔루션은 1 ~ 2 시간 동안 만 작동 한 다음 업스트림 구성 요소의 변경으로 인해 작동이 중지됩니다. 업스트림 구성 요소의 예로는 내가 작업하고있는 프로젝트가 CI 파이프 라인의 초기 단계에서 빌드 된 프로젝트에 의존하는 아티팩트가 있습니다.
다른 사람들의 요청에 , 나는 너무 많은 정보를 제공하기 위해 질문을 닫을 위험이 있거나, 신체가 너무 길어질 때 사용되는 기술에 대한 정보를 포함시킬 것입니다.
- Maven은 종속성 관리에 사용됩니다. 과
- 스프링은 DI 컨테이너로 사용됩니다.
- 대부분의 종속성 문제는 런타임에로드되는 다른 모듈의 컨텍스트 결과로 겹치는 Bean 컨텍스트와 관련됩니다.
- 제품이 제대로 작동하고 프로그램의 기능적 정확성을 피하기 위해 여러 가지 단위 테스트 및 통합 테스트가 있습니다.
일반적으로 주어진 프로젝트 종속성의 가능한 모든 조합을 열거하지 않고 종속성 충돌을 해결하는 방법을 식별하는 언어 독립적 인 방법을 찾고 있습니다 .
프로젝트를 다시 설계하거나, 추가 품질 게이트를 추가하거나, 회사 전체의 패러다임 전환을 추진하거나, 언어를 해결책으로 전환 할 수 없습니다.