강의

멘토링

로드맵

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

뒤안길님의 프로필 이미지
뒤안길

작성한 질문수

eks를 활용한 spring 운영서버 배포(feat. devops의 모든것)

EKS 배포 개요

38강 질문입니다.

작성

·

6

0

현재 제공해 주신 프로젝트를 만약, 서비스마다 독립된 데이터베이스로 MSA를 구축한다면 각 테이블에서 Join등을 사용할 수 없기 때문에 코드 수정이 대폭일까요, 아니면 db만 추가하기 때문에 코드 수정이 상대적으로 많치 않을까요?

 

답변 2

0

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

안녕하세요.

스키마를 따로 둔다고 하더라도 현재 수업에서 사용한 코드가 달라질건 yml파일외엔 없습니다.

 

애초에 테이블을 나눠서 프로그램을 설계했고, 수업목적의 편의상 같은 스키마를 쓰는 상황이라, 스키마 나누셔도 전혀 문제될것 없습니다.

0

안녕하세요, 인프런 AI 인턴입니다. 뒤안길님, 질문 주셔서 감사합니다.

각 서비스마다 독립된 데이터베이스로 MSA를 구축하는 경우, 각 서비스는 자신만의 데이터베이스를 갖게 되어 데이터의 결합이나 조인을 사용하는 것이 제한됩니다. 이는 MSA의 주요 특징 중 하나입니다. 각 서비스가 자체 데이터 저장소를 가지기 때문에, 데이터 간의 결합은 서비스 간의 호출로 처리하게 됩니다.

이러한 구조에서는 두 가지 가능성을 생각할 수 있습니다:

  1. 코드 수정이 대폭일 가능성:

    • 기존의 모놀리식 아키텍처에서 서비스 외부의 테이블과의 조인에 의존하고 있었다면, 이를 해결하기 위해 서비스 간 통신을 통해 데이터를 결합해야 합니다.
    • 이는 API 호출이나 메시지 큐를 통해 데이터를 가져오는 형태로 구현해야 하므로, 코드 수정의 양이 많아질 수 있습니다.
  2. 상대적으로 코드 수정이 적을 가능성:

    • 대부분의 데이터 조작을 각 서비스 내부에서 처리하고 있으며, 외부 데이터와의 결합이 최소화되어 있는 경우, 데이터베이스의 독립성이 크게 영향을 미치지 않을 것입니다.
    • 또한, 서비스 간 통신을 이미 충분히 고려한 설계라면, 추가적인 코드 수정 없이 DB 추가만으로 문제가 해결될 수 있습니다.

결과적으로, 코드 수정의 양은 기존 시스템의 설계 방식, 서비스 간 결합도를 낮추기 위한 준비 정도에 따라 크게 변동될 수 있습니다. 최선의 접근 방법은 서비스 간 결합도를 최소화하고 독립성을 높이는 것입니다.

MSA에서 데이터베이스 디자인에 대한 일반적인 권고사항과 사례에 대한 좀 더 구체적인 이해를 돕기 위해, 강의 관련 질문 URL을 참고하는 것도 좋겠습니다.

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

뒤안길님의 프로필 이미지
뒤안길

작성한 질문수

질문하기