‘게시글 조회 로직’을 구현할 때 위의 방식처럼 구현했었다. 위의 방식도 충분히 괜찮은 방식이지만, 게시글 조회 로직의 트래픽이 점차 증가하면서 사용자 서비스의 ‘사용자 DB’에 부담을 줄 수 있다. 또한 ‘게시글 조회 로직’이 더 복잡해져서 사용자 서비스 뿐만 아니라 여러 서비스에 데이터를 조회해서 사용해야 한다면 로직이 복잡해진다.
이런 문제가 발생한다면 게시글 조회 로직을 최적화 할 필요가 있다. 조회 로직의 가장 간단한 최적화 방법은 ‘데이터 동기화’이다. 그림으로 살펴보자.
게시글 서비스에서 게시글 조회를 할 때 사용자 서비스의 사용자 정보(user_id, name)를 같이 조회한다. 즉, 게시글 서비스는 사용자 정보(user_id, name)가 필요하다. 이걸 해결하기 위해 게시글 서비스에서 필요한 사용자 정보를 관리할 수 있는 테이블을 별도로 두는 것이다.
그러고 사용자 DB에서 데이터 변경이 일어날 때마다 카프카로 ‘사용자 정보 변경 메시지’를 발행한다. 그럼 게시글 서비스가 해당 메시지를 구독하고 있다가, 사용자 정보가 변경될 때마다 게시글 DB에 사용자 정보를 같이 동기화시켜주는 방식이다.
이런 식으로 구성하게 되면 게시글 서비스가 자체적으로 사용자 정보(user_id, name)을 가지고 있기 때문에, 게시글 정보를 조회할 때 사용자 서비스에 데이터를 따로 요청하지 않아도 된다. 그래서 사용자 DB에 부담을 주지 않게 되고, 게시글 조회 로직도 훨씬 간단하게 바뀌게 된다.