💡 Kafka 설계 과정을 기록하여 보자
개요
이번 "SNAIL"이라는 "외국인(다문화 가정)을 위한 한국 정착 지원 어플리케이션"을 기획하게 되었습니다.
이 어플리케이션은 커뮤니티 게시판, 모임, 채팅등 많은 기능들로 구성되어 있고, 많은 트래픽을 처리해야 합니다. (인증, 채팅 등)
또한, 향후 운영적인 측면에서 MSA와 Kafka를 통한 대용량 데이터 처리에 대한 경험을 키워보고자 선정하게 되었습니다.
기존 ERD 구조를 분리하기
채팅 
회원 
게시글 
모임 
챗봇 
알림 
파일 
- 팀원들과 회의를 거쳐서 백엔드 개발 전 1차적으로 완성한 ERD 구조이다.
- 각각 볼륨이 크기도 하여서 2개에서 3개정도로 분리할 생각이다.
- 구조를 살펴보면 일단, 채팅, 회원, 챗봇은 필수적으로 떼어내어야 하지 않을까 생각이 든다.
MSA 구조 설계
Kafka 구조 설계
이번 프로젝트에서는 DB를 여러개 사용한다. 기존 DB를 postgresql을 사용하고, 채팅에서는 MongoDB, 챗봇에서는 VectorDB을 사용한다. 또한 조회 성능을 올리기 위해서 Elasticsearch를 사용하기 때문에 총 4개의 DB를 사용하게 된다.
https://www.inflearn.com/community/questions/1062335/msa%EC%97%90%EC%84%9C-%EC%B9%B4%ED%94%84%EC%B9%B4-%EC%82%AC%EC%9A%A9?srsltid=AfmBOoqHVRt5PhKUrXTws_tJdhFEKfcKyV16RRz3QN05wgOgOrgIjSt9