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를 도입할 때, 각 서비스별로 별도의 데이터베이스를 운영하기도 하지만 비용 절감을 위해 아래와 같은 혼합 전략을 사용합니다:
- 공유 데이터베이스: 초기 단계나 예산 제약이 있는 경우, 서비스를 데이터베이스 스키마로 분리하여 단일 데이터베이스를 공유하기도 합니다.
- 클라우드 데이터베이스: 클라우드 서비스 제공자의 매니지드 데이터베이스를 활용해 운영 및 관리 부담을 줄이기도 합니다.
- 데이터 레플리케이션: 중요도가 높은 데이터는 여러 서비스에서 읽기 작업만 할 수 있도록 레플리케이션을 설정하기도 합니다.
유사한 질문과 해결 방안을 소개한 게시글을 참고해 보세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
쿠버네티스 어나더 클래스-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





