카프카 탄생 배경
미국의 대표적인 비즈니스 인맥 소셜네트워크 서비스인 링크드인 에서 처음 출발한 기술로서, 링크드인 사이트가 급속도로 성장하면서 발생하는 내부 여러 이슈들을 해결하기 위해 탄생하였다.
과거 링크드인 시스템 구성도
위의 아키텍쳐 처럼 엔드투엔드(End to End)연결 방식의 아키텍처는 많은 문제점이 있다.
첫번째로는 실시간 트랜잭션(OLTP) 처리와 비동기 처리가 동시에 이뤄지지만 통합된 전송 영역이 없으니 복잡도는 증가할 수 밖에 없다. 또한 문제가 발생했을때, 조치를 취하려면 여러 시스템에서 확인해야한다.
두번째로는 데이터 파이프라인 관리의 어려움이다. 실시간 트랜잭션 데이터 베이스, 아파치 하둡, 모니터링 시스템, 키-값 저장소 등 많은 데이터 시스템들이 있는데, 이 시스템에 저장된 동일한 데이터를 개발자나 개발 부서는 각기 다른 방법으로 파이프 라인을 만들고, 유지하게 되어 있다. 하지만 데이터 파이프라인들은 통합 데이터 분석을 위해 필연적으로 서로 연결되어야 한다면, 각 파이프라인별로 데이터 포맷과 처리하는 방법들이 완전히 달라서 데이터 파이프라인은 확장하기 어려웠고, 조정하고 운영하는 것은 엄청난 노력이 필요하다.
이러한 문제점을 타파하기위해 링크드인 개발자들은 아래와같은 목표로 새로운 시스템을 직접 만들기 시작하였다.
-
프로듀서와 컨슈머의 분리
-
메시징 시스템과 같이 영구 메시지 데이터를 여러 컨슈머에게 허용
-
높은 처리량을 위한 메시지 최적화
-
데이터가 증가함에 따라 스케일아웃이 가능한 시스템
카프카를 이용한 링크드인의 데이터 처리 시스템
사내에서 발생하는 모든 이벤트/데이터의 흐름을중앙에서 관리하는 카프카를 적용한 결과, 서비스 아키텍처가 예전과 비교할 수 없을 정도로 매우 깔끔해졌다. 개발자 입장에서도 이전에는 데이터 스토어 백엔드 관리와 백엔드에 따른 포맷, 별도의 앱 개발을 히야 했는데 이젠 카프카에만 데이터를 전달하면 나머지는 필요한 곳 또는 다른 서비스들이 각자 가져갈 수 있어서 자신들 본연의 업무에만 집중할 수 있게 되었다.
2. 카프카의 지향점
아래 그림은 개발 당시 목표로 삼았던 카프카 지향점을 그림으로 나타낸 것이다.
그림에서 알 수 있듯이 카프카를 메시지 전달의 중앙 플랫폼으로 두고 기업에서 필요한 모든 데이터 시스템(오라클과 같은 실시간 트랜잭션, NoSQL류의 키-값 스토어, 실시간 분석 시스템, 스트림 처리 시스템, 하둡, 데이터 웨어하우스)뿐만 아리나 마이크로서비스, 사스(SaaS)서비스 등과 연결된 파이프라인을 만드는 것을 목표로 두고 개발되었다. 이같은 철학은 카프카 로고 이미지에 그대로 반영되어 있다.
2010년 카프카의 도입과 함께 링크드인은 놀랄만한 규모로 성장했고, 오늘날 약 1조개 이상의 메시지를 하루에 처리하고 있다. 2011년초 카프카는 오픈소스로 세상에 공개되어 2012년 10월 23일 아파치 인큐베이터에서 나와 정식 아파치 오픈소스로 등록되었고 2014년 11월에는 링크드인에서 개선 프로젝트를 진행한 몇몇 엔지니어들이 컨플루언트라는 회사를 창립해 지금까지 계속 카프카를 발전시키고 있다.
참고 문헌 : 카프카, 데이터 플랫폼의 최강자 실시간 비동기 스트리밍 솔루션 Kafka의 기본부터 확장 응용까지
'Programming > Kafka' 카테고리의 다른 글
[kafka] 카프카의 동작 방식과 원리 (0) | 2020.04.09 |
---|---|
[kafka] window에서 사용시 java.nio.file.FileSystemException (0) | 2020.04.03 |
[kafka] 카프카란 ? 비동기 처리 메세지 큐의 한 종류 (0) | 2020.04.02 |