인프런 커뮤니티 질문&답변

현이님의 프로필 이미지
현이

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

목차

MSA - 각 마이크로 서비스마다 별도의 DB사용 질문

작성

·

201

0

#질문 배경#

user-service , catalog-service , order-service 까지 실습을 하고 확인해보니 아래 사진들과 같이 각 서비스마다 다른 DB를 사용하는 것을 알게되었습니다.

마이크로 서비스들을 공통적으로 yml 파일에다 DB명을

msauser 라고 명명해 헷갈렸지만 말이죠.

스크린샷 2024-07-24 오후 3.39.24.png

스크린샷 2024-07-24 오후 3.39.48.png

#질문#:

  • 강의내용을 들어보고 생각해봤는데 실제로 마이크로 서비스를 배포할때 mysql같은 RDB를 각 마이크로 서비스들(3개라고 가정)이 사용한다고 가정하면 각 마이크로 서비스들이 사용할 DB 3개를 만들어줘야 한다고 이해하고 있습니다. 맞나요?

    (+ 다른 DB지만 메시징큐로 각 서비스들끼리 통신)

    그런데 시스템에 DB의 양이 적다면 DB 1개만 만들고 각 마이크로 서비스들이 하나의 DB를 접근하게 구현하기도 하나요?

답변 1

1

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

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

MSA 애플리케이션을 구축하실 때, 데이터베이스 관리를 어떻게 할지, 동기화를 어떻게 할지 등을 설계하게 됩니다. MSA 라고해서 모든 서비스별로 데이터베이스를 분리하여 사용할 필요는 없습니다. 다만, 데이터베이스를 분리하게 되면 서비스간의 종속성을 줄일 수 있기 때문에, 유지보수 및 확장성도 가져갈 수 있다고 생각됩니다. 말씀하신 것처럼 3가지 서비스별로 DB를 구축하기에 필요한 리소스가 적다면, 하나의 DB를 설계하여, 스키마를 잘 분리하거나, 서비스 간에 필요한 데이터를 사용하신다면, 오히려, MSA를 통해 다른 서비스의 데이터를 사용하는데 필요한 Network 발생을 줄일수도 있다고 생각됩니다. 구축하려는 서비스의 환경이나 서비스 특성에 따라서 DB를 분리하거나 공통 된 DB를 사용하실 수 있습니다.

추가 질문있으시면 다시 글 남겨 주세요.

감사합니다.

현이님의 프로필 이미지
현이
질문자

답변 감사드립니다!

현이님의 프로필 이미지
현이

작성한 질문수

질문하기