모노레포와 멀티레포를 왜 고민할까?
-> 프로젝트가 커지면서 개발 조직은 각 도메인별로 분리해서 마이크로 서비스로 구성하기 시작한다.
-> 이 때 개발 조직은 쪼개진 각 서비스를 하나의 레포에서 관리할지!
각각 다른 레포로 관리할지 고민하게 된다.
폴더 구조는 왜 중요할까?
-> 폴더구조는 코드의 가독성과 유지보수성에 큰 영향을 미친다.
잘 설계된 폴더구조만으로도 코드를 쉽게 이해하고 수정할 수 있도록 도와준다.
폴더 구조는 논리적 흐름을 반영하고, 관련된 파일들을 그룹화한다.
: 다수의 프로젝트를 하나의 레포지토리에서 관리한다.
📦 모노레포
┣ 📁 A 프로젝트
┣ 📁 B 프로젝트
┣ 📁 C 프로젝트
: 프로젝트(서비스)별로 레포지토리를 각자 만들어서 관리한다.
📦 A 프로젝트
📦 B 프로젝트
📦 C 프로젝트
: FSD(Feature-Sliced Design).
폴더구조를 페이지별로 나누지 않고, 기능을 기준으로 코드를 분리하는 방식이다.
↔ 기존에는 역할(components, utils)에 따라 파일과 폴더가 분리되었다.

app 은 전역 설정을 담당한다. (provider, router, 스타일 등)page에서는 라우트에 따라 화면을 분리한다. (/login, /home 등)ui 에서는 화면을 담당하는 컴포넌트가 들어간다.features 에서는 동작에 관한 로직, ui가 들어가고, 내부에서 entities를 호출해 데이터를 사용한다.entities 는 데이터와 해당 데이터를 보여주는 ui가 들어간다.shared 는 프로젝트 전역에서 공통으로 사용하는 요소(훅, 타입, 유틸함수, 공통 ui 등): 프로젝트가 진행됨에 따라 관심사가 변하는 순간이 찾아오고, 다양한 관심사가 점차 생겨나게 된다.
무엇이 변하고 무엇이 변하지 않는가를 파악하여 적절한 시기에 폴더구조를 재편할 수 있다.
→ 하지만 정답은 없다! 정해진 답이 아니라 균형과 시기의 문제로, 무엇이 중요한지를 지속적으로 고민하고 그에 맞는 구조를 선택하는 것이 필요하다.
👀 모양이 같다고 같은 컴포넌트로 묶지 말자!
예전 개발을 처음 시작하며 ‘~이러한 폴더구조가 좋다’ 라고 들었을 때 당연히 그게 정답인줄 알았다. 하지만 정답은 없고, 이런 저런 케이스들이 있다는 것을 배우게 된 것 같다!
https://tech.buzzvil.com/handbook/multirepo-vs-monorepo/
https://velog.io/@miso1489/%EB%AA%A8%EB%85%B8%EB%A0%88%ED%8F%AC%EC%99%80-%EB%A9%80%ED%8B%B0%EB%A0%88%ED%8F%AC
https://joong-sunny.github.io/react/react7/
https://f-lab.kr/insight/folder-structure-optimization-fsd-20240717