윤개발

5분만에 Apache Kafka 알아보기 본문

백엔드/kafka

5분만에 Apache Kafka 알아보기

DEV_SJ 2021. 1. 28. 13:52

Apache Kafka를 사용하는 이유를 간단하게 알아봅시다.

1. 초기 시스템

처음의 시스템은 사진처럼 단순한 형태를 가지고 있습니다. 예를 들어 웹사이트에서 사용자의 동작을 분석하는 시스템을 생각해봅시다.

  • 데이터를 전송하는 시스템 ( 웹애플리케이션 )
  • 전송되는 데이터 ( 사용자의 페이지 이동, 동작 등의 데이터 )
  • 데이터를 받는 시스템 ( 데이터를 받아 처리하는 Spark 등 )

하지만 추후에 분석해야할 페이지가 늘어나고 더 다양한 분석 시스템이 도입되어 시스템의 규모가 커진다면 어떻게 될까요?

 

2. 대규모 시스템

 

 

다수의 시스템이 생기면 그림처럼 각 시스템의 복잡도가 증가합니다. 

4개의 소스시스템과 6개의 타켓 시스템이 모두 연결되어 있다고 가정하면 4*6=24 개의 통합과정이 필요합니다.

  • 시스템 통합과정 복잡도, 부하 증가
  • 프로토콜의 다양함 (tcp, http, rest, ftp, jdbc...)
  • 형식의 다양함(csv, json...)

또한 시스템이 변경되면 연결되어 있는 모든 시스템을 확인해야합니다. 

 

3. Kafka의 도입

Kafka를 사용한다면 어떻게 될까요?

이제 소스시스템은 카프카로 데이터를 전송하기만 하면 됩니다.

또한 타켓시스템은 카프카에서 데이터를 가져가기만 하면 됩니다. 훨씬 간단해졌습니다.

모든 데이터 스트림을 통해 이벤트, 로그, 분석 등 모든 종류의 원하는 것을 할 수 있습니다.

카프카는 아래와 같은 장점을 가지고 있습니다.

  • 분산되고 탄력적인 아키텍처
  • 수평적으로 확장되며 수백만 개의 메시지 처리
  • 한 시스템에서 다른 시스템으로의 데이터를 교환하는 대기시간이 10밀리초 미만

 

4. 사용 사례

Kafka는 다음과 같은 기능을 수행할 수 있습니다.

  • 메시징시스템
  • 활동 추적
  • 정보, 로그 수집
  • api 수집
  • 데이터베이스 부하 감소
  • 빅데이터 수집

넷플릭스는 사용자에게 실시간으로 추천을 위해 사용하고 있습니다.

우버는 사용자와 택시 데이터를 계산하고 예측하기 위해 사용하고 있습니다.

Kafka를 만든 링크드인은 스팸을 방지학 유저의 상호작용을 수집하고 다양한 용도로 사용하고 있습니다.

 

 

이처럼 Kafka는 데이터 운송 메커니즘으로 이용되며 빠르고 안전하게 처리할 수 있습니다.

데이터 이동에 이용되기 때문에 애플리케이션은 직접 작성해야합니다.

 

이후 포스팅에서는 Kafka의 기본 이론에대해 알아보고 설치 후 Java 코드로 애플리케이션을 작성해보겠습니다.

'백엔드 > kafka' 카테고리의 다른 글

Kafka의 Topic(토픽), Partitions(파티션)  (0) 2021.01.28
Comments