SW/클라우드 서비스 아키텍처

Apache Druid: 고속 분석 애플리케이션을 위한 1000+ QPS 처리 비법 공개

얇은생각 2024. 5. 27. 19:30
반응형

데이터 분석의 중요성이 날로 커지는 오늘날, 대용량 데이터를 빠르고 효율적으로 처리하는 능력은 많은 기업들에게 필수적인 요소가 되었습니다. 특히 실시간으로 다량의 쿼리를 처리해야 하는 애플리케이션에서는 높은 QPS(Queries Per Second) 처리 능력이 요구됩니다. 이러한 요구를 충족시키기 위해 설계된 오픈 소스 실시간 분석 데이터베이스, Apache Druid에 대해 들어보셨나요? 본 블로그에서는 Apache Druid의 아키텍처와 그 독특한 설계 요소들을 살펴보며, 어떻게 Druid가 고속의 분석 애플리케이션을 지원하는지에 대해 알아보겠습니다.

 

Apache Druid: 고속 분석 애플리케이션을 위한 1000+ QPS 처리 비법 공개

 

Apache Druid의 고속 처리 비밀

1. 최적화된 데이터 형식 고속

QPS를 달성하기 위해 데이터베이스는 두 가지를 잘 수행해야 합니다: 각각의 쿼리를 빠르게 처리하고 동시에 많은 쿼리를 처리하는 것입니다. Druid CPU 효율성에 중점을 둔 아키텍처를 통해 복잡한 쿼리를 수 초 내에 처리할 수 있도록 설계되었습니다. Druid의 데이터 형식은 이러한 CPU 효율성을 극대화하는데, 시간 시리즈 데이터를 최적화하여 타임스탬프 컬럼을 주요 차원으로 사용합니다. 이를 통해 특정 시간 간격이나 창을 기반으로 데이터를 효율적으로 필터링하고 쿼리할 수 있습니다.

 

2. Scatter/Gather 기법과 사전 로드된 데이터

Druid의 상호작용 쿼리 엔진의 핵심에는 Scatter/Gather 기법이 있습니다. 이 기법은 쿼리를 여러 컴퓨팅 노드에 분산시키고, 각 노드는 자신의 로컬 데이터 부분에서 계산을 수행한 후 결과를 모아서 최종 결과를 제공합니다. Druid는 또한 쿼리 시간이 아닌 사전에 데이터를 적절한 데이터 노드에 로드하여 쿼리 속도를 더욱 향상시킵니다.

 

3. 멀티스레딩 및 병렬 처리

현대의 많은 데이터베이스는 동시 작업 처리를 위해 멀티스레딩을 사용합니다. Druid는 멀티스레딩을 광범위하게 활용하여 높은 성능을 유지합니다. 인덱싱, 세그먼트 처리, 쿼리 실행 등이 모두 여러 스레드에서 병렬로 수행되어 CPU 자원을 효율적으로 활용하고 쿼리 처리 속도를 높입니다.

 

4. 세그먼트 단위의 세밀한 데이터 복제

Druid는 데이터를 세그먼트 단위로 저장하고, 세그먼트 단위로 데이터를 복제합니다. 이는 높은 동시성과 고가용성을 보장합니다. 같은 세그먼트가 여러 노드에서 동시에 처리될 수 있어 쿼리 성능과 동시 처리 능력을 향상시킵니다.

 

사례 연구

Target Confluent는 각각 Druid를 활용하여 하루에 400만 건 이상의 쿼리를 처리하고, 초당 350 QPS 500만 건의 이벤트를 실시간으로 처리하는 애플리케이션을 운영하고 있습니다. 이러한 성공 사례는 Druid의 강력한 성능을 증명합니다.

 

Apache Druid의 특화된 아키텍처

Druid의 분산 아키텍처는 모든 처리를 병렬로 수행하며, 이는 데이터 수집, 인덱싱, 세그먼트 처리, 쿼리 실행 모두를 포함합니다. Druid는 세그먼트 단위의 복제를 통해 세그먼트가 여러 노드에서 동시에 처리될 수 있도록 하여, 쿼리 성능과 동시 처리 능력을 향상시킵니다.

 

세밀한 스레드 풀 관리

Druid는 스레드 풀을 사용하여 작업의 실행을 관리하고 제어합니다. 이는 스레드 재사용을 통해 스레드 생성 및 소멸의 오버헤드를 최소화하고, 동시성과 워크로드 병렬화를 통해 성능을 향상시킵니다. 또한, 리소스 할당 및 격리를 통해 쿼리 처리, 데이터 수집, 백그라운드 유지보수 등의 작업에 대해 세밀한 제어를 가능하게 합니다.

 

동적 스케일링

Druid의 스레딩 모델은 워크로드 요구에 따라 스레드 풀의 동적 스케일링을 지원합니다. 이는 현재 워크로드에 맞춰 스레드 수를 동적으로 조정하여 효율적인 리소스 활용과 확장성을 가능하게 합니다.

실제 적용 사례 최근 Imply 5억 명 이상의 사용자를 보유한 회사에서 Apache Druid를 활용하여 POC를 수행했습니다. 그 결과, Druid는 초당 1400 QPS를 달성하며 기대치를 훨씬 초과하는 성과를 보였습니다.

 

 

결론

Apache Druid는 고속 QPS가 필요한 분석 애플리케이션을 위한 최고의 선택입니다. 수천 개의 회사가 실시간 분석 및 데이터 탐색을 위해 Druid를 선택하고 있으며, 이는 Druid의 강력한 성능과 효율성을 입증합니다. 특히 Druid의 최적화된 데이터 형식, Scatter/Gather 기법, 광범위한 멀티스레딩 및 병렬 처리, 세밀한 데이터 복제 기능은 고속 QPS 처리를 가능하게 합니다.

최근 Imply POC 결과는 Druid의 뛰어난 성능을 다시 한 번 입증했습니다. 500만 명의 사용자를 대상으로 한 복잡한 애플리케이션에서 초당 1400 QPS를 달성한 것은 Druid가 고성능 분석 애플리케이션을 구축하려는 기업들에게 매우 유용한 도구임을 보여줍니다.

Apache Druid를 사용하면 대규모 데이터와 복잡한 쿼리에도 불구하고 높은 성능과 신뢰성을 유지할 수 있습니다. 따라서 실시간 분석 애플리케이션을 개발 중이거나 고속 QPS 처리가 필요한 경우, Apache Druid는 최상의 선택이 될 것입니다.

반응형