Kafka 특징

Log·2022년 10월 19일
0

Kafka

목록 보기
3/9
post-thumbnail

Kafka가 데이터 파이프라인으로 적합한 이유는 아래와 같다.

높은 처리량
프로듀서가 브로커에게 데이터를 보낼 때, 컨슈머가 브로커에게 데이터를 받을 때 모두 배치형식으로 이루어진다.
대량의 데이터를 송수신할 때 네트워크 비용은 무시할 수 없는 규모가 되며, 동일한 양의 데이터를 보낼 때 통신횟수를 줄여 동일 시간 내에 더 많은 데이터를 전송할 수 있다.
많은 양의 데이터를 묶음 단위인 배치로 처리할 수 있기 때문에 대용량의 실시간 로그 데이터를 처리하는 데에 적합하다.
또한, 파티션 단위를 통해 동일한 목적의 데이터를 여러 파티션에 분배하고 데이터를 병렬처리 가능하다. 컨슈머의 개수를 늘려서 동일 시간당 데이터 처리량을 늘릴 수 있다.

확장성
카프카는 가변적인 상황에서 안정적으로 확장 가능하도록 설계가 되어있다. 카프카 클러스터는 데이터가 작을 경우 scale-in으로 브로커의 수를 줄이고, 데이터가 많아지면 scale-out으로 브로커의 개수를 자연스럽게 늘린다.
카프카의 스케일 인/아웃은 무중단 운영을 지원하여 계속해서 데이터를 처리해야 하는 기업에서도 사용 가능하다.

영속성
카프카의 경우 다른 메시지 플랫폼(e.g. redis)와 달리 전송받은 데이터를 파일 시스템에 저장한다. 페이지 캐시 메모리 영역을 사용하여 한번 읽은 파일 내용은 메모리에 저장시켰다가 다시 사용하는 방식이기 때문에 데이터를 저장, 전송하여도 처리량이 높다. 심지어 장애 발생으로 인해 급작스럽게 종료되더라도 프로세스를 재시작하여 안전하게 데이터를 다시 처리할 수 있다.

영속성 : 데이터를 생성한 프로그램이 종료되더라도 사라지지 않은 데이터의 특성

고가용성
3개 이상의 서버들로 운영되는 카프카 클러스터는 서버 장애가 발생하여도 무중단으로 안전하고 지속적으로 데이터를 처리할 수 있다.
클러스터로 이루어진 카프카는 데이터의 복제를 통해 프로듀서로 받은 데이터를 1대의 브로커에만 저장하는 것이 아닌 다른 브로커에도 저장을 한다. 이로 인해 한 브로커에 장애가 나더라도 복제된 데이터가 다른 브로커에 저장되어 있어 지속적으로 데이터 처리가 가능하다.

브로커는 3대 이상으로 구성해야 하는 것이 좋다. 1대는 서비스 장애가 발생하면 서비스의 장애로 이어지므로 테스트에서만 진행하는 것이 좋으며, 2대의 경우 데이터 복제되는 시간 차이로 일부 데이터 유실 가능성이 있다.

요약

  • Kafka는 아래와 같은 이유 때문에 대용량 데이터 파이프라인을 안전하고 확장성 높게 운영할 수 있도록 설계되었다.
    • 높은 처리량
    • 확장성
    • 영속성
    • 고가용성
profile
열심히 정리하는 습관 기르기..

0개의 댓글