아키텍처 개선하기
구현에만 집중하여 공부했던 좋은 시스템 설계 디자인을 하나도 못 지켰다. 이를 지키고자 리팩토링을 진행해보고자 한다.
먼저 내가 구현 및 개선하고자 하는 기능들을 단계별로 나열해보겠다.
성능 개선 관점
현재 Redis Pub/Sub을 통해 되어 있다. 이러한 설계는 레디스가 단일 장애 지점이 된다. 모든 서버가하나의 Redis를 보고 있으면 이 Redis가 장애 시 채팅 서비스가 멈추게 된다. 따라서 이중화를 통해 단일 장애 지점이 안되도록 개선해보겠다.
두번째는 Redis를 통해 서버에 전송되든 메시지가 유실된 경우이다. Redis의 경우 업데이트를 통해 메시지 저장 기능 또한 제공하지만 학습의 관점에서 카프카를 도입해볼 것이다 (오버 엔지니어링 인지)
Redis Stream, JetStream의 경우 유의미한 성능 차이가 있는지 테스트 해보고 싶다.
기능
현재 완성된 기능
1대1 채팅
먼저 도메인 정의를 다시 시작했다.
Last updated