분산처리

Kafka를 사용하는 이유

aeongsseu 2023. 1. 9. 18:18

kafka의 탄생

kafka는 링크드인에서 근무하던 제이 크렙스(현 confluent ceo), 준 라오, 네하 나크헤데가 링크드인 서비스 내에서 발생하는 이슈들을 해결하기 위해 만들었습니다.

 

그럼 링크드인 내의 이슈들을 무엇이 있었을까요?

대표적으로 데이터 파이프라인의 확작성, 이기종 간의 호환성, 고성능 기반의 실시간 데이터처리에 대한 어려움이 있었습니다.

기존 링크드인은 데이터 파이프라인 처리를 위해 redis, rabbitMQ등 여러 애플리케이션을 사용했고 각각의 특징이 뚜렷하여 파편화가 심했습니다. 파편화는 같은 기능 애플리케이션을 만들어도 개발자가 각각에 호환되는 소프트웨어(redis, rabbitMQ가 이에 속하죠)를 만들게 했습니다. 이러한 파편화는 유지보수를 어렵게 했고 이는 비즈니스를 성장시키는데 걸림돌이 되었죠.

 

또한 kafka와 같은 middle ware가 없다면 송신자, 수신자 측에서 각각 장애처리를 해줘야 했을 것입니다.

카프카는 위와같은 문제를 해결하기 위해 데이터를 각 애플리케이션에서 처리하는 것이 아니라 카프카 하나에서 처리하도록 중앙집중화 한  것입니다.

kafka가 선택 받은 이유

kafka는 3가지 특징이 있습니다.

1. high throughput message capacity

2. scalabilty & fault tolerance

3. undeleted log

 

high troughput message capacity

직역하면 높은처리량 수용력 즉, 짧은 시간 내의 많은 양의 데이터를 consumer에게 전달할 수 있단 것입니다.

데이터 양이 많을 수록 파티션을 늘려 병렬처리를 할 수 있으므로 이를 통해 많은 데이터양에도 원활한 데이터 처리를 할 수 있습니다.

 

scalabilty & fault tolerance

kafka는 기존 중개인이 있다 하더라도 새로운 중개인을 추가하는 식의 scale out 수평 확장이 가능합니다.

이러한 중개인 중 몇 대가 죽더라도 안전하게 복제해 놓은 replica를 통해 빠른 복구가 가능합니다.

 

undeleted log

kafka는 다른 플랫폼과 달리 consumer가 데이터를 가져가더라도 토픽에 있는 데이터가 사라지지 않습니다.

이를 다른 플랫폼에서 구현하려면 복잡하겠지만, kafka는 consumer의 group id만 다르다면 같은 데이터를 여러 방법으로 처리할 수 있습니다.

 

그럼 kafka는 데이터 처리량이 많은 대기업에서만 사용해야 할까?

답은 "아니다"이다. 스타트업은 성장 속도가 빠르기 때문에 기존 kafka클러스터를 작은 규모(기본 3개의 중개인)로 구성했다가 이후 사업이 확장되어도 위에서 설명한 수평확장을 통해 원활하게 데이터를 처리할 수 있다.