응답값을 자세히 보면 게시글 정보 뿐만 아니라 사용자 정보도 일부 포함되어 있다. MSA에서는 어떻게 이 기능을 구현할 수 있는 지 알아보자.
✅ ’모놀리식 아키텍처’에서 데이터 조회 기능 구현 방식
모놀리식 아키텍처에서는 하나의 DB에 사용자 정보와 게시글 정보가 한꺼번에 저장되어 있기 때문에 아래와 같이 SQL문 중 JOIN 문을 활용해 데이터를 쉽게 조회해올 수 있다.
SQL문
SELECT
b.board_id,
b.title,
b.content,
u.user_id,
u.name
FROM
boards b
INNER JOIN
users u ON b.user_id = u.user_id
WHERE
b.board_id = 1;
하지만 MSA 구조에서는 사용자 정보가 저장되어 있는 DB와 게시글 정보가 저장되어 있는 DB가 분리되어 있기 때문에 SQL문의 JOIN 문을 활용할 수가 없다. 그럼 MSA 구조에서는 어떻게 데이터를 조회해와야 하는 지 알아보자.
✅ MSA에서 데이터 조회 기능 구현 방식
MSA 방식에서는 서비스 별로 DB가 분리되어 있기 때문에 게시글 정보와 사용자 정보를 각각 불러와야 한다. 그런데 MSA 구조에서는 각 서비스의 독립성을 유지하기 위해, 특정 서비스가 다른 서비스의 DB에 직접적으로 접근해서는 안 된다. 오로지 사용자 서비스의 API와 같은 인터페이스를 통해서만 접근해야 한다.
그래서 게시글 서비스가 사용자 서비스의 ‘사용자 정보 조회 API’를 통해 사용자 정보를 조회해와야 한다. 게시글 서비스가 외부의 다른 서비스로부터 데이터를 받아올 때는 특별한 방법이 있는 게 아니라, 외부 API와 통신하듯이 REST API 방식으로 데이터를 받아오면 된다.
참고로, 서비스 간에 데이터를 주고 받을 때는 반드시 REST API 방식을 활용해야 되는 건 아니다. 데이터를 주고 받을 수 있는 통신 방식이면 어떤 통신 방식이든 상관없다. 그 중에서 최근에 종종 언급되고 있는 통신 방식으로 gRPC, graphQL가 있다. 하지만 대부분의 기업에서 아직 gRPC, graphQL을 보편적으로 사용하고 있지는 않기 때문에 이 강의에서는 gRPC, graphQL을 따로 다루진 않을 예정이다.