[카프카] Kafka의 분산 시스템

    카프카(Kafka)의 분산 시스템이라고 포스팅 주제를 적긴 했으나 해당 내용은 빅데이터를 어느 정도 알고 공부했던 사람이면 사실 본인들이 알고 있는 지식에서 별 차이가 없다는 것을 잘 알고 있을 것이다.

     

    카프카를 쓰는 이유가 빅데이터를 쓰던 사람이 카프카를 쓰는 것이 아닌 단일 시스템 혹은 분산이긴 하지만 빅데이터 플랫폼과 같이 flexible하고 scale out하지 않는 시스템에서 넘어온 케이스가 많을테니 말이다.

     

    일단 본 포스팅에서는 카프카의 분산 시스템의 장점을 3가지 꼽을려고 한다. 카프카의 장점일수도 있지만 이는 분산 시스템 기반의 수많은 빅데이터 플랫폼의 장점이기도 하니 어찌보면 빅데이터 분산 시스템의 장점으로 이해해도 다를 바 없을 것이다.

     

    높은 성능, 처리량(Throutput)

    카프카의 노드를 추가할 경우 성능은 노드의 수만큼 증가할 수 있다

     

    카프카의 단일 노드(카프카에서는 브로커라고 함)의 성능이 3000 TPS(Transaction per Second)라고 가정할 때 초당 4000 TPS 정도가 필요하다면 단일 노드로 운영을 할 수 없을 것이다. 이럴 경우 노드를 추가해야 하고, 노드를 1대 추가할 경우 6000 TPS, 2대 추가할 경우 9000 TPS의 성능이 증가하는 것처럼 처리량을 높일 수 있다.

     

    분산 시스템을 사용하기 위한 가장 큰 이유며, 이로 인해 서비스가 인기가 많아져서 TPS가 늘어나도 노드를 추가하는 방식 하나만으로 리스크 감소를 얻을 수 있다.

     

    안정성, Fault Tolerance

    노드의 문제가 발생할 경우 해당 노드의 역할을 나머지 노드들이 수행하게 된다

    카프카는 동일한 역할을 수행하는 노드들 중 일부 노드의 장애 발생 시 나머지 노드들이 장애 발생 노드 분까지 처리를 도맡게 된다. 장애는 언제 일어날지 모르고, 가장 큰 위협이기 때문에 안정성을 확보해야 하는 시스템일수록 노드를 더욱 많이 늘려서 장애 발생 시 위험을 대폭 감소시킬 수 있다.

     

    장애를 대비하기 위한 노드 증가는 여유분을 계산하는 것이 좋다. 예를 들어 한대가 3000 TPS를 처리하고, 평균 7000 TPS를 처리한다고 가정을 하면 3대가 아니라 4대 이상이 바람직 하다. 한대만 장애가 발생하여도 나머지 2대가 7000 TPS를 처리할 수 없기 때문에 연속적으로 서비스가 밀리며 결과적으로 모든 서비스의 장애로 이어지기 때문이다.

     

    쉬운 시스템 변경

    다른 빅데이터 플랫폼들도 그러하겠지만 카프카 역시 노드를 하나 추가하는 것이 매우 쉽다. 다만 노드를 추가한다고 자동으로 인식이 되는 것은 아니고, 엔진의 노드가 추가된 만큼 코드에 추가된 브로커 호스트를 입력해야 된다.

     

     

    댓글

    Designed by JB FACTORY