최근 카프카를 공부하면서 기초적인 개념만 익혔습니다. 아직까지 설계를 할때 어떤식으로 써야하는지 감이 잘 안잡힙니다.
예를 들어서 카카오톡이나 팀즈같은 채팅앱을 만든다고 가정했을때 토픽을 채팅방 처럼 사용해도 괜찮은가요?? 그러면 너무많은 토픽이 생길거 같은데
아니면 카프카나 메세징큐는 그저 이벤트 브로커 역할만 해주고 관련 처리는 다 애플리케이션 서버쪽에서 해줘야하는 구조가 맞나요?
또 카프카에 너무 많은 부하가 걸리면 애플리케이션 서버처럼 물리적으로 다른 컴퓨터에서 스케일 아웃을 할 수 있나요?? 예를 들어서 aws ec2 한대 더 켜서 오토스케일링 한다던지..?
3개의 댓글
무분별한 사용은 차단될 수 있습니다.
undefined
1. 토픽을 채팅방처럼 사용해도 되는가?
- 가능.다만 이렇게 설계하면 토픽의 수가 많아질 수록 브로커에 대한 부하도 증가함
2. 카프카를 브로커로만 사용해야 하는가?
- 네. 실제 처리는 애플리케이션 백엔드 서버에서 하시길
3. 스케일아웃이 가능한가?
- 네. 클러스터로 운영되므로 부하 많을 경우 클러스터를 확장하여 스케일 아웃할 수 있음
년째 고민중
답변 감사합니다.
관련 주제로 구글링을 해봐도 예시나 예제들이 대부분 레디스나 카프카 같은 메시징큐를 쓰고 채팅방 하나를 하나의 토픽으로 잡고 설계를 많이 하더라구요
아무리 생각해도 이벤트가 발생했을때 같은 방에 존재하는 유저가 서로 다른 서버에 연결되어있어도 대화내용을 전달해주려면 그 서버들이 같은 토픽에 연결되어 있어야 할거같아서요
같은 방에 존재하는 유저들한테 이벤트를 전달하기 위해선 이게 맞는거 같은데 다른 설계방식으론 어떻게 설계를 할 수 있나요?
그리고 토픽을 채팅룸으로 잡으면 카톡같은 서비스는 유저당 1:n의 채팅방을 개설할 수 있으므로 어마무시한 수의 토픽이 생길거 같은데 이에대한 처리도 어떻게 할지 감이 안잡힙니다.
단순히 하나의 클러스터에 매우 많은 양의 토픽이 생겨서 부하가 가중되면 부하만큼 브로커를 스케일 아웃하여 처리하는 식으로 해결하나요..?
tolabose
1. 가능
근데 메시지 큐는 1회성이므로 비추
2. 스케일 아웃 가능
파티션 추가 가능