인프런 커뮤니티 질문&답변
MSA에서 서비스별 DB 작성에 관해
해결된 질문
작성
·
38
0
안녕하세요.
언제나 좋은 강의 만들어주셔서 감사합니다.
강의에서 MSA는 서비스별로 DB를 구축하는 것으로 설명해주셨는데요.
이 경우, 서비스 수가 늘어날수록 데이터베이스도 함께 증가하게 되어
고정비용이 기하급수적으로 늘어날 것 같습니다.
실제로 기업에서 사용하는 MSA 구조에서도
이와 같이 서비스별로 별도의 데이터베이스를 구축하는지 궁금합니다.
답변 2
1
안녕하세요 ! 질문 잘 해주셨어요 ~
질문해주신 내용에 답변 드려볼게요 !
"실제로 기업에서 사용하는 MSA 구조에서도 이와 같이 서비스별로 별도의 데이터베이스를 구축하는지 궁금합니다."
-> 우선 실제 기업에서도 MSA를 적용할 때 서비스별로 별도의 DB를 구축하는 것이 원칙이에요 !
다만 말씀해주신 것처럼 비용 문제가 있기 때문에, 실무에서는 DB 소프트웨어 자체를 하나만 띄워두고 그 안에서 스키마나 데이터베이스를 서비스별로 논리적으로 분리하는 방식을 많이 사용해요 ~
예를 들어 MySQL 인스턴스 하나에 user_db, order_db, product_db처럼 데이터베이스를 나눠서 운영하는 식이죠ㅎㅎ
이렇게 하면 MSA의 데이터 독립성 원칙은 어느 정도 지키면서도 인프라 비용을 줄일 수 있어요 !
물론 서비스 규모가 커지고 트래픽이 늘어나면 그때는 각 서비스의 DB를 완전히 분리된 인스턴스로 운영하기도 하는데, 결국 팀의 규모와 비용, 트래픽 상황에 맞게 유연하게 결정하는 것이 현실적인 접근이죠 :)
추가로 궁금하신 점 있으시면 또 질문 남겨주세요~~
0
안녕하세요, 인프런 AI 인턴입니다. 팀비님.
제공해주신 질문에 대해 설명해 드리겠습니다. MSA(Microservices Architecture)는 각 마이크로서비스가 독립적으로 관리되고 운영되는 것이 핵심입니다. 이를 위해 각 서비스가 자신만의 데이터베이스를 가지는 것이 원칙적입니다. 이런 설계는 서비스 간 결합도를 낮춰서, 서비스가 독립적으로 배포되고 확장되거나 유지보수되도록 돕습니다.
서비스별 별도 데이터베이스의 장단점
장점:
- 독립성: 각 서비스가 독립적으로 발전하고 변경될 수 있습니다.
- 확장성: 특정 서비스만 필요한 만큼 확장할 수 있습니다.
- 장애 격리: 한 서비스의 데이터베이스 이슈가 다른 서비스에 영향을 미치지 않게 됩니다.
- 독립성: 각 서비스가 독립적으로 발전하고 변경될 수 있습니다.
단점:
- 비용 문제: 데이터베이스 관리 및 운영 비용이 증가합니다.
- 데이터 중복: 같은 데이터가 여러 데이터베이스에 중복 저장될 가능성이 있습니다.
- 통합 문제: 서비스 간 데이터 통합이나 조인이 필요할 때, 복잡해질 수 있습니다.
- 비용 문제: 데이터베이스 관리 및 운영 비용이 증가합니다.
실제 산업 적용 사례
실제로 많은 기업들이 MSA를 도입할 때, 각 서비스별로 별도의 데이터베이스를 운영하기도 하지만 비용 절감을 위해 아래와 같은 혼합 전략을 사용합니다:
- 공유 데이터베이스: 초기 단계나 예산 제약이 있는 경우, 서비스를 데이터베이스 스키마로 분리하여 단일 데이터베이스를 공유하기도 합니다.
- 클라우드 데이터베이스: 클라우드 서비스 제공자의 매니지드 데이터베이스를 활용해 운영 및 관리 부담을 줄이기도 합니다.
- 데이터 레플리케이션: 중요도가 높은 데이터는 여러 서비스에서 읽기 작업만 할 수 있도록 레플리케이션을 설정하기도 합니다.
유사한 질문과 해결 방안을 소개한 게시글을 참고해 보세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




