investica refactoring
| topics | 800-프로젝트 300-백엔드개발 |
| types | 최적화 학습 |
| contexts | 프로젝트 |
| tags | #nestjs #refactoring #architecture |
investica refactoring
Investica 프로젝트를 진행하면서 코드 구조 개선과 아키텍처 리팩토링을 고민했다.
학습한 내용
Mapper vs Repository 패턴
NestJS에서 데이터 접근 계층을 어떻게 구성할지 고민했다.
Repository 패턴
- 도메인 객체와 데이터 저장소 사이의 중재자 역할
- 비즈니스 로직에서 데이터 저장 방식을 추상화
Mapper 패턼
- DTO와 Entity 간 변환 담당
- 레이어 간 데이터 형식 변환
왜 둘 다 필요한가: Repository는 데이터 접근을, Mapper는 데이터 변환을 담당한다. 관심사의 분리가 명확하다
헥사고날 아키텍처 적용 고민
계층형 아키텍처에서 헥사고날 아키텍처로의 전환을 고려했다.
장점
- 비즈니스 로직이 외부 의존성으로부터 독립적
- 테스트 용이성 향상
- 포트와 어댑터 분리로 유연성 확보
단점
- 초기 구조 설계 복잡도 증가
- 학습 곡선이 높다
참고 자료
결론
본인의 경우, Investica는 짧은 기간의 데모 프로젝트이다 보니 전통적인 Repository 패턴과 Mapper 분리 구조를 선택했다. 헥사고날 아키텍처는 다음 프로젝트에 도입해볼 예정이다.