본문 바로가기

빅데이터/Kafka

Airbnb에서 Kafka의 활용

아래 포스트는 airbnb의 kafka meetup 발표내용을 토대로 정리하였습니다.

youtube url : https://www.youtube.com/watch?v=-PmKeOpfE54

Kafka at Airbnb

airbnb kafka scale

AWS에서 0.11 버젼의 kafka를 사용하고 있으며 10개 이상의 cluster과 500개 이상의 broker로 구성되어 있다. 3000개 이상의 topic들이 사용되어지고 있으며 모든 데이터의 양의 PB단위 이상이다. 아직 0.11버전이지만 다음달(2019년 11월)에는 그 이상의 버젼을 사용할 것이라고 한다.

kafka architecture in airbnb

위 데이터 파이프라인 아키텍쳐에서 Rest Proxy는 여러 language로 작성된 application에서 나온 데이터를 kafka로 prodcue하기 위한 역할을 하는데 Ruby로 작성되었다.

 

Data를 최종적재하기 위한 용도로 Spark streaming과 apache Flink를 주로 사용하고 있으며 그 외 많은 수의 consumer들이 각각의 용도에 맞게 consume하고 있다.

kafka usecase in airbnb

SpinalTap - Change data capture service

Capturing Data Evolution in a Service-Oriented Architecture

Airbnb에서 데이터의 변화를 감지하기 위해 아래와 같은 6가지의 조건을 만족하는 시스템이 필요했다.

 

- Loss-Less : at least once(적어도 한번이상) 만족

- Scalable : 확장가능하도록

- Performant : low latency, high throughput

- Consistent : Ordering(순서보장)

- Fault Tolerant : Automatic failover, HA구성

- Extensible : 데이터 source input/output이 확장가능하도록

 

위 6가지를 만족하는 시스템을 아래와 같이 workflow로 구성하였다.

Data store(db 등)로 부터 데이터 변화를 확인하면 SpinalTap으로 가게되고 데이터의 변화를 일부 파싱하여 변경, kakfa로 produce하는 형태를 띈다. 

SpinalTap 내부 알고리즘

SpinalTap에서는 Event에 대해 Client service에서 처리가능하도록 filtering, Mapping처리를 통해 kafka로 data를 변환하여 produce한다.