해결된 질문
작성
·
22
0
안녕하세요, 강사님!
Kafka 관련 강의를 듣다가 기술 선택의 기준에 대해 궁금한 점이 생겨 질문드립니다.
현재 강의에서 Kafka를 이벤트 브로커(Event Broker)로 사용하고 계신데,
Redis의 Pub/Sub 또는 Redis Streams 기능을 이용하면
비슷한 형태로 서비스 간 메시지 전달을 구현할 수도 있을 것 같다는 생각이 들었습니다.
그래서 아래 두 가지 부분이 궁금합니다
Kafka를 선택하신 이유 또는 기준이 무엇인지
예: 처리량, 확장성, 영속성, 장애 복구 등 기술적 관점에서 어떤 요소가 결정적이었는지
혹은 실제 서비스 환경에서 Redis 기반 메시징을 사용했을 때의 한계가 있었는지도 궁금합니다.
이벤트 브로커(Event Broker)와 메시지 브로커(Message Broker)의 개념적 차이
두 용어가 거의 비슷하게 사용되는 경우도 많은데,
Kafka가 ‘이벤트 브로커’로 분류되는 이유가 무엇인지 알고 싶습니다.
실제로 시스템 설계 시, 어떤 기준으로 두 개념을 구분하고 선택하시는지도 궁금합니다.
제가 이해하기로는 Redis는 단순한 메시지 전달 중심,
Kafka는 이벤트 스트리밍 및 데이터 파이프라인 중심으로 알고 있는데,
이 부분이 맞는 방향인지도 확인해보고 싶습니다.
답변 2
0
hobit22님, 안녕하세요!
아주 좋은 질문이네요.
Kafka를 선택하신 이유 또는 기준이 무엇인지
가장 큰 기준은 안정성일 것 같습니다.
Kafka는 여러 개의 브로커로 장애 시에 가용성을 유지할 수도 있고, 디스크 쓰기와 복제를 통해서 이벤트 유실 문제에 대해서도 해결할 수 있습니다. 데이터의 offset도 기록하고 있다보니, 애플리케이션 재시작이나 재처리 필요 시에도 유용하고요.
Kafka는 뿐만 아니라 확장성이나 성능도 좋기 때문에 대규모 데이터를 다루는데 아주 유리합니다.
Redis는 이러한 측면들에서 Kafka보다 불리한 측면이 많다고 생각되네요.(확장성(파티션), 가용성, 안정성(offset, 브로커, 디스크, 백프레셔) 등)
사실 대규모 이벤트를 안전하게 중개하기 위한 시스템으로 Kafka는 이미 안정성도 많이 입증되었고 꾸준히 관리도 되고 있다보니, 거의 표준처럼 사용되는 것 같습니다.
물론, Redis를 이미 운영중이고 익숙하며 안정성에 크게 우려가 없다면 Redis를 채택해도 전혀 문제 되진 않습니다.
Kafka는 아무래도 운영도 어렵고 설정이나 내부 구조도 더욱 복잡할 수 있으니깐요.
하지만 복합적으로 다른 요인들도 같이 고려해 본다면, Redis의 pub/sub을 채택하는게 옳은 선택일지는 고민해볼 수 있을 것 같습니다.
이벤트 브로커(Event Broker)와 메시지 브로커(Message Broker)의 개념적 차이
이벤트와 메시지의 용어 차이를 이해해 보시면 좋을 것 같습니다!
메시지는 1:1로 대상과 방향이 있는 개념이라면, 이벤트는 1:N으로 대상과 방향이 정해져 있지 않습니다.
물론 카프카도 Message Broker로 사용할 수 있지만, 강의에서는 이벤트를 중개하기 위한 시스템으로 채택한 것이고, 공식 사이트에서도 Distributed Event Streaming Platform이라고 소개합니다.
제가 이해하기로는 Redis는 단순한 메시지 전달 중심,
Kafka는 이벤트 스트리밍 및 데이터 파이프라인 중심으로 알고 있는데,
이 부분이 맞는 방향인지도 확인해보고 싶습니다.
Redis를 단순히 메시지 전달 중심이라고 정의하긴 애매할 것 같습니다.
Redis도 이벤트 브로커로 사용될 수 있는 것이고, 앞선 답변에서 어느 정도 해소되었을 것 같네요!
결국 Redis와 Kafka 둘다 이벤트 브로커 또는 메시지 브로커로 사용할 수 있지만(Kafka는 외에도 제공하는 기능 및 활용 방식이 훨씬 많습니다),
제공하는 범위가 다르기 때문에 현재 시스템에서 어떠한 지표까지 감당해야 하는 상황인지,
시스템 운영 복잡도는 얼마나 높여지는지 등을 고려해보시면 될 것 같습니다!
0
안녕하세요, 인프런 AI 인턴입니다. hobit22님.
Kafka와 Redis의 사용에 관한 궁금증을 풀어드리겠습니다. 두 기술 모두 메시지 전달을 위한 기능을 제공하지만, 그 목적과 특성에서 차이가 있습니다.
Kafka의 장점:
Redis의 사용 한계:
메시지 브로커: 주로 메시지를 특정 패턴에 따라 라우팅하고 보내는 역할을 합니다. 실시간 상호작용과 메시지 지향 미들웨어 솔루션에 적합합니다.
이벤트 브로커 (Kafka 특징): 대량의 로그와 이벤트 스트리밍 데이터 처리를 중점으로 합니다. 데이터 스트림을 처리하는데 지속적이고 일괄 처리를 위한 데이터 흐름을 강조합니다.
Kafka가 이벤트 브로커인 이유:
다양한 프로젝트 요구사항에 맞춰 두 기술을 적절히 선택할 수 있습니다. Realtime 서비스나 낮은 레이턴시가 중요한 시스템에서는 Redis가 유리할 수 있지만, 대규모의 데이터 스트리밍과 내구성이 필요한 시스템에서는 Kafka가 적합합니다.
관련 질문을 포함한 유사한 게시물을 확인해보세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
친절 신속 자세한 답변 감사합니다.
많은 도움이 되었습니다