inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

대용랑 채팅 TPS에 대한 stateful 서비스 구축하기

Kafka를 통한 Subscribe 마무리하고, API를 통해 확인해 볼게요.

카프카의 이유

해결된 질문

568

류돌프

작성한 질문수 30

1

안녕하세요 강사님 아키텍처에 궁금한 점이 생겨 질문드립니다.

카프카를 사용한 이유가 채팅 서버의 상태를 비동기로 전송하기 위함이라 이해했습니다.

  1. 채팅 서버가 실행/종료될 때

  2. 카프카에 이벤트 발행

  3. 컨트롤 서버가 이벤트 컨슈밍하며 채팅서버 상태 확인

제가 제대로 이해한게 맞다면 대략 위와 같은 흐름이라 이해했습니다.

즉 채팅 서버의 상태를 컨트롤 서버에 알리기 위해 카프카라는 메시지 브로커를 둔것 같은데, 카프카를 사용하지 않고 채팅서버에서 컨트롤 서버로 직접 상태를 전송하는 방식은 불가능할까요.? 이 상황에서 카프카가 굳이 필요한건지 라는 의문이 들어 질문하게 됐습니다ㅇㅅㅇ.

node.js mysql go kafka websockets

답변 1

1

July

안녕하세요 좋은 질문이신거 같아요. 항상 좀 더 좋은 방법에 대해서 고민을 하고 의심을 하는것은 매우 좋습니다.

일단 결론을 먼저 말씀드리자면, 채팅서버에서 컨트랙트로 상태를 전송하셔도 되요.

그런데 문제는 다음과 같아요.

 

  1. 서버가 갑자기 죽는경우에 대해서 어떻게 요청을 보낼 것인가.

  2. HTTP 요청을 전송을 한다고 하면, 그 부분에 대한 리소스는 어떻게 처리가 될 까??

이런 부분만 확인해 보면 일단 HTTP 요청은 절대적으로 정답이 아니라는 것을 알 수가 있어요.

 

그리고 일반적으로 실제 실무에서는 서버간 통신에 대해서 물론 모든 부분이 적용이 되는것은 아니지만,

이러한 상태 관리에 대한 이벤트같은 부분은 보통 Kafka같은 이벤트 툴을 사용을 합니다.

 

다른 서버에서는 그냥 이벤트를 툭 던짐으로써 바로 역할을 종료하면 되기 떄문에, 굳이 컨트롤 타워의 처리 형태를 기다릴 필요가 없는거죠.

그럼으로써 좀 더 리소스를 절약할 수 있다는 장점도 있고요

 

파이후님이 좀 더 다른 방법이 좋다고 생각을 하신다면, 그 방식으로 적용을 해보셔도 되요. 저는 개발에 정답은 없다고 생각을 하기 떄문에

Kafka를 굳이 사용해야 할까?? 에 대한 정답은 상세설명에서도 나와 있듯이 단순히 많은 회사에서 사용을 하기 때문에 채용을 했다고 생각을 하시면 됩니다.

 

이외에도 RabbitMQ, Redis등이 있으니 관심있으시면 한번 살펴보시는 것도 좋을꺼 같아요.

질문 감사합니다!

1

류돌프

강사님이 정의해주신 문제를 보니 카프카를 왜 사용해야 하는지 이해가 되네요

 

  1. 서버가 갑자기 죽는경우에 대해서 어떻게 요청을 보낼 것인가.

    1. (강의에서 말해주셨듯이) 카프카가 일종의 로드밸런싱 역할을 하니까, 컨트롤 서버 중 하나가 죽더라도 정상적으로 통신이 가능하겠네요

  2. HTTP 요청을 전송을 한다고 하면, 그 부분에 대한 리소스는 어떻게 처리가 될 까?

    1. 이 부분은 생각지 못했는데, 카프카는 카프카 프로토콜이라는 TCP 방식으로 통신하는 걸 알게 됐어요. 기존 http 보다 훨씬 빠르게 전송이 가능해지겠군요!

 

답변 감사합니다~!

 

간단한 오타 제보입니다.

0

8

0

2강 nodejs 3단계 설명 질문

0

21

1

큰 범위 조회 시 EXPLAIN의 rows 값이 정확하지 않은 이유가 궁금합니다.

0

29

2

실제 FK제약조건을 설정하지 않는이유

0

20

1

조회속도 개선에서 더 개선하는 방법이 궁금합니다.

0

22

2

useEffect와 lifecycle문의

0

22

2

프론트엔드 학습 수준 문의

0

31

2

라이브 운영중인 환경의 테이블에 인덱스 추가시 고려사항

0

30

2

리액트 챕터별 코드에서 eslint 설정파일이 없어요

0

46

2

user-service jwt

0

31

2

JPA Repository 질문이 있습니다!

1

32

2

페이지네이션 처리를 쿼리에서 하는 방식 질문

1

35

1

비동기 스레드풀 분리 이유와 Virtual Thread 전환 시 고려사항

0

34

1

gRPC 실무에서 질문

0

35

2

response 함수에 대해

0

43

1

Kafka 구동관련

1

141

2

채팅 메세지에 관한 카프카와 DB 구성도

0

273

2

동영상 오타.

1

90

1

혹시 그리드방식 소켓 채팅창은 안알려주시나요?

1

220

2

포스트맨 테스트

1

406

1

채팅 클라이언트는 누구와 연결되는지

1

286

1

코드 공유

1

308

1

컨트롤 서버가 다운되면 어떻게 되나요?

1

268

1

1탄과 2탄 사이 변경된 코드 질문

1

278

1