https://velog.io/@hyeondev/Apache-Kafka-의-기본-아키텍쳐
아파치 카프카는 분산 메시지 스트리밍 플랫폼이며, 데이터 파이프 라인을 구성할 때 많이 사용된다. 카프카는 대용량 실시간 로그처리에 특화되어 개발된 오픈소스인 만큼, 분산 및 복제 구성과 더불어 Fault-Tolerant 한 안정적인 아키텍처와 빠른 성능으로 데이터를 처리할 수 있다.
서비스에서 사용하고 있던 리소스 공간은 서비스의 로직과는 별개로, 상황에 따라 필요가 없어질 수도 있고 확장이 필요할 수 있다. 또한 최근 증장하고 있는 다양한 서비 디바이스 특성에 따라 비동기 메시징 프레임워크를 기반으로 통신할 필요가 있을 수 있다. (예를 들면 디바이스가 가진 네트워크 커텍션이 탄탄하지 못하기 때문에 네트워크 지연 가능성을 고려해야하는 경우가 있다)
결국 이 같은 필요성은 느슨한 결합으로 구성된 컴퓨터 아키텍처를 선호하게끔 하였다. 이를 기반으로 등장한 비동기 메시징 프레임워크 중 하나가 아파치 카프카이다.
사실 아파치 카프카는 링크드인에서, 자사에세 발생하는 이슈를 해결하고자 개발된 기술이다. 링크드인에서 사용하던 기존 아키텍처에서는
는 문제점이 있었다. 때문에 특정 부분을 수정해야할 때도 연관된 부분을 모조리 찾아 수정해야할 수도 있었다.
이 문제점을 해결하기 위해, 링크드인에서는 Kafka 라는 새로운 시스템을 구축하였으며, 다음 4가지 컨셉을 목표로 하였다.
Apache Kafka 가 개발된 배경을 간단하게 설명하였는데, 이런 배경과 목적을 갖고 탄생한 카프카는 아키텍쳐의 관점에서 몇 가지 특징을 가지고 있다. 먼저 카프카는 본래 메시지 스트리밍 플랫폼이기 때문에 레코드 스트림이 발생하면 → 처리한다 는 컨셉을 지닌다. 따라서 실시간 애플리케이션 구축에 유용한데, 이 스트리밍을 Consuming / Producing 프로세스 를 통해 실현시키도록 하였다. 한마디로, publish / subscribe 패턴을 지향하는 아키텍처로 개발되었는데, 이제 이 아키텍처와 그 구성 요소들에 대해 자세히 다뤄본다.