모듈 A, B, C가 있음
고객은 A -B -C , C - C - B - A - B 등의 요청 순서로 모듈을 나열해서 자신이 원하는 로직을 만들어낼 것을 요청함
내가 생각한 고객의 요구조건을 만족하는 방법은 다음 두 가지가 아닐까 싶음
1. 각각의 모듈을 담은 fat jar가 있을 때, 그걸 고객이 원하는 대로 나열해서 실행하기.
-> 이렇게 하면 관리는 그냥 들어온 요청 순서대로 jar 파일을 실행하면 될 테니 간단하고, 새로운 모듈이 추가되었을 때도 해당 fat jar의 경로만 알고 있다면 손쉽게 만들 수 있을 듯. 다만 각 jar마다 자신만의 의존성을 다 들고 있을 테니, 아무래도 A, B, C가 복잡한 기능을 수행할 경우 scale-up이 불가능한 상황에선 아주 비효율적으로 바뀌지 않을까?
2. A, B, C를 전부 임포트해오고, 요청 순서를 전부 큐에 집어넣어서 원하는 순서대로 실행되게 만드는 프로젝트 fat jar를 만들기.
예를 들어 BBAACC면 큐에 [B, B, A, A, C, C]를 넣고, 앞에서부터 꺼내서 스위치 케이스 문으로 실행되게 만들 수 있을 것.
-> A, B, C가 아주 겹치는 의존성을 가지고 있다면 차라리 이렇게 합치는 게 효율 면에서는 나을 수도 있으나, 이렇게 한번 합쳐서 만들면 새로운 모듈 D가 개발되었을 땐 다시 그 모듈을 임포트해오고, 빌드해야 될 듯 -> 구현된 모듈이 많으면 많을수록 프로그램이 모놀리식해짐
어떠한 툴로 1번 상황에서, 각 jar를 개별 실행하는 게 아닌 통째로 하나의 큰 jar로 묶으면서, 공통된 의존성은 한 번만 임포트해오거나, 2번 상황에서, 이미 만들어진 jar를 이용해 새로운 모듈에 대한 지원을 해 주게끔 만들 수가 있는 건가...? 진짜로 잘 몰라서 모르겠음 내가 말이 되는 소리를 하는 건지.
결국 내가 원하는 건
모듈이 A - Z 까지 있는 거대한 프로젝트가 있다고 했을 때,
고객이 A-B-C-D-E-A-B 순서의 기능만 원한다면,
F - Z는 fat jar 에 넣지 않고,
A - E 간 중복되는 의존성은 한 번만 가져오고,
동시에 A(); B(); C(); D(); E(); A(); B(); 만 실행하는 걸 바라는 건데 이걸 할 수 있는 시스템이나 툴 같은 게 존재함?