같은 로직을 하는 서비스, 예를 들어 S3에 접근해서 파일을 다루는 서비스가 각각의 도메인 마다 사용하고 있었다. 그러나 문제는 그 도메인의 레포가 다 분리되어 있어 같은 서비스의 코드도 분산되어 있었다. 도메인 엔티티는 그나마 jar파일을 만들어 관리를 하고 있는데, 이 마저도 jar가 최신화가 잘 되지 않았다. 실제로 버그 픽스한 버전이 S3 서비스에 다 적용하지 않아 문제를 만든 적이 있었다. 도메인 엔티티도 최신화를 하지 않아 이를 사용하는 서비스에도 문제를 발생시켰다.
그래서 나는 레포지토리 통합을 하고 싶었다. 그러나 하지 못했다. 6-7개로 분리된 레포를 멀티 모듈 프로젝트를 구성하기 위해 노력했다. 각각의 서비스를 각각의 애플리케이션 모듈로 넣어 놓고, 도메인의 로직을 모듈화하고 인프라, 공통의 유틸성 부분도 따로 모듈화 하기 위해 구상했다. 실제로 하나의 서비스를 가져와 멀티 모듈로 전환했다.
새로운 멀티 모듈 프로젝트를 소개하면서 현 상황의 문제점과 개선 이후의 장점을 어필했다. 팀원들의 공감을 얻어 실제로 진행하기로 결정하기도 했다. 통합하는 방법에 대해서 2-3번의 회의도 거쳤지만, 결과적으로 그대로 끝이 났다. 비즈니스 기능을 구현하기도 바빴고 이 작업은 큰 작업이었다.
조금이나마 개선을 하기 위해 S3 서비스와 같은 코드는 Spring boot의 auto configuration을 활용하여 통합하자고 제안했다. 구현한 jar파일과 사용방법들을 설명했다. 그러나 이것도 역시 공감만 받았을 뿐, 실제로 적용하지 못했다. 그렇게 나는 '포기하면 편해' 라는 달콤한 유혹에 빠져들 수 밖 에 없었다. 나는 그렇게 편해졌다.