하위 문서의 내용을 수정중입니다.
- 참여했던 프로젝트의 리팩토링을 진행하면서 경험한 내용
- 장기목표인 MSA적용까지는 이루지 못했지만, 그 과정에서 느꼈던 내용을 적어봄
- 앞으로 글을 추가예정, 본 글에서는 전체적인 흐름관해 서술
- 해당 글은 회고목적으로 작성된 글이며, 코드내용은 포함하고 있지 않습니다.
Mapper 까지 사용된 DTO 클래스 : DTO 클래스를 계층별로 분리하고, 복잡한 inner static 클래스를 정리했다. 당연히 모든 영역이 위와 같은 문제가 있는 것은 아니며, 참여한 개발자들 모두 문제점을 인지한 상태였다.
테스트하기 어려웠던 서비스코드 : 테스트하기 어려웠던 비즈니스 로직 메소드를 테스트가 가능한 구조로 변경하고, 하나의 서비스클래스를 여러개의 클래스로 나누었다.
Mybatis 프로젝트에 도메인주도개발 적용 : JPA 를 적용하기 쉽게 하는것을 목표로 Mybatis 로 최대한 ORM 처럼 쓸 수 있도록 코드구조를 수정했다.
JPA말고 Mybatis를 선택한 이유는, JPA 의 런닝커브 문제도 있었지만 도메인 주도개발 이 무조건 옳은 것이고, 잘나가는 개발자라면 JPA로 개발한다는 인식에 약간 거부감이 있었다.
도메인 주도개발을 모르는 것은 아니지만 때와 상황에 맞게 써야 하고, 아직 내가 알고 있는 지식으로 실제 프로젝트에 바로 적용하는것은 리스크가 크기 때문에 점진적으로 개선할 것을 생각했다.
위의 작업들이 끝난 후에도 내 생각은 변함이 없다. 잘 모르는 일정이 급한 신규 프로젝트를 도메인모델을 적용해 가며 할 경우, 이 모델을 잘못 만들면 정말 대재앙이 일어난다 생각한다.(물론 이 글을 읽어주시는 실력 좋으신 분들은 그럴리 없겠지만…)
설계를 잘한다면, Mybatis 에서 ORM으로 리팩토링을 통해 구조를 개선해나가면서 수정할 수 있지 않을까? 라는 생각을 했었다.