inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Nhập môn và Thực tiễn MSA dành cho cả người không chuyên (feat. Spring Boot)

Yêu cầu và thiết kế dự án MSA

Microservice 에 DB 띄우기

62

SJ

155 câu hỏi đã được viết

0

Microservice 에 DB 를 띄우게 될때 DB 를 여러대 띄우는것 같은데

저렇게 하지않고

하나의 DB 를 띄우고 스키마로 분리하는 경우도 있나요 ??

너무 낭비가 되지 않나 ?? 생각도 들어서요

아키텍처 spring-cloud kafka msa devops

Câu trả lời 2

0

jscode

안녕하세요 ! 질문 잘 해주셨어요 ~

질문해주신 내용에 답변 드려볼게요 !

"하나의 DB 를 띄우고 스키마로 분리하는 경우도 있나요 ??"

-> 네 ! 특히 초기 단계의 서비스나 리소스가 제한적인 환경에서는 DB를 하나만 띄우고 스키마만 분리해서 운영하기도 해요 ~

비용과 관리 복잡도를 줄일 수 있어서 현실적인 타협안이 되기도 해요 !

다만 강의에서 DB를 서비스별로 완전히 분리하는 방식으로 구성한 이유는, MSA의 핵심 개념인 "독립성"을 제대로 이해하고 경험해보는 것이 목적이기 때문이에요!

실무에서도 DB를 물리적으로 완전히 분리하는 게 MSA의 이상적인 형태인 건 맞아요 !

DB를 하나로 공유하게 되면 한쪽 서비스의 DB 장애나 성능 저하가 다른 서비스에도 영향을 미치게 되고, 서비스 간 독립 배포도 어려워질 수 있거든요 ~

결국 "DB를 몇 대 띄우느냐"보다는 서비스끼리 서로의 DB에 직접 접근하지 않고 API로만 통신하는 독립성을 지키는 것이 MSA의 핵심이라고 보시면 돼요 !

실제 운영 환경에서는 비용, 팀 규모, 서비스 성격에 따라 유연하게 결정하게 돼요 :)

추가로 궁금하신 점 있으시면 언제든 추가 질문 남겨주세요~~

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. SJ님.

Microservices Architecture(MSA)에서는 각 마이크로서비스가 자신만의 데이터베이스를 갖는 것이 원칙입니다. 각 서비스가 독립적으로 책임을 지고, 다른 서비스와의 결합도가 낮아야 하기 때문에, 데이터베이스도 독립적으로 운영하는 것이 이상적입니다.

각 서비스별 독립적인 데이터베이스 운영의 이유

  1. 독립적인 확장: 서비스별로 독립적으로 확장할 수 있습니다. 특정 서비스의 트래픽이 급증해도 다른 서비스에 영향을 미치지 않습니다.

  2. 장애 격리: 한 서비스의 데이터베이스에 장애가 발생하더라도 다른 서비스에는 영향을 미치지 않게 됩니다.

  3. 보안 및 데이터 보호: 서비스마다 다른 보안 정책을 적용할 수 있어, 민감한 데이터는 별도로 보호할 수 있습니다.

그러나, 상황에 따라서는 하나의 데이터베이스 인스턴스를 여러 스키마로 분리하여 사용하는 경우도 있습니다. 주로 데이터베이스 라이선스 비용 문제나, 인프라 비용을 절감해야 하는 상황에서 고려됩니다.

스키마 분리 사용의 단점

  1. 결합도 증가: 스키마를 분리해서 사용하면, 여러 서비스가 동일한 데이터베이스 인스턴스를 공유하기 때문에 결합도가 생길 수 있습니다.

  2. 성능 문제: 한 계약을 사용하는 여러 서비스가 동시에 데이터베이스에 접속하게 되면, 성능 병목 현상이 발생할 수 있습니다.

  3. 운영 복잡성: 여러 스키마의 변경이 필요한 경우, 관리 및 운영이 복잡해질 수 있습니다.

이와 관련한 더 구체적이고 실질적인 사례나 질문들은 다음의 유사한 게시물을 참고하시면 도움이 될 것입니다:

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

setting_python_env.yml 오류

0

1

1

configmap 을 환경변수로 사용할 때 파드 적용 시점 문의

1

11

2

Docker + Spring Boot CI/CD 방법

0

8

1

gateway 생성 후 접속 확인 질문

0

22

2

순위가 동률일 때의 처리에 대해 질문드립니다.

0

21

2

Singleton 관련 질문입니다.

1

34

2

섹션4 AWS NAT Instance생성하는 과정에서 오류가 지속해서 발생합니다.

0

18

1

Ingress 생성하기 ingressclass 질문

1

28

2

deployment 업데이트 및 롤백 실행하기 -2

1

24

2

강의 듣는 중인데,

0

26

1

36강 오탈자가 있는 거 같습니다.

0

23

2

라우팅 테이블 설정 중 궁금한게 있습니다.

0

34

1

user-service jwt

0

32

2

애그리거트 질문있습니다!

0

32

2

젠킨스버전과 플러그인설치

1

37

2

MSA에서 서비스별 DB 작성에 관해

0

81

2

MSA 프로젝트 요구사항 및 설계 에서의 FK

0

65

2

보상 트랜잭션을 위한 catch 문 안에서 에러가 발생한다면 어떻게 되는 건가요?

0

67

2

하나의 consumer에서 두가지 이상의 topic의 메세지를 받고자 할때 받는 메세지에 시간차와 상관없이 하나의 consumer에서 받을수 있나요?

0

78

2

카프카에서 발행한 이벤트를 처리중에 실패한 경우 보통 어떻게 처리하는지 궁금합니다

0

110

2

Kafka 비동기방식 적용하면서 질문 있습니다!

0

82

2

가용성에대한 질의..

0

65

2

궁금한게있어요..

0

79

2

MSA강의 보다 궁금해서 질문드립니다.

0

92

2