inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

마이크로서비스 디자인 패턴 완벽 가이드

[실습 4] REST API 구현

MSA 아키텍쳐 프로젝트 구성 방식

129

SHYU

작성한 질문수 24

0

안녕하세요 강사님

질문을 드리고 싶은 부분이 있는데요

MSA 아키텍쳐로 개발할 때 각각의 서비스 마다 단일 배포할 수 있다는 장점이 있다고 들었는데

그러면 MSA 아키텍쳐로 개발을 진행할 때 보여주신 것 처럼 하나의 큰 프로젝트 안에 각각의 마이크로 서비스를 넣어서 만드나요? (모노레포?)

혹은 각각의 마이크로 서비스를 독립적으로 만드는건가요? (폴리레포?)

만약 둘 다 사용한다면 주로 사용하는 방식은 어떤 방식인가요?

java spring-cloud 디자인-패턴 msa patterns

답변 2

0

Dowon Lee

안녕하세요, 이도원입니다.

말씀하신 내용처럼 강의에서는 전체 프로젝트를 구성하는 ROOT Project 밑으로 여러 서비스들 (user, product, order 등)을 SUB Project 개념으로 등록하여 관리하도록 했습니다. 실제로 Maven이나 Gradle로 자바 프로젝트를 관리할 때도, 다수의 프로젝트라 하더라도 하나의 Category나 Group으로 묶어 관리하는 경우가 편할 수 있습니다. 다만, 강의에서 말씀드린 내용처럼 배포 단위, 그리고 실제 개발하는 단위까지 고려하신다면, 이 부분은 팀의 규모나 개발자, 역할 등에 따라 나뉘어야 할 것 같습니다. 하나의 조직, 팀, 개발자가 전체를 프로젝트를 공유하고, 이과정에서 세부적인 모듈이나 코드를 또 분리해서 개발할 수도 있고, 각각 1개씩 프로젝트를 전담해서 개발할 수도 있고, 배포를 담당할 수도 있습니다. 어디까지나 조직의 규모와 팀의 역할, 개발의 단위에 따라 달라지고, 거기에 맞춰 팀빌딩과 R&R을 결정하는 작업이 프로젝트 초기 작업에 이뤄지게 될 겁니다.

추가 문의사항 있으시면 언제든지 글 남겨 주시기 바랍니다.

감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. SHYU님, 마이크로서비스 디자인 패턴에 대한 심도 있는 질문을 주셨네요.

마이크로서비스 아키텍처(MSA)를 구성할 때, 서비스의 배포 및 관리 측면에서 두 가지 접근 방식인 모노레포(Monorepo)와 폴리레포(Polyrepo)가 있습니다.

모노레포 vs 폴리레포

  1. 모노레포(Monorepo):

    • 단일 저장소에 여러 마이크로서비스를 관리합니다.
    • 통합적인 관리를 쉽게 할 수 있으며, 일관된 코드 품질을 유지하기에 용이합니다.
    • CI/CD 설정이나 버전 관리가 간편하다는 장점이 있으나, 저장소가 비대해지기 쉽고, 관련 없는 변경사항이 한 저장소에 너무 많이 포함될 수 있다는 점이 단점으로 지적됩니다.
  2. 폴리레포(Polyrepo):

    • 각 서비스 별로 독립된 저장소를 사용합니다.
    • 각 서비스의 독립성이 극대화되고, 팀이 각자의 서비스를 관리하며 변경사항을 손쉽게 반영할 수 있습니다.
    • 특정 서비스의 변경사항이 다른 서비스에 영향을 줄 가능성이 적습니다. 하지만 여러 저장소를 관리해야 하기 때문에 초기 구축 비용과 관리 비용이 더 증가할 수 있습니다.

주로 사용하는 방식

여러 회사와 조직에서 MSA를 위한 코드 저장소 구성은 팀의 문화와 기술 요구 사항에 따라 다르게 선택됩니다. 일반적으로, 대규모 조직이나 많은 독립적인 팀이 있는 경우 폴리레포를 선호합니다. 소규모 팀 또는 시작 단계의 스타트업모노레포를 더 선호할 수도 있습니다.

관련된 논의를 참조하시고 결정에 도움이 될 만한 기존 답변 링크를 제공해 드리겠습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

PlatformTransactionManager, ResourcelessTransactionManager 질문

1

15

2

자료 한번에 다운받기

0

13

1

시퀀스다이어그램은 무슨툴로 그리신건가요?

0

15

2

스프링 빈 등록 방법 2가지 다 알아야하는 이유

0

18

1

mybatis 를 이용한 crud에서 insert에서 resultType='long" 이라고 하셨는데요,

0

14

1

댓글 삭제 로직에서 동시성 문제 발생 가능성

0

17

1

설계 트레이드 오프 링크 접속 안됨

0

37

2

테스트 질문, 어떤것을 사용할것인것에 대해서

0

21

1

Shape 클래스 실습 코드 피드백 요청드립니다

0

21

2

재고 감소와 쿠폰 발급은 왜 서로 다른 방식으로 동시성을 제어하나요?

0

22

1

깃허브주소 궁금합니다.

0

17

2

mariaDB 설정

0

18

1

섹션4 퀴즈 오타있어요.

0

26

1

pg사가 있다고 가정하면

0

38

1

읽기 모델을 조회 최적화하여 성능 향상 하는 방법

0

104

2

Orders에 테이블의 용도

0

86

2

마이크로서비스와 모듈러 아키텍처 선택 질문

0

92

2

섹션 2 - 12강 강의 제목 관련 질문있습니다.

0

81

1

실습 환경 구축에 대한 질문

0

82

2

k8s 를 고려한 개발은 어떻게 진행하나요?

0

121

2

gPRC 와 서비스 디스커버리에 대해 질문드립니다.

0

110

2

일부 강의가 재생이 되지 않습니다

0

139

2

https://github.com/joneconsulting/eshop 소스

0

178

2

강의 pdf교재는 별도로 없나요?

0

169

1