inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

비전공자도 이해할 수 있는 MSA 입문/실전 (feat. Spring Boot)

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

해결된 질문

93

팀비

작성한 질문수 2

0

안녕하세요.
언제나 좋은 강의 만들어주셔서 감사합니다.

강의에서 MSA는 서비스별로 DB를 구축하는 것으로 설명해주셨는데요.
이 경우, 서비스 수가 늘어날수록 데이터베이스도 함께 증가하게 되어
고정비용이 기하급수적으로 늘어날 것 같습니다.

실제로 기업에서 사용하는 MSA 구조에서도
이와 같이 서비스별로 별도의 데이터베이스를 구축하는지 궁금합니다.

아키텍처 spring-cloud kafka msa devops

답변 2

1

JSCODE 박재성

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

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

"실제로 기업에서 사용하는 MSA 구조에서도 이와 같이 서비스별로 별도의 데이터베이스를 구축하는지 궁금합니다."

-> 우선 실제 기업에서도 MSA를 적용할 때 서비스별로 별도의 DB를 구축하는 것이 원칙이에요 !

다만 말씀해주신 것처럼 비용 문제가 있기 때문에, 실무에서는 DB 소프트웨어 자체를 하나만 띄워두고 그 안에서 스키마나 데이터베이스를 서비스별로 논리적으로 분리하는 방식을 많이 사용해요 ~

예를 들어 MySQL 인스턴스 하나에 user_db, order_db, product_db처럼 데이터베이스를 나눠서 운영하는 식이죠ㅎㅎ

이렇게 하면 MSA의 데이터 독립성 원칙은 어느 정도 지키면서도 인프라 비용을 줄일 수 있어요 !

물론 서비스 규모가 커지고 트래픽이 늘어나면 그때는 각 서비스의 DB를 완전히 분리된 인스턴스로 운영하기도 하는데, 결국 팀의 규모와 비용, 트래픽 상황에 맞게 유연하게 결정하는 것이 현실적인 접근이죠 :)

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

0

인프런 AI 인턴

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

제공해주신 질문에 대해 설명해 드리겠습니다. MSA(Microservices Architecture)는 각 마이크로서비스가 독립적으로 관리되고 운영되는 것이 핵심입니다. 이를 위해 각 서비스가 자신만의 데이터베이스를 가지는 것이 원칙적입니다. 이런 설계는 서비스 간 결합도를 낮춰서, 서비스가 독립적으로 배포되고 확장되거나 유지보수되도록 돕습니다.

서비스별 별도 데이터베이스의 장단점

  1. 장점:

    • 독립성: 각 서비스가 독립적으로 발전하고 변경될 수 있습니다.
    • 확장성: 특정 서비스만 필요한 만큼 확장할 수 있습니다.
    • 장애 격리: 한 서비스의 데이터베이스 이슈가 다른 서비스에 영향을 미치지 않게 됩니다.
  2. 단점:

    • 비용 문제: 데이터베이스 관리 및 운영 비용이 증가합니다.
    • 데이터 중복: 같은 데이터가 여러 데이터베이스에 중복 저장될 가능성이 있습니다.
    • 통합 문제: 서비스 간 데이터 통합이나 조인이 필요할 때, 복잡해질 수 있습니다.

실제 산업 적용 사례

실제로 많은 기업들이 MSA를 도입할 때, 각 서비스별로 별도의 데이터베이스를 운영하기도 하지만 비용 절감을 위해 아래와 같은 혼합 전략을 사용합니다:

  • 공유 데이터베이스: 초기 단계나 예산 제약이 있는 경우, 서비스를 데이터베이스 스키마로 분리하여 단일 데이터베이스를 공유하기도 합니다.
  • 클라우드 데이터베이스: 클라우드 서비스 제공자의 매니지드 데이터베이스를 활용해 운영 및 관리 부담을 줄이기도 합니다.
  • 데이터 레플리케이션: 중요도가 높은 데이터는 여러 서비스에서 읽기 작업만 할 수 있도록 레플리케이션을 설정하기도 합니다.

유사한 질문과 해결 방안을 소개한 게시글을 참고해 보세요:

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

쿠버네티스 어나더 클래스-Sprint 1, 2 강의 관련 질문이있습니다.

1

15

1

혹시 강의에서 사용하시는 손글씨 도구? 프로그램이 뭔가요??

0

14

0

보안그룹 아웃바운드 규칙

0

9

1

pg사가 있다고 가정하면

0

10

0

Kafka Cluster 구성도 질문

0

17

1

데이터베이스 13번 문제

0

28

2

jar 파일 빌드

-1

19

1

배포 파이프라인 구축 후 마주하게 되는 고민들 (💻 실습)

1

24

2

GCP SQL 진짜 어이가 없네

-1

24

1

레디스로 재고 관리

0

37

2

Lock 해제 문의 드립니다.

0

42

2

38강 클러스터에 컨트롤러 연결 질문

0

47

2

가상머신, Jenkins 등의 설치, 설정

0

23

1

쿠버네티스에서의 스토리지 사용

1

43

2

user-service jwt

0

55

2

Microservice 에 DB 띄우기

0

75

2

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

0

76

2

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

0

79

2

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

0

93

2

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

0

122

2

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

0

96

2

가용성에대한 질의..

0

75

2

궁금한게있어요..

0

90

2

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

0

105

2