[Kafka] 카프카의 기본 개념과 구조

DEINGVELOP·2022년 10월 12일
0

Apache Kafka

목록 보기
2/6

* 이 글은 인프런 - [데브원영] 아파치 카프카 for beginners (무료) 강의를 기반으로 작성되었습니다.

탄생 배경

어떤 프로젝트에 있어, 개발 초기에는 데이터를 주고받는 데에 있어 Source Applicatino - Target Application으로 단방향으로만 이루어져도 무리가 없다.

그러나 프로그램이 커지면 이러한 데이터 전송 라인이 많아지며 복잡해지는데, 이렇게 되면 배포, 장애에 대한 대응 측면에서 어려움이 따르게 된다.

또, 데이터 전송시 프로토콜 포맷의 파편화가 심각해지게 된다. 이는 추후 데이터의 포맷 내부변경 사항이 있을 경우, 유지 보수가 매우 어려워진다는 문제사항이 따른다.

Apache Kafka는 이러한 복잡함을 해결하기 위해 링크드인에서 내부적으로 개발한 플랫폼으로, 현재는 오픈소스로 제공하고 있다.



Apache Kafka

위에서도 설명했듯, Source Application과 Target Application의 coupling을 약화시키기 위해 나온 플랫폼이다.

  • Source Application : Kafka에 데이터를 전송

    • source : 클릭 로그, 결제 로그 ..
    • source 자료형은 json, tsv, avro... 등 거의 제한이 없음
  • Target Application : Kafka에서 데이터를 가져옴

    • target : 로그 적재, 로그 처리 ..



Kafka의 기본 구조

Topic

카프카는 각종 데이터를 담는 토픽이라는 개념이 있는데, 이를 쉽게 말하면 queue라고 보면 된다.


Producer, Consumer

queue에 데이터를 넣는 역할은 producer가 하고, queue에서 데이터를 가져가는 것은 consumer가 한다.

프로듀서와 컨슈머는 라이브러리로 되어 있어, 어플리케이션에서 구현 가능하다.



Kafka의 특징

이렇듯 카프카는 아주 유연한 큐 역할을 한다.

  • 고가용성 (fault tolerant)

    • 서버가 갑자기 이슈가 생기거나, 갑작스럽게 랙(전원)이 내려간다거나 하는 상황에서도 데이터를 손실 없이 복구할 수 있다.
  • 낮은 지연

  • 높은 처리량

👉🏻 따라서, Kafka를 활용하면 아주 효과적으로 대용량 데이터를 처리할 수 있다.



Kafka의 활용

그렇기 때문에 빅데이터 부분에서는 카프카를 안 쓰는 곳이 없다고 할 정도이며, IT 기업들 (sk, 삼성, 카카오, 네이버 등) 역시 카프카를 내부에 쓰고 있다.

자세한 사항은 각 사의 엔지니어 블로그를 보면 자세히 나와있다.

0개의 댓글