Part.1 Apache Druid란
Part.2 Druid Operator: 드루이드 오퍼레이터 도입으로 드루이드 설치부터 관리까지의 과정 개선
Part.3 Druid Tuning: 제한된 자원속에서 카프카 스트림으로부터 데이터 수집하는 기능(성능)의 최적화
Part.4 Druid Tiering: 데이터가 조회되는 빈도 기준으로 데이터를 구분
Part.5 Druid without Middle Manager (MM less): k8s 리소스(파드)를 사용한 드루이드 태스크 관리 개선
드루이드 티어링 시스템의 개요
데이터 티어링은 데이터의 접근 빈도에 따라 데이터를 다양한 스토리지 계층에 할당하는 방법입니다. 접근 빈도가 높은 데이터는 ‘hot’ 티어, 접근 빈도가 낮은 데이터는 ‘cold’ 티어라 불리는 스토리지에 유지합니다.
Druid의 티어링은 Broker, Historical에서 가능하고, 주로 Historical 서비스에서 이루어지면 데이터의 접근 빈도에 따라 분류합니다.
Druid는 데이터 소스별로 세그먼트를 관리하기 때문에 데이터 소스별 티어링 설정도 가능합니다. 또한 broker 티어링을 사용할 경우 라우터에서 특정 broker로 쿼리를 라우팅 하는 쿼리 최적화도 가능합니다.
1. Druid 티어링 방법
Druid에서 티어링을 적용하는 방법을 알아보겠습니다.
먼저 데이터소스 별로 접근 빈도가 높은 세그먼트를 기준으로 티어를 구분합니다. 접근 빈도가 높은 세그먼트는 ‘hot’ 티어, 그 외의 세그먼트는 ‘cold’ 티어가 되도록 설정할 수 있습니다.
다음은 구분된 티어 기준으로 설정을 변경합니다. 변경이 필요한 부분은 Historical 설정 파일, 세그먼트 load rule 두 가지 입니다.
먼저 Historical 설정 파일입니다. 설정 파일에서는 단순히 Historical 서비스 설정에서 사용할 티어를 설정합니다.
이렇게 설정된 Historical 서비스는 설정된 티어로 실행됩니다.
다음은 load rule입니다.입니다 load rule은 UI를 이용하거나 JSON 설정으로 변경할 수 있습니다. 설정을 위해 먼저 UI의 데이터 소스 탭에서 티어를 지정할 데이터 소스의 “Edit retention rules”를 클릭합니다.

먼저 JSON 설정입니다.
여기서 신경 써야 할 부분은 'type', 'tieredReplicants', 'period'입니다. 'type'에 따라 'tieredReplicants'에 설정한 티어에 저장할 데이터의 시간 범위를 'period'에 작성합니다.
예를 들어, 수집 시간 ~ 과거 12 시간의 데이터는 'hot' 티어, 과거 12시간 ~ 과거 72 시간의 데이터는 'cold' 티어에 저장한다면 다음처럼 설정할 수 있습니다.
마지막의 "type": "dropForever"은 'hot', 'cold' 티어에 저장하는 시간 범위 밖의 데이터에 대한 처리입니다.
2. UI에서 변경하는 방법
UI에서의 설정은 JSON에서 했던 것과 같습니다. 한 가지 주의할 점은 정의된 rule을 위에서부터 아래로 내려가면서 일치하는 rule이 있을 경우 해당 rule을 적용하기 때문에, 시간상 앞에 있는 rule이 위에 와야 합니다.

마치며
티어별로 데이터를 분류함으로써 접근 빈도가 높은 데이터는 빠른 응답을 위해 'hot' 티어에, 반면 접근 빈도가 낮은 오래된 데이터는 비용 효율적인 'cold' 티어에 저장함으로써 전체 시스템의 성능과 운영 비용을 최적화할 수 있습니다.
함께 보면 좋은 아티클
