작성
·
225
0
강사님, 두번째 질문을 연이어 남깁니다.
카프카 컨슈머에서 리밸런스가 자주 발생하면 안좋다고 살짝 언급하셨는데요.
현재 운영중인 스프링부트 애플리케이션의 경우, 애플리케이션 내에서 @KafkaListener 를 사용하여, 컨슈머 컨테이너가 포함된 형태로 사용중입니다. 즉, 메인 애플리케이션이 컨슈머를 안고있는 셈이죠. 강의를 듣기 전까지는 생각하지 못했는데 강의를 듣다보니 컨슈머는 변경이 없는데 메인 애플리케이션의 소스배포 등의 문제로 스프링부트 애플리케이션이 재기동될 때마다 컨슈머도 리밸런스가 발생하게 될텐데, 이렇게 운영하는 것은 그리 좋은 형태가 아닐런지요. 즉, 컨슈머만 동작하는 스프링부트 어플리케이션을 별도로 나누는 것이 권장하는 방식일지 궁금합니다.
답변 1
2
아리마님, 답변드립니다.
메인 애플리케이션의 배포로 인해 리밸런스 발생에 대응하는 방법이 있을까요?
말씀대로 컨슈머의 변경이 없어도 메인 애플리케이션이라고 불리는 모놀리틱 애플리케이션의 배포로 인해 리밸런스가 일어나는 것은 분명히 실시간 데이터 처리에 이슈가 발생할 가능성이 있습니다. 컨슈머가 처리하는 데이터 양이 많다면 배포시 마다 리밸런스로 인해 컨슈머 랙이 발생하여 충분히 빠른 시간 안에 데이터 처리를 못할 가능성이 있기 때문입니다. 그래서 저는 되도록이면 카프카 컨슈머 애플리케이션의 경우 MSA 구조로 따로 빼서 개발/배포하는 방식을 취합니다. 이를 통해 좀 더 나은 성능 튜닝과 유연한 스케일 아웃이 가능하기 때문이죠!