인프런 커뮤니티 질문&답변
MSA 질문이 있습니다
작성
·
26
답변 1
0
네 강의자입니다. 하나하나 답변드리면,
db를 나누면 조인이 깨지나?
네. 서비스가 각각 DB를 가지면(독립 DB) 기본적으로 DB 레벨 JOIN은 못 합니다.
그래서 MSA에서는 보통 이렇게 바꿉니다.
(A) 조회 JOIN → “API 조합(Composition)”
화면/조회가 필요하면
BFF/조회용 API가 여러 서비스에서 데이터를 가져와 애플리케이션에서 합쳐서 내려줌
단점: 호출이 여러 번(네트워크 비용), 성능/장애 전파 고려 필요
(B) 조회 JOIN → “읽기 전용 모델(Projection) / CQRS”
자주 쓰는 조회는
이벤트/동기화로 읽기 전용 테이블을 따로 만들어서
거기서는 JOIN이 가능하게 만듦
실무에서 제일 흔한 해법 중 하나
그럼 JOIN 하다가 DB 나뉘면 쿼리 효율 떨어지나요?”
그럴 수 있어요. 특히 “모노리스에서 SQL JOIN 한 방”이던 걸
MSA에서 “서비스 3개 호출 + 조합”으로 바꾸면 지연이 늘 수 있습니다.
그래서 전환 시 판단 기준을 이렇게 잡으면 됩니다.
JOIN이 많은데도 MSA로 가야 하는 경우
팀/배포/확장/장애 격리가 더 중요할 때
도메인이 커져서 변경 영향도가 너무 클 때
JOIN이 너무 핵심이고 실시간/고성능이 절대 조건이면
무리하게 쪼개지 않거나
쪼개더라도 조회는 별도 읽기 모델로 풀어야 합니다(CQRS/Projection)
데이터 레이크 만들 타이밍?
네, 바로 데이터레이크로 가는 건 아닙니다.
보통은 CQRS, 머터리얼라이즈드 뷰, 읽기 전용 조회 서비스를 먼저 고려하고,
그걸로 감당이 안 될 만큼 데이터 양·조회 복잡도·분석 요구가 커질 때
데이터레이크(DWH/레이크하우스)로 가는 게 일반적인 순서입니다.
감사합니다.





