본문 바로가기

카테고리 없음

모노레포가 쓸까 말까 ..

최근에 많은 기업에서 모노레포라는 개념에 대해서 도입을 하고 있다.
나도 프로젝트를 경험하면서 벌써 3번째 모노레포 프로젝트를 진행하고 있다. 근데 사용하는 이유에 대해서

정확히 잘 알고 있지 않은 것 같아서 모노레포의 개념과 왜 사용하는지 장점과 단점이 뭔지 알아보면 좋을 것 같다.

 

 

⭐️ 모노레포가 무엇일까?

두 개 이상의 프로젝트 코드를 하나의 버전 관리 저장소에서 관리하는 방법!!

 

그럼 이러한 개념이 왜 나왔을까?

➡️ 가장 대표적인 이유는 큰 규모의 소프트웨어를 하는 프로젝트에서 발생하는 여러 문제를 해결하기 위해서입니다.


일단 내가 처음 하는 리액트 프로젝트에서 진행하면서 admin과 client 두 개의 role을 관리하면서 프로젝트 레포를 각각

관리하기 힘들다고 판단을 하였고, 다음 프로젝트에서 모노레포라는 개념을 사용해서 롤을 관리를 하며 공통으로 사용하는

컴포넌트는 따로 관리하여 더 개발의 효율성을 높일 수 있다고 느꼈습니다.

 

💡 어떤 어려움이 있을까?

  • 중복되는 코드
  • 코드 저장소의 복잡성으로 의사소통의 어려움

 

💬 모노레포의 특징/장점

  • 모듈화 : 코드를 모듈화를 하여서 필요한 모듈만 가져와서 사용이 가능하다.
  • 의존성 관리 : 모든 코드가 단일 코드 저장소에 있기에 의존성 문제를 빠르게 해결할 수 있다.
  • 협업 : 단일 코드 저장소에 인하여 개발자들 간의 협업 능력이 향상이 된다.
  • 코드 품질 : 리팩터링시 모든 프로젝트의 상황을 고려하기 때문에 코드 품질을 일관성 있게 유지가 된다.

 

🔥 모노레포의 단점

  • 복잡성 : 하나의 저장소에서 사용을 하기 때문에 코드 충돌이 자주 발생할 수 있다.
  • 빌드 시간 증가 : 모든 프로젝트의 빌드를 해야하기 때문에 시간이 오래 걸릴 수 있다.
  • 변경 사항 :  공통된 부분이나 하나의 저장소에서 관리하기에 코드 하나에 모든 영역에 영향이 갈 수 있다.

 

내가 했던 프로젝트 중에 Stack-Knowledge라는 프로젝트가 있는데 거기서 사용한 모노레포 디렉터리 구조에

대해서 조금 이야기 해볼까 한다.

 

 

GitHub - Stack-Knowledge/Stack-Knowledge-front: 광주소프트웨어마이스터고등학교 학습 장려 게임화 플랫폼

광주소프트웨어마이스터고등학교 학습 장려 게임화 플랫폼 🏫. Contribute to Stack-Knowledge/Stack-Knowledge-front development by creating an account on GitHub.

github.com

전체적인 디렉토리 구조는 이렇다.

- apps
    - admin
        - assets
        - components
    - client
        - assets
        - components
    - storybook
- packages
    - api
    - common
        - components
        - assets
    - tsconfig
    - types

 

 

 

추천하는 모노레포 강의

FECONF 2022 [B2] 일백 개 패키지 모노레포 우아하게 운영하기

 

내가 느낀 모노레포의 💪🏻

과연 모노레포를 정말 써야할까? 
나의 답변은 늘 항상 같다. 필요할 때, 상황에 맞게 유동적으로 사용을 하는 것이 맞다. 

내가 권한을 관리하면서 많은 사용자를 요구하고 더 큰 프로젝트로 환경을 원한다면 사용하는 것이 좋다고 생각을 하지만,

꼭 그렇다고 하는 것은 아니다. 또 위에서 내가 소개한 토스 모노레포 강의뿐만 아니라 더 많은 토스 기업의 모노레포 환경에

대해서 공부를 하고 있는 참고하면 좋을 레퍼런스를 참고한다!!!

 

토스 프론트엔드 챕터의 모든 것

토스 프론트엔드 챕터를 소개합니다! 이 문서에는 프론트엔드 챕터에 대해서 궁금하신 분들께서 꼭 알았으면 하는 정보들이 담겨 있습니다.

tosspayments-dev.oopy.io