-
[Apache Kafka]Kafka가 만들어진 이유를 알아보자(개발 이유, 쓰는 이유 등)데이터 엔지니어링/Kafka 2022. 7. 11. 21:33반응형
Kafka가 만들어진 이유를 알기전에 먼저 Real-time Streaming에 대해 알고 넘어가야한다.
위에 그림은 현대의 데이터 인프라 아키텍쳐를 종합해놓은 그림이다. 현대에는 수많은 데이터가 싸이게 되고 이 데이터를 언제, 어떻게 얼마나 빨리 데이터를 처리하고, 가져오고 활용하는지에 대한 생각을 많이 하고 있다. 그리고 데이터의 처리가 바로 신뢰성으로 직결되기 때문에 실시간 처리의 Event Streaming(realtime-streaming)에 대한 수요도 급증하고 있다.
Event Streaming이란?
Event Streaming이란, 실시간으로 많은 형태의 Event(클릭, 조회, 검색, 메세지 보내기 등등)를 처리하는 것을 말한다. 예전에는 이런 형태의 실시간 처리가 불가능 하였지만, 지금은 이런 실시간 처리의 t성능이 개선되어 가능할 뿐더러 중요도가 높아지고 있다.
Streaming의 발전
예전의 data를 문서형태의 것만 보면 되었다. 그래서 data의 처리는 Data Warehouse에 엄격하게 정의 하여 관리 하고 뽑아서 사용하는 방식으로 진행 되었다. 우리가 익히 아는 RDB가 이에 해당한다고 봐도 된다. 하지만 점점 엄격한 것보다는 동적인 것의 수요가 증가하면서 hadoop같은 Batch프로그램이 등장하기 시작했다. 하지만, hadoop도 문제가 조금 있었고 i/o 문제 때문에 실시간은 처리 하지 못한다는 것이었다. 그 이후에 문제점을 개선하기 위해 spark가 나왔지만, spark도 배치프로그램이여서 거의 실시간 처리는 가능하지만, 완전한 형태의 실시간으로 처리하는 내용은 다루지 못했다. 그래서 현재로 와서는 Streaming의 기술이 만들어져 도입하게 되었는데 이게 바로 Kafka이다.
Kafka란?
- 분산 스트리밍 플랫폼
- Source시스템은 Kafka로 메시지를 보내고
- Destination시스템은 Kafka로부터 메시지를 받는다.
- 확장성이 있고, 장애 허용을 하며, 선능이 좋다
Kafka를 사용하면 좋은점
- 시스템간 의존성을 간접적으로 만든다.
- 확장성: 새시스템을 더할때마다 복잡도가 선형적으로 올라간다.
- Kafka를 이용해 통신 프로토콜을 통합하기 쉽다.
Kafka를 사용하는 기업들
- Netflix : 실시간 추천 시스템 및 동영상 스트리밍 관리
- Expedia : 이벤트 드리븐 아키텍쳐
- Uber : 실시간 가격 조정, 및 최단거리 반환
Kafka를 사용하는 이유
전통적인 Web app 아키텍쳐은 아래와 같다. 옛날에는 하나의 시스템만 가지고 있었으면 됬지만, 여러개의 형태로 시스템이 늘어나고, 시스템간 통신이 중요해지면서 데이터의 연결성과 처리성의 난이도가 높아지게 되었다.
아래의 그림을 보면 6개의 시스템이 연결되어야한다고 하면 이렇게 데이터의 처리 연결성의 문제가 발생하게 되고 에러와 신뢰성을 잃어버리는 현상이 발생할 것이다. 이런 복잡성을 처리하기 위해 Kafka가 만들어지게 되었다.
아래와 같이 분산되어있는 시스템을 통합해 주어 데이터의 연결성을 극대화 하게 만들어주는 것이 바로 kafka이다. 처리 성능도 뛰어나서 실시간 처리도 될뿐더러 연결성도 좋아 성능 및 의존성을 극대화 하여 사용할 수 있게 해주기 때문에 kafka는 현대의 프로그램에서 꼭 사용해야하는 툴로 성장 했다.
반응형'데이터 엔지니어링 > Kafka' 카테고리의 다른 글