폴더 구조 설계

이종훈·2025년 7월 26일
0

개발 일지

목록 보기
20/21
post-thumbnail

개요

백엔드 프로젝트를 진행할 때 주로 controller, service, repository 등의 계층 구조를 통해 비즈니스 로직, DB 접근 로직, 클라이언트 요청 방식 로직 등을 분리하여 구현하곤 합니다.
이때 폴더 구조를 설계하는 방법은 계층 중심으로 분리하는 방식과 기능을 중심으로 분리하는 방식으로 나뉩니다. 각 방식의 차이점을 비교해보았습니다.


폴더 구조 분석

1. 계층 중심 구조(Layer-based)

모바일 청첩장 프로젝트에서 계층 중심 구조로 폴더를 분리하여 구현했습니다.
controller, repository, service 등 계층 별로 폴더를 크게 잡고, 각 폴더 내부에서 기능별로 파일을 나누어 구현했습니다.
해당 방식은 계층에 따라 분리되어 API 요청 흐름을 분기별로 확인하기 쉽고, 프로젝트 초기에 구조 파악을 하기 쉽다는 장점이 있었습니다.
하지만 프로젝트가 확장될수록 각 계층을 넘나들며 위치를 찾기가 번거로웠고, 기능별 흐름 파악을 하기 어렵다는 단점을 겪었습니다.

2. 도메인 중심 구조(Domain-based)

도메인(기능) 중심 구조의 폴더 구조를 파악하기 위해 다른 분들이 구현한 프로젝트를 클론하여 구조를 공부해보았습니다.
해당 방식은 기능별로 폴더를 나누고, 각 폴더 내부에서 계층과 dto, entity등의 구조를 분리하여 구현하는 방식입니다.
이는 기능별로 폴더 구조가 명확하여 기능 추가 및 수정 시 관리가 쉽고, 협업 시 기능별로 분담하는 경우가 많기 때문에 쉽게 업무를 분리하여 구현할 수 있다는 장점이 있었습니다.


결론

즉 초기 소규모 프로젝트에서는 계층 중심 구조로 구현하는 것이 쉽고 효율적이지만, 기능이 많거나 규모가 큰 프로젝트에서는 도메인 중심 구조가 더 안정적이고 확장성에도 용이하다는 것을 알 수 있었습니다.
실제로 실무에서도 대부분 도메인 구조를 선택하여 기능별 모듈화, 테스트 코드, 유지보수 면에서 훨씬 효과적이라고 합니다.

profile
종훈리의 개발일지

0개의 댓글