MSA에서 서비스별 DB 작성에 관해
안녕하세요.
언제나 좋은 강의 만들어주셔서 감사합니다.
강의에서 MSA는 서비스별로 DB를 구축하는 것으로 설명해주셨는데요.
이 경우, 서비스 수가 늘어날수록 데이터베이스도 함께 증가하게 되어
고정비용이 기하급수적으로 늘어날 것 같습니다.
실제로 기업에서 사용하는 MSA 구조에서도
이와 같이 서비스별로 별도의 데이터베이스를 구축하는지 궁금합니다.
답변 2
1
안녕하세요 ! 질문 잘 해주셨어요 ~
질문해주신 내용에 답변 드려볼게요 !
"실제로 기업에서 사용하는 MSA 구조에서도 이와 같이 서비스별로 별도의 데이터베이스를 구축하는지 궁금합니다."
-> 우선 실제 기업에서도 MSA를 적용할 때 서비스별로 별도의 DB를 구축하는 것이 원칙이에요 !
다만 말씀해주신 것처럼 비용 문제가 있기 때문에, 실무에서는 DB 소프트웨어 자체를 하나만 띄워두고 그 안에서 스키마나 데이터베이스를 서비스별로 논리적으로 분리하는 방식을 많이 사용해요 ~
예를 들어 MySQL 인스턴스 하나에 user_db, order_db, product_db처럼 데이터베이스를 나눠서 운영하는 식이죠ㅎㅎ
이렇게 하면 MSA의 데이터 독립성 원칙은 어느 정도 지키면서도 인프라 비용을 줄일 수 있어요 !
물론 서비스 규모가 커지고 트래픽이 늘어나면 그때는 각 서비스의 DB를 완전히 분리된 인스턴스로 운영하기도 하는데, 결국 팀의 규모와 비용, 트래픽 상황에 맞게 유연하게 결정하는 것이 현실적인 접근이죠 :)
추가로 궁금하신 점 있으시면 또 질문 남겨주세요~~
0
안녕하세요, 인프런 AI 인턴입니다. 팀비님.
제공해주신 질문에 대해 설명해 드리겠습니다. MSA(Microservices Architecture)는 각 마이크로서비스가 독립적으로 관리되고 운영되는 것이 핵심입니다. 이를 위해 각 서비스가 자신만의 데이터베이스를 가지는 것이 원칙적입니다. 이런 설계는 서비스 간 결합도를 낮춰서, 서비스가 독립적으로 배포되고 확장되거나 유지보수되도록 돕습니다.
서비스별 별도 데이터베이스의 장단점
장점:
- 독립성: 각 서비스가 독립적으로 발전하고 변경될 수 있습니다.
- 확장성: 특정 서비스만 필요한 만큼 확장할 수 있습니다.
- 장애 격리: 한 서비스의 데이터베이스 이슈가 다른 서비스에 영향을 미치지 않게 됩니다.
- 독립성: 각 서비스가 독립적으로 발전하고 변경될 수 있습니다.
단점:
- 비용 문제: 데이터베이스 관리 및 운영 비용이 증가합니다.
- 데이터 중복: 같은 데이터가 여러 데이터베이스에 중복 저장될 가능성이 있습니다.
- 통합 문제: 서비스 간 데이터 통합이나 조인이 필요할 때, 복잡해질 수 있습니다.
- 비용 문제: 데이터베이스 관리 및 운영 비용이 증가합니다.
실제 산업 적용 사례
실제로 많은 기업들이 MSA를 도입할 때, 각 서비스별로 별도의 데이터베이스를 운영하기도 하지만 비용 절감을 위해 아래와 같은 혼합 전략을 사용합니다:
- 공유 데이터베이스: 초기 단계나 예산 제약이 있는 경우, 서비스를 데이터베이스 스키마로 분리하여 단일 데이터베이스를 공유하기도 합니다.
- 클라우드 데이터베이스: 클라우드 서비스 제공자의 매니지드 데이터베이스를 활용해 운영 및 관리 부담을 줄이기도 합니다.
- 데이터 레플리케이션: 중요도가 높은 데이터는 여러 서비스에서 읽기 작업만 할 수 있도록 레플리케이션을 설정하기도 합니다.
유사한 질문과 해결 방안을 소개한 게시글을 참고해 보세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
deployment 업데이트 및 롤백 실행하기 -2
1
17
2
강의 듣는 중인데,
0
17
1
36강 오탈자가 있는 거 같습니다.
0
12
2
라우팅 테이블 설정 중 궁금한게 있습니다.
0
33
1
user-service jwt
0
31
2
애그리거트 질문있습니다!
0
29
2
젠킨스버전과 플러그인설치
1
31
2
DDD 는 마이바티스와 잘 맞지 않는건가요?
0
44
1
스프링부트 버전 문의드립니다.
0
38
1
cpu&memory 재설정하기에 질문이 있습니다.
1
42
2
Redlock 알고리즘 관해 궁금한게 있습니다!
0
37
2
시험 시작하기 전에 한 가지 질문 있습니다.
1
42
2
yml 작성하다가 에러 발생해서 문의 드립니다.
0
38
2
좋아요/조회수 카운팅 병목현상에 대해서 궁금한점이 있습니다.
0
31
2
(강의 6분 50초 부분) Workspace 안에 index.html이 비어있음
0
31
2
Microservice 에 DB 띄우기
0
61
2
MSA 프로젝트 요구사항 및 설계 에서의 FK
0
64
2
보상 트랜잭션을 위한 catch 문 안에서 에러가 발생한다면 어떻게 되는 건가요?
0
64
2
하나의 consumer에서 두가지 이상의 topic의 메세지를 받고자 할때 받는 메세지에 시간차와 상관없이 하나의 consumer에서 받을수 있나요?
0
77
2
카프카에서 발행한 이벤트를 처리중에 실패한 경우 보통 어떻게 처리하는지 궁금합니다
0
108
2
Kafka 비동기방식 적용하면서 질문 있습니다!
0
81
2
가용성에대한 질의..
0
64
2
궁금한게있어요..
0
78
2
MSA강의 보다 궁금해서 질문드립니다.
0
91
2





