<aside> ⭐ 학습목표

<aside> 💬 TIL

프로젝트 구조와 폴더 구조에 대해 알아보는 시간을 가졌다. 평소에 어떤 폴더 구조가 프로젝트를 위한 최적의 폴더 구조일까 궁금했었다. 공부를 하다보니 최적의 폴더 구조는 프로젝트마다 다르고, 이건 경험에 의해 얻어지는 것이 아닐까 라는 결론에 이르렀다. 이번 강의에서도 멘토님의 경험에 따라 폴더 구조를 어떻게 정의하게 되었고, 결국에는 feature를 기반으로 한 폴더 구조를 정립한 것에 대한 경험담과 조언(?)을 들을 수 있어서 의미있었다.

“모노레포”라는 개념에 대해서도 알게 되었다. 모노레포를 사용하면 하나의 Repo 안에 여러개의 프로젝트가 존재해서 중복된 코드를 줄이고, 프로젝트는 보다 효율적으로 관리할 수 있다. 모노레포를 도입한 서비스가 꽤 있다고 들은 것 같은데, 이전에는 그 개념에 대해 너무 멀게 느껴졌다면 지금은 한발짝 다가간 느낌이다. 물론 이론적인 설명보다는 경험해봐야 알 것 같다.

함께 학습한 Submodule이라는 개념은 처음 알게 되어서 그런지 익숙치 않았다. 서브모듈이란 Git 저장소 안에 다른 Git 저장소를 디렉토리로 분리해서 넣은 것으로, 서브모듈을 사용하면 특정한 Git 레포지토리를 다른 레포지토리의 하위 디렉토리로 사용할 수 있으며 이를 활용한 여러 장점이 있는것 같았다.

이번에도 역시 이력서 피드백은 많은 도움이 되었다. 자세하고, 많은 부분들을 언급해 주셔서 좋았다. 오늘도 역시 트러블 슈팅과 그러한 부분을 기반으로 하는 블로그 작성의 중요성을 많이 강조하셨다. 나도 블로그는 작성하고 있지만 트러블 슈팅과 같은 관점에서는 작성해본 적이 그리 많지 않다. 프로젝트를 하며 회고록을 위주로 작성했는데, 이는 내 경험과 생각, 프로젝트 전체 과정 위주의 일기같은 기록이었기 때문에 개인적으로는 글을 작성하며 생각도 정리하고 과정도 정리하며 도움이 되었지만 이력서나 면접에서 효과적일지는 잘 모르겠다.

개발적인 내용을 일목요연하게 볼 수 있고, 문제 발생과 해결과정을 또한 작성해보도록 노력해 봐야겠다.

Q. 누군가 질문했던 개발 컨퍼런스 정보 및 일정은, 아래 참고!

개발 컨퍼런스 일정 | 코드너리

https://github.com/brave-people/Dev-Event

</aside>

📖 table of contents

1. Project Structure


▪️ 프로젝트 내부에서 폴더나 파일을 어떻게 구성할까?

👩🏻‍💻 example

Untitled

➡︎ 평면적인 구조로, reducer는 action과 관련된 코드인데 멀리 떨어져있다.

Untitled

➡︎ 현업에서 쓰이는 폴더구조

  1. feature별로 폴더를 나눈다.
    1. order, user 등의 안에서도 디렉토리가 있어서 추가될 수 있다.
  2. store 폴더는 잘 정의되어 있지만, 그 위쪽은 별로라는 생각이 든다.
  3. api가 order나 user에서 사용될 수 있는데, 너무 멀리 떨어져있다. 같은 폴더 내에 있었으면 좋겠다.
  4. component는 개발할수록 점점 많아질 것이다.
    1. component안에 page별로 폴더를 둘 수 있는데, 이것도 구조 파악이 어려울 수 있다.

Untitled

➡︎ feature별로 나눠보자.

  1. order에서 사용되는 api, components, constant, containers 등등으로 나누는 방법을 채택
    1. order에 대한 개발은 order 폴더 안에서 해결
  2. 그렇다면, user 폴더도 order와 같은 폴더 디렉토리가 존재 하게 된다.
  3. 이렇게 되면 feature를 어떻게 나눌지 팀원과 함께 논의하는 것이 중요
  4. 만약 서로 다른 feature에서 동일한 상태나 컴포넌트, 함수 등을 공유해야 한다면 share 폴더를 만들어 사용할 수 있다. (util함수, 공통적으로 사용하는 hooks, common 컴포넌트 등)

참고로 constants 폴더는 상수값을 따로 보관하는 폴더로, 따로 만들어 사용하는 것을 권장한다.