MSA프로젝트 ERD 구성하기

박경희·2025년 2월 19일

프로젝트

목록 보기
17/22

✅ ERD Cloud에서 FK(연관관계) 설정 여부

  • ❌ ERD Cloud에서 물리적인 다대일(1:N) 관계 설정을 하지 않는다.
  • 대신, 외래 키(FK) 값만 저장하여 참조하는 방식으로 설계해야 한다.

즉, 각 서비스는 FK 값을 저장하고, 다른 서비스에서 해당 ID를 기반으로 데이터 조회만 하면 된다.


MSA에서 FK 대신 참조하는 방식

(1) 기존 ERD에서 FK를 사용하는 일반적인 방식(이 방식은 MSA에서 사용 ❌)

CREATE TABLE attendees (
    id BIGINT PRIMARY KEY,
    meeting_id BIGINT,
    user_id BIGINT,
    FOREIGN KEY (meeting_id) REFERENCES meetings(id),
    FOREIGN KEY (user_id) REFERENCES users(id)
);
  • attendees 테이블이meetingsusers의 DB를 참조해야 함 → 서로 다른 서비스의 DB를 직접 연결하면 안 됨!
  • 따라서, FK 관계를 제거하고 ID 값만 저장하는 방식을 사용해야 한다.

(2) MSA에서 FK 없이 ID 값만 저장하는 방식(이 방식은 MSA에서 사용 ✅)

CREATE TABLE attendees (
    id BIGINT PRIMARY KEY,
    meeting_id BIGINT,  -- 모임 ID (Meeting Service에서 관리)
    user_id BIGINT,  -- 유저 ID (User Service에서 관리)
    joined_at TIMESTAMP
);
  • meeting_iduser_id를 그냥 숫자 값으로 저장
  • 필요할 때 API 호출 또는 이벤트 기반 방식으로 데이터를 조회
  • DB 간 FK 연관 관계를 설정하지 않음 → MSA의 독립성 유지

MSA에서 모임 참석자 정보를 조회하는 방식

1️⃣ API 호출 방식 (동기)

  • Meeting Service에서 참석자(user_id) 목록을 가져온다.
  • User Service의 API를 호출하여 해당 유저 정보를 조회.
GET /users?ids=101,102,103

2️⃣ 이벤트 기반 방식 (비동기)

  • User Service에서 유저 정보가 변경될 때(USER_UPDATED 이벤트) Meeting Service가 이를 구독하여 업데이트.

0개의 댓글