min

Todo-List 기능적 폴더 구조 ( 도매인 중심 설계 )에 대하여... 본문

프로젝트 회고

Todo-List 기능적 폴더 구조 ( 도매인 중심 설계 )에 대하여...

minprogramming 2023. 8. 7. 17:10

<회고록>

이번에는 저번에 올린 게인 프로젝트의 폴더 구조를 바꿔보았다. 이번에 시도하게 된 폴더 구조는 타입별 폴더 구조가 아닌 기능적 폴더 구조이다. 그럼 여기서 이런 의문이 들 수 있다. 기능적 폴더 구조란 어떤 폴더이며 왜 사용하는지? 이 질문에 대한 답변은 다음과 같다. 먼저 기능적 폴더 주조란 말 그대로 폴더 구조를 기능적으로 나누는 것을 의미한다. 여기서 기능적으로 나눈다는 말을 이해하기 위해서 먼저 알아야할 개념들에 대해서 집고 넘어가자 . 먼저 "엔터티"라는 개념이다. 엔터티는 핵심 단어라고 생각하면 편하다. 즉 내가 만약 todolist와 관련된 프로젝트를 만들때 핵심 엔터티 즉 핵심 단어는 todo가 될 것이다. 즉 기능적 폴더 구조라는 폴더를 핵심 단어를 기준으로 todoform , todolist이런 식으로 뻗어나가고 이렇게 뻗어나간 폴더 내에서 그 폴더와 관련있는 것들을 하나씩 써내래 가는 것이다. 그렇다면 왜 이런 기능적 폴더 구조를 사람들은 쓰는 걸까? 그 이유는 다음과 같다. 첫번째 폴더의 구조가 명확하다. 폴더의 구조를 핵심 엔터티 즉 기능 중심으로 나누기 때문에 해당 폴더 구조의 골격 , 폴더의 네이밍을 봤을 때 이 폴더가 무슨 역할을 하는지 이 폴더가 어떤 구조로 이루어져있는지를 파악하는 것이 굉장히 간단하다. 두번째 폴더 구조를 보고 어떤 프로젝트인지 유추가 가능하다. 만약 프로젝트를 보는데 있어서 내가 타입적 폴더 구조로 만들었다고 하자. 그렇다면 이 폴더 구조를 보고 개발자들은 아 리엑트 폴더 구조구나 라고 생각할 수 있다. 하지만 더 나아가서 이 프로젝트가 어떤 프로젝트인지를 유추하는 것은 사실상 불가능하다. 하지만 우리가 현업을 할때는 이 프로젝트가 리엑트 프로젝트인지는 중요하지 않다. 오히려 이 프로젝트를 보고선 아 todo와 관련된 프로젝트구나라는 것을 파악하는 것이 더 중요하다. 이런 관점에서 봤을 때 기능적 폴더 구조는 다양한 장점을 가지고 있다. 그렇다면 왜 사람들은 여전히 타입별 폴더 구조를 가지고 있는가? 사실상 그 질문에 대한 답변은 반은 맞고 반은 틀리다. 사실상 요즘에는 기능적 폴더 구조 즉 ddd (도매인 중심 설계)로 많이들 변하고 있는 추세이다. 하지만 그럼에도 불구하고 여전히 타입별 폴더 구조를 지향하는 이유는 사실상 익숙함과 큰 프로젝트가 아닐때 많이들 사용하기 때문이다. 즉 타입별 폴더 구조에 대한 자료들은 많고 따라서 이 폴더 구조를 연구할 때 굉장히 편하고 많은 개발자들이 지금까지는 타입별 폴더구조만을 보고 있었기 때문에 사실상 익숙한 것은 타입별 폴더 구조이다. 그리고 큰 프로젝트가 아닐 때는 사실상 타입별 폴더 구조가 유리하다. 왜냐하면 기능적 폴더 구조는 사실상 지켜야 할 약속들이 많고 폴더의 depth가 깊어진다. 따라서 작은 프로젝트 일수록 기능적 폴더 구조의 장점은 크게 발휘되지 못한다. node js를 기준으로 설명하자면 3 레이어드 아키텍쳐가 작은 프로젝트에서는 크게 효과를 발휘하지 못하는 것과 동일하다.

 

<깃허브 주소>

https://github.com/todo-project-ver2/todo-project-FE