카프카는 고성능 데이터 파이프라인, 스트리밍 분석 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 오픈 소스 분산 이벤트 스트리밍 플랫폼이다.
이벤트 스트리밍은 인체의 중추 신경계에 해당하는 디지털 처리 방식이다.
는 비즈니스가 점점 더 소프트웨어화, 자동화되는 'always-on' 세상을 위한 기술 기반이다.
즉, 대용량(대규모) 메시지 데이터를 빠르게 처리할 수 있는 메시징 관리 플랫폼이다.
카프카의 이벤트 스트리밍은 Fortune 100대 기업의 60% 이상을 포함하여 수많은 산업 및 조직의 다양한 사용 사례 에 적용된다.
MSA는 Micro Service Architecture 의 줄임말으로, 말 뜻에서 직관적으로 알수있듯이, 기존의 서비스들을 잘게 쪼개서 서비스를 운영하는 기법이다.
자세한 사항은 마이크로 서비스 아키텍처(MSA)
왜 갑자기 MSA를 언급하냐면 많은 서비스를 잘게 쪼개면 다양한 이슈들이 발생한다. 대표적으로는 아래의 이슈들이 있다.
서비스의 규모가 거대해짐에 따라서 위의 그림과 같이 데이터 파이프라인 의 양상이 매우 복잡해지는 것을 확인할 수 있다.
이를 해결하기 위해서 링크드인의 데이터팀에서는 어떻게든 데이터 파이프라인의 파편화 현상을 개선하려고 하였으나, 기존의 메시징 플랫폼 등으로는 도저히 개선이 되지 않았다.
결국에 링크드인 데이터팀은 기존의 메시징 플랫폼을 이용하여 데이터 파이프라인의 파편화 현상을 개선하는 것이 아닌, 차라리 새로운 시스템을 개발하여 해결을 시도했다. 이 과정에서 나오게된 결과물이 아파치 카프카(Apache kafka) 이다.
Kafka는 세 가지 주요 기능을 결합하여 end-to-end 이벤트 스트리밍을 구현할 수 있다.
그리고 이 모든 기능은 분산되고, 확장성이 뛰어나고 탄력적이며 내결함성이 있으며 안전한 방식으로 제공된다. 카프카는 베이메탈 하드웨어 가상 머신, 컨테이너, 온프레미스 및 클라우드에 배포할 수 있다. Kafka 환경을 자가 관리하거나 다양한 공급업체에서 제공하는 완전 관리형 서비스를 사용할 수 있다.
히스토리와 아래 그림으로 명확히 이해할 수 있다.
카프카가 개발되기 전 링크드인의 데이터 처리 시스템
카프카를 이용한 링크드인의 데이터 처리 시스템
References (참고 자료)
- https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%B9%B4%ED%94%84%EC%B9%B4
- https://www.redhat.com/ko/topics/integration/what-is-apache-kafka
- https://ifuwanna.tistory.com/487
- https://freedeveloper.tistory.com/396
- https://velog.io/@seungyeon/%EC%B9%B4%ED%94%84%EC%B9%B4-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%99%9C-%ED%95%84%EC%9A%94%ED%95%A0%EA%B9%8C
- https://velog.io/@18k7102dy/Apache-Kafka-%EC%95%84%ED%8C%8C%EC%B9%98-%EC%B9%B4%ED%94%84%EC%B9%B4%EB%9E%80