inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실습으로 배우는 선착순 이벤트 시스템

문제점

예제 프로젝트 상에서의 Kafka 사용시 궁금한점

869

김동건

작성한 질문수 4

1

강의 잘 듣고 있습니다. 질문사항이 두개 있습니다.

1.

4강의 [문제점] 영상에서 쿠폰생성 10000개 요청으로 인해 mysql이 1분에 100개의 insert가 가능하다고 가정할 시 '주문생성/회원가입요청이 타임아웃 또는 10분뒤에 실행' 된다고 하셨는데요.

예제로 사용하신 Kafka 사용 예제에서는 Consumer 프로젝트도 어차피 API프로젝트와 같은 DB를 바라보고 있으므로, 어차피 Kafka를 사용하여도 '주문생성/회원가입요청이 타임아웃 또는 10분뒤에 실행'되지 않나요?

 왜 여쭤보냐면, 강의 내에서 Kafka 미사용시 주문생성/회원가입요청의 타임아웃 및 10분뒤 실행에 대한 해결책을 Kafka로 사용하셔서 문의드립니다.

2.

5강의 [Consumer 사용하기] 영상을 보면 API 프로젝트 Consumer 프로젝트가 별개로 존재합니다.

그러므로 API프로젝트의 테스트 케이스가 종료되어도 Consumer 프로젝트는 이미 Kafka로 100개의 데이터가 스트림으로 들어오는 상태이므로, 테스트케이스가 종료되어도(즉, API프로젝트가 종료되어도) Cunsumer 프로젝트는 종료가 되지 않은 상태이므로 100개의 쿠폰이 DB에 생성이 되어야 하는게 아닌지요?

왜 여쭤보냐면, 강의 내에서는 API프로젝트가 종료되면 Consumer 프로젝트도 작업이 멈추는 현상이 있어서 문의드립니다.

java docker spring-boot kafka redis

답변 2

2

최상용

김동건님 안녕하세요.
좋은질문을 해주셔서 감사하다는 말씀을 먼저 드립니다.

1번 질문에 대한 답변을 먼저 드리도록 하겠습니다.
Kafka 미사용시 주문생성/회원가입요청의 타임아웃 및 10분뒤 실행에 대한 해결책으로 Kafka 를 선택한 이유는 배압조절(back pressure) 때문입니다.

10000개의 요청을 프로듀서를 활용하여 토픽으로 전송하고 카프카에서 10분에 걸쳐 차근차근 10000개를 생성하도록 처리한다면 database 에 가해질 수 있는 부하를 조절할 수 있게 됩니다.

부하를 조절 하였으므로 다른요청들을 처리할 수 있게 될 것입니다.

 

2번질문에 대한 답변을 드리면 말씀하신대로 100개의 쿠폰이 생성되어야 합니다.
무조건 중지되는 것일까요 ?

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.

1.4강에서 언급한 내용은 예제로 사용한 Kafka를 이용하여 주문 생성과 회원 가입 요청을 처리하는 경우입니다. 이 경우, Kafka를 통해 요청이 들어오면 Consumer가 해당 요청을 바로 처리하지 않고, 타임아웃이나 10분 뒤에 실행되도록 작업을 지연시킵니다. 따라서 주문 생성이나 회원 가입이 바로 처리되지 않고, 지연된 후에 실행됩니다.

그러나 Consumer 프로젝트가 API 프로젝트와 같은 DB를 바라보고 있다고 하더라도, Kafka를 통한 메시지 처리 방식에는 변함이 없습니다. Kafka를 사용하더라도 메시지 처리 작업은 타임아웃이나 지연된 실행을 위한 설정에 따라 처리됩니다.

2.5강에서 언급한 내용은 API 프로젝트와 Consumer 프로젝트를 별개로 존재시키는 경우입니다. 이 경우, API 프로젝트가 종료되어도 Consumer 프로젝트가 계속해서 Kafka에서 데이터를 스트림으로 받고 있을 수 있습니다. Consumer 프로젝트는 계속해서 데이터를 받고 처리하며, 따라서 테스트 케이스가 종료되거나 API 프로젝트가 종료되더라도 Consumer 프로젝트는 계속 실행되며, Kafka로부터 받은 데이터를 처리할 수 있습니다.

따라서 Consumer 프로젝트는 API 프로젝트가 종료되어도 데이터를 계속해서 처리할 수 있고, 100개의 쿠폰을 DB에 생성할 수 있습니다.

더 궁금하신 사항이 있으면 언제든지 물어보세요!

ApplyService와 Consumer서비스의 db공유?

0

56

2

consumer가 topic을 전부 사용하기 전에 사용자에게는 쿠폰이 발급된것으로 확인하는 과정에서 발생가능한 문제.

0

77

1

쿠폰에 관련되어서 좀 더 참고할만한 자료가 있을까요?

0

85

2

흐름정리 제가 이해한게 맞나요?

0

73

2

안되서 스트레스 받아요

-2

111

2

프로젝트 진행할때 모듈로 추가하는 이유가 궁금합니다!

0

185

2

Redis 활용하기 문제점 해결하기 부분이 이해가 잘 안됩니다...

0

213

1

카프카를 도입하고 난 뒤 로그로 보여지는 장점을 발견하지 못하고 있습니다.

0

167

2

키생성 방식에 따른 성능

0

168

2

사용자 동선에 대한 트랜잭션 문의

0

134

2

강사님 강의를 듣고 실제 프로젝트에서 이벤트 응모 시스템을 만들어 봤습니다.

0

210

1

쿠폰 발급 개수 제한

0

183

2

ApplyService 의 총 처리 시간이 궁금합니다.

0

154

1

쿠폰 생성 에러 처리에 관해서 질문이 있습니다.

0

224

2

마지막에 하신 테스트 자체는 실패하는 게 맞는거죠??

0

276

2

안녕하세요 질문 있습니다!

0

295

1

쿠폰 발급 유저 흐름에 대한 질문

0

308

2

수량 조절에 대한 질문이 있습니다.

0

231

2

kafka Producer 실행 중 에러 시 redis count 정합성 이슈

0

398

2

test 과정에서 오류가 발생합니다.

0

383

1

도커 환경설정에 대해서

0

269

2

Redis의 INCR 사용 해도 Race condition이 잡히지 않는 문제

0

599

1

consumer 모듈

0

322

2

카프카 토픽 생성오류

0

383

2