kafka

카프카 공부노트/개요편

25G 2023. 10. 19. 17:50

팀장님께서 카프카스터디가 있는데 함께 해 보는것이 어떠냐고 하셔서 신입에 애기개발자인 저는 고민하지도 않고 덥석 하겠다고 해버렸습니다. 신입의 패기와 욕심은 이런것을까요,,? ㅎㅎ

MSA,EDA 기반 설계에서 카프카는 핵심 시스템으로 자리잡았다고 합니다.

  • MSA?
    • 마이크로서비스 아키텍처에 대한 정확한 정의는 없다. 하지만 마이크로서비스란 작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크라고 할 수 있다. 마이크로서비스는 완전히 독립적으로 배포가 가능하고, 다른 기술 스택(개발 언어, 데이터베이스 등)이 사용 가능한 단일 사업 영역에 초점을 둔다.
  • EDA?
    수집한 데이터가 들어왔을 때, 이를 다양한 각도에서 관찰하고 이해하는 과정입니다. 한마디로 데이터를 분석하기 전에 그래프나 통계적인 방법으로 자료를 직관적으로 바라보는 과정입니다.
    참고 블로그
  • https://eda-ai-lab.tistory.com/13

아파치 카프카 개요

카프카는 과거 링크드인에서 데이터처리를 담당하던 사람들에 의해 탄생했습니다. 기존에 잘 돌아가던 시스템이 트레픽의 증가로 인해서 제대로 작동을 안하기 시작하고 데이터가 꼬이다보니 오픈소스의 활용에도 한계가 와서 직접만들기 시작한것이 카프카라고 합니다. 성공적으로 개발에 성공해 하루 1조개 이상의 메시지를 처리할 수 있을 정도가 됐습니다. 그이후 카프카는 아파치 오픈소스로도 공개되어 인기가 나날이 높아져갔습니다.
카프카가 인기가 있었던 이유는 기업에서의 데이터 처리의 복잡성 해결과 실시간 처리에 대한 해결방안이 필요했기때문.

  • 빅데이터 표준화와 실시간 처리에대해 고민하는 개발자.
  • 효율적으로 데이터를 수집,처리 분석하기를 원하는 개발자
    라면 카프카도입을 고민해 보는게 좋을 것 같습니다.

아파치 카프카와 컨플루언트 카프카

이 둘의 차이점은 자동차에 비유하자면 아파치카프카는 엔진이고 컨플루언트 카프카는 내비게이션, 조향장치,등 모두 탑재된 완성된 자동차라고 할 수 있습니다.

기업들의 도입배경 .feat(잘란도)

  • 잘란도는 한국으로 치면 무신사같은 쇼핑몰 브렌드 입니다. 잘란도의 규모가 커지고 사업이 다각화 되면서 내부적으로 데이터에 대한 온갖 요구사항이 불거지자 데이터 변화가 스트림으로 컨슈머 측에 전달되는 이벤트트리븐 시스템으로 전환을 결정 했지만 이벤트 드리븐시스템은 인바운드 데이터와 아웃바운드 데이터가 일치해야 데이터가 유효해 지는데 그에따른 데이터 파이프라인이 추가됨에 따라 데이터 검증에 대한 피로도 역시 더욱 높아지기만 했기때문입니다.
    • 여러네트워크를이용하는환경에서모든데이터변경에대한올바른전달보장문제
    • 동일한 데이터를 동시에 수정하면서 정확하게 순서를 보장해야 하는 문제,그리고 수 정된 이벤트들을 정확한 순서대로 아웃바운드 전송하는 문제
    • 다양한 클라이언트들의 요구사항을 효율적으로 지원하기 어려운 문제
    • 빠른 전송을 위한 클라이언트 또는 대량의 배치 전송을 위한 클라이언트를 지원하기
    어려운 문제
    다음과 같은 문제를 마주하며 비동기 방식의 스트리밍플랫폼인 카프카를 선택했습니다.
  • 빠른 데이터 수집이가능한 높은 처리량
  • 순서 보장
    • 이벤트 처리 순서가 보장되면서, 엔티티 간의 유효성 검사나 동시 수정같은 무수한 복잡성이 제거돼서 구조가 간결해 졌습니다.
  • 적어도 한 번 전송방식
    • 멱등성이란 동일한 작업을 여러번 수행 하더라도 결과가 달라지지 않는것을 의미하는데 데이터를 재전송 하더라도 데이터의 변화가 일어나지 않습니다. 이렇게 돼면 누락없는 재전송이 가능하므로 메시지 손실에 대한 걱정이 사라집니다. 또한 백엔드에서 중복메시지처리가 허용된다면 복잡한 트렌잭션 처리 또한 필요하지 않게 됩니다.
  • 자연스러운 백프레셔 핸들링
    • 카프카의 클라이언트는 풀 방식으로 동작합니다. 즉 자기 자신의 속도로 데이터를 처리 할 수있다는 점입니다.
  • 강력한 파티셔닝
    • 논리적으로 토픽을 여러 개로 나눌 수 있습니다. 각파티션들을 다른 파티션들과 관계없이 처리 할 수 있으므로 효과적인 수평확장이 가능해 졌습니다.
  • 그외
    • 로그 컴팩션 기능을 통해 스냅샷 역할이 가능.
    • 완벽하게 분리된 비동기식 방식을 사용해 app의 병목현상을 정확하게 파악 가능