인프런 커뮤니티 질문&답변
MSA 아키텍쳐 프로젝트 구성 방식
작성
·
34
·
수정됨
0
안녕하세요 강사님
질문을 드리고 싶은 부분이 있는데요
MSA 아키텍쳐로 개발할 때 각각의 서비스 마다 단일 배포할 수 있다는 장점이 있다고 들었는데
그러면 MSA 아키텍쳐로 개발을 진행할 때 보여주신 것 처럼 하나의 큰 프로젝트 안에 각각의 마이크로 서비스를 넣어서 만드나요? (모노레포?)
혹은 각각의 마이크로 서비스를 독립적으로 만드는건가요? (폴리레포?)
만약 둘 다 사용한다면 주로 사용하는 방식은 어떤 방식인가요?
답변 2
0
안녕하세요, 이도원입니다.
말씀하신 내용처럼 강의에서는 전체 프로젝트를 구성하는 ROOT Project 밑으로 여러 서비스들 (user, product, order 등)을 SUB Project 개념으로 등록하여 관리하도록 했습니다. 실제로 Maven이나 Gradle로 자바 프로젝트를 관리할 때도, 다수의 프로젝트라 하더라도 하나의 Category나 Group으로 묶어 관리하는 경우가 편할 수 있습니다. 다만, 강의에서 말씀드린 내용처럼 배포 단위, 그리고 실제 개발하는 단위까지 고려하신다면, 이 부분은 팀의 규모나 개발자, 역할 등에 따라 나뉘어야 할 것 같습니다. 하나의 조직, 팀, 개발자가 전체를 프로젝트를 공유하고, 이과정에서 세부적인 모듈이나 코드를 또 분리해서 개발할 수도 있고, 각각 1개씩 프로젝트를 전담해서 개발할 수도 있고, 배포를 담당할 수도 있습니다. 어디까지나 조직의 규모와 팀의 역할, 개발의 단위에 따라 달라지고, 거기에 맞춰 팀빌딩과 R&R을 결정하는 작업이 프로젝트 초기 작업에 이뤄지게 될 겁니다.
추가 문의사항 있으시면 언제든지 글 남겨 주시기 바랍니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. SHYU님, 마이크로서비스 디자인 패턴에 대한 심도 있는 질문을 주셨네요.
마이크로서비스 아키텍처(MSA)를 구성할 때, 서비스의 배포 및 관리 측면에서 두 가지 접근 방식인 모노레포(Monorepo)와 폴리레포(Polyrepo)가 있습니다.
모노레포 vs 폴리레포
모노레포(Monorepo):
- 단일 저장소에 여러 마이크로서비스를 관리합니다.
- 통합적인 관리를 쉽게 할 수 있으며, 일관된 코드 품질을 유지하기에 용이합니다.
- CI/CD 설정이나 버전 관리가 간편하다는 장점이 있으나, 저장소가 비대해지기 쉽고, 관련 없는 변경사항이 한 저장소에 너무 많이 포함될 수 있다는 점이 단점으로 지적됩니다.
- 단일 저장소에 여러 마이크로서비스를 관리합니다.
폴리레포(Polyrepo):
- 각 서비스 별로 독립된 저장소를 사용합니다.
- 각 서비스의 독립성이 극대화되고, 팀이 각자의 서비스를 관리하며 변경사항을 손쉽게 반영할 수 있습니다.
- 특정 서비스의 변경사항이 다른 서비스에 영향을 줄 가능성이 적습니다. 하지만 여러 저장소를 관리해야 하기 때문에 초기 구축 비용과 관리 비용이 더 증가할 수 있습니다.
- 각 서비스 별로 독립된 저장소를 사용합니다.
주로 사용하는 방식
여러 회사와 조직에서 MSA를 위한 코드 저장소 구성은 팀의 문화와 기술 요구 사항에 따라 다르게 선택됩니다. 일반적으로, 대규모 조직이나 많은 독립적인 팀이 있는 경우 폴리레포를 선호합니다. 소규모 팀 또는 시작 단계의 스타트업은 모노레포를 더 선호할 수도 있습니다.
관련된 논의를 참조하시고 결정에 도움이 될 만한 기존 답변 링크를 제공해 드리겠습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




