In-depth: ClickHouse vs Redshift

sam·2024년 8월 13일
0
post-thumbnail

이 글은 ClickHouse와 Amazon Redshift, 두 강력한 데이터 웨어하우스 솔루션을 비교 분석한 영문 기사의 한국어 번역입니다. 원문은 두 시스템의 아키텍처, 성능 특성, 장단점, 그리고 실제 사용 사례를 상세히 다루고 있습니다.
한국의 데이터 엔지니어, 분석가, 그리고 기술 의사 결정자들이 각 시스템의 특징을 이해하고 자신들의 요구에 가장 적합한 솔루션을 선택하는 데 도움을 주고자 합니다.
번역 과정에서 기술 용어와 개념의 정확성을 유지하면서도, 한국어 독자들이 쉽게 이해할 수 있도록 자연스러운 표현을 사용하려 노력했습니다. 원문의 뉘앙스와 정보를 최대한 보존하면서 한국어 독자들에게 맥락을 제공하기 위해 일부 설명을 추가했습니다.

ClickHouse 라는 제품을 살펴보다 Redshift랑 비교하는 글을 발견했다.

가격비교는 모르겠고, 일단 범용이 아닌 특정 목적(예를 들면 사용자행동분석이나 로그분석)에 맞게 좀더 최적화가 가능하고, '빠르게' 집계값을 얻어 내는데 좋은 솔루션? 이 아닌가싶다.
일단 '빠르다' 라는 장점이 맘에 든다.


우리는 ClickHouse를 Google BigQuery, Elastic, Apache Druid를 포함한 다른 분석용 데이터베이스들과 광범위하게 비교하는 글을 작성했습니다. 대부분의 글들은 같은 요지를 가지고 있었습니다

최적화된 ClickHouse 인스턴스는 여러 배 더 빠르지만, 일부 범용 기능이 부족해 특정 사용 사례에는 적합하지 않다는 것입니다.

지금까지 우리가 살펴본 데이터베이스 중 ClickHouse와 Amazon Redshift가 가장 비교 가능한 수준에 있습니다. ClickHouse가 여전히 더 빠르긴 하지만, Redshift의 인프라 최적화 덕분에 그 차이가 예상보다 좁혀졌습니다. 대부분의 데이터베이스가 ClickHouse보다 훨씬 느린 쿼리 성능을 보이지만, Redshift는 대다수의 쿼리에서 단지 2-5배 정도 느릴 뿐입니다. 이는 다른 데이터베이스들과 비교했을 때 상당히 경쟁력 있는 성능이라고 할 수 있습니다.

둘 다 ClickHouse Cloud AWS, ClickHouse Cloud GCP, 그리고 Redshift의 최근 AQUA 및 AutoMV 업데이트와 같은 여러 구성을 가지고 있습니다. 이러한 최적화로 인해 쿼리 속도가 더욱 근접할 수 있지만, 이 비교는 각 제품에 대해 더 폭넓게 다룰 것입니다.

Overview

Redshift와 ClickHouse는 모두 페타바이트 규모의 데이터를 인상적인 속도로 처리할 수 있는 온라인 분석 처리(OLAP) 데이터베이스입니다. MySQL이나 Postgres와 같은 온라인 트랜잭션 처리(OLTP) 데이터베이스와 달리, OLAP 데이터베이스는 데이터의 집계를 효율적으로 반환하도록 설계되었습니다.

개발 배경(문화)의 관점에서 볼 때, 두 제품은 매우 다릅니다. ClickHouse는 비교적 작은 스타트업이 개발한 오픈 소스 프로젝트입니다. 반면 Amazon Redshift는 굳이 소개가 필요 없는 거대 기업이 만들고 관리하는 폐쇄형 소스 제품입니다. 두 제품은 많은 부분에서 기능이 겹치지만, 흥미롭게도 때로는 서로 보완적으로 함께 사용되기도 합니다. 이는 각 제품의 강점을 최대한 활용하려는 기업들의 전략을 보여줍니다.

오늘날 Redshift와 ClickHouse를 비교하는 것은 특히 적절한데, 이는 Redshift의 가장 최근 AWS 발표가 ClickHouse의 강점인 분석에 초점을 두었기 때문입니다.

ClickHouse

ClickHouse는 놀라운 속도로 데이터를 분석할 수 있는 SQL 기반 데이터 웨어하우스입니다.
처음에는 러시아의 Yandex라는 회사 내부 프로젝트로 시작되었습니다. Yandex가 개발한 웹 분석 도구인 Yandex.Metrica를 위해 만들어졌죠. 2016년에 오픈소스로 공개되면서 ClickHouse Inc.라는 회사가 주도적으로 관리하고 있으며, Altinity Inc.도 일부 기여하고 있습니다.
ClickHouse의 강점은 대용량 데이터를 순식간에 분석해내는 것입니다. 1초도 안 되는 시간에 결과를 도출할 수 있습니다. 이런 빠른 속도의 비결은 데이터를 열 단위로 저장하고, 동적으로 최적화된 뷰를 만들며, 여러 개의 CPU 코어를 효율적으로 활용하는 특별한 엔진 때문입니다.
오픈소스이지만 필요하다면 ClickHouse Inc.의 'ClickHouse Cloud'나 Altinity Inc.의 'Altinity.Cloud' 같은 관리형 서비스(K8S기반) 를 이용할 수도 있습니다.
Cloudflare, Microsoft, GitLab 같은 유명 기술 기업들이 ClickHouse를 사용하고 있습니다. 특히 사용자들에게 직접 보여주는 분석 기능을 구현할 때 많이 쓰이고 있습니다.

Amazon Redshift

Amazon Redshift도 ClickHouse처럼 SQL을 사용해서 구조화된 데이터(그리고 반구조화된 데이터도)를 분석할 수 있는 데이터 웨어하우스입니다. AWS에서만 사용할 수 있으며, 보통 PostgreSQL 같은 일반 데이터베이스로는 힘든 복잡한 분석을 수행할 때 많이 활용됩니다.

Redshift의 장점은 데이터가 늘어나도 자동으로 확장할 수 있다는 것입니다. AWS의 다른 서비스들과 잘 연동되어 있어서 데이터를 가져오기도 쉽고, 보안도 우수하여 데이터를 안전하게 저장하고 전송할 수 있습니다.
Redshift는 다양한 분야에서 사용되고 있습니다. 증권거래소인 Nasdaq부터 방송국 PBS, 맥도날드, 제약회사 Roche와 Merck까지 정말 여러 분야의 기업들이 활용하고 있습니다.
두 제품 모두 대량의 데이터를 빠르게 분석하는 데 특화되어 있지만, 각자의 특징과 장단점이 있습니다. 사용 목적과 환경에 따라 적절한 선택을 하는 것이 중요합니다.

Architecture

Redshift의 (매우 복잡한) 아키텍처

Redshift는 특히 복잡한 아키텍처를 가지고 있습니다. 이는 Amazon의 거대한 기존 인프라와 Redshift가 범용 데이터베이스를 목표로 하는 것에서 비롯된 결과입니다.

Redshift의 아키텍처는 대규모 병렬 처리(massively parallel), shared-nothing, 그리고 컬럼 기반입니다. "shared-noghing"이란 개별 Redshift 클러스터들이 중복되는 데이터를 가지고 있지 않다는 의미이며, "대규모 병렬 처리"는 계산을 여러 노드 사이에 분산한다는 것을 나타냅니다.

이론적으로, 이는 OLAP 데이터베이스의 표준적인 전제 조건입니다. Redshift는 리더 노드(때로는 마스터 노드라고도 불림)를 사용하여 로드 밸런서 역할을 합니다. 이 노드는 SQL 클라이언트와 컴퓨트 노드 사이의 트랜잭션을 처리합니다.

컴퓨트 노드는 아래에서 설명할 복잡한 과정을 통해 저장소와 트랜잭션을 수행합니다. 이 저장소는 주로 AWS S3를 기반으로 구축되지만, 최근에는 RDS와 같은 다른 저장 솔루션에 대한 지원도 추가되었습니다.

Redshift는 구조적인 면과 하드웨어적인 면 모두에 컴퓨팅 최적화를 위한 여러 계층의 작업이 이루어져 있습니다. 그래서 더욱 복잡해집니다.

첫 번째는 Redshift Spectrum입니다. 이는 컴퓨트 노드가 단일 쿼리를 병렬 계산으로 분할하기 위해 동원할 수 있는 EC2 머신들의 집합을 말합니다. 더 정확히 말하면, Redshift Spectrum은 컴퓨트 노드와 저장소 사이의 계층입니다. 컴퓨트 노드가 리더 노드를 통해 쿼리를 나누는 동안, Spectrum은 단일 쿼리의 계산을 여러 머신에 분산시킵니다.

이 설정을 설명하는 가장 쉬운 방법은 단일 쿼리의 처리 과정을 따라가보는 것입니다. 회사의 전체 판매 합계를 알고 싶어하는 비즈니스 인텔리전스(BI) 도구를 상상해 봅시다. 순서대로:

  1. 리더 노드가 쿼리를 받아 컴퓨트 노드에 위임합니다.
  2. 컴퓨트 노드는 Redshift Spectrum을 이용해 합계 계산을 실행합니다.
  3. Spectrum의 수천 대의 머신이 각각 여러 달치의 판매 데이터를 더하기 시작하고, 그 집계 결과를 컴퓨트 노드에 반환합니다.
  4. 컴퓨트 노드는 모든 미시적 집계를 합쳐 전체 데이터에 대한 총 집계를 계산합니다.
  5. 컴퓨트 노드가 그 값을 리더 노드에 반환합니다.
  6. 리더 노드가 그 값을 BI 도구에 반환합니다.

Amazon이 2019년에 출시한 AQUA(Advanced Query Accelerator)로 인해 상황은 더욱 복잡해지고 효율적이 되었습니다. AQUA는 시간이 지남에 따라 SSD 대역폭이 크게 증가했지만, 더 많은 저장 공간이 반드시 더 빠른 쿼리를 의미하지는 않는다는 점, 특히 병목 현상이 이제 메모리-컴퓨트 버스 사이에서 발생한다는 점에서 진화했습니다.

AQUA는 주요 컴퓨트 계층(예: Redshift Spectrum)에 부담을 주지 않고 저장 장치가 계산을 수행할 수 있게 하는 하드웨어 최적화입니다. 이는 Spectrum을 대체하는 것이 아니라, 암호화나 압축과 같은 표준 작업을 처리하고 데이터의 간단한 집계를 미리 계산함으로써 부하를 줄여줍니다.

AWS에 따르면, AQUA는 쿼리를 미리 계산함으로써 평균적으로 성능을 10배 향상시킵니다.

AQUA는 Amazon’s shared-nothing model을 공유 저장소 모델과 유사한 것으로 변화시킵니다. AQUA가 데이터를 미리 계산하기 때문에, 개발자들이 여러 Redshift 클러스터가 상호 작용할 수 있는 단일 Redshift 관리 저장소 계층을 사용하도록 장려합니다.

ClickHouse (전통적인) 아키텍처

ClickHouse의 전통적인 아키텍처는 일부 관리형 인스턴스에서는 다를 수 있지만, 전반적인 설계 차이를 가장 잘 나타냅니다.
ClickHouse는 shared-nothing 아키텍처를 확장하여 CPU, 저장소, 메모리를 하나의 강력한 머신으로 결합합니다. 하지만 ClickHouse의 설계가 기본적으로 단일체(monolithic)적이지만, Apache ZooKeeper를 사용하여 여러 인스턴스에 걸쳐 데이터베이스를 샤딩하는 것도 지원합니다.
ClickHouse는 모든 것을 동일한 인스턴스에 묶기 때문에, 해당 인스턴스를 저장소, 메모리, 컴퓨트의 세 가지 개별 차원으로 확장할 수 있습니다. 그러나 이미 프로비저닝된 인스턴스를 확장하는 것은 간단하지 않습니다. 새 인스턴스를 시작하고 데이터를 수동으로 마이그레이션해야 합니다.

Redshift와 마찬가지로 ClickHouse도 더 빠른 쿼리 결과를 얻기 위해 데이터를 사전 집계하는 기술을 사용합니다. Redshift는 쿼리를 미리 계산하는 특수한 인메모리 하드웨어를 통해 이를 수행합니다. 반면 ClickHouse는 새로운 데이터가 유입될 때 동적이고 효율적으로 데이터를 미리 계산하는 맞춤 설정이 있는 구체화된 뷰(materialized view)를 사용합니다.

쉽게 말해서 ClickHouse는 스피드보트이고 Amazon Redshift는 항공모함입니다. 하나는 확실히 기능이 풍부하고(Redshift), 다른 하나는 더 빠릅니다(ClickHouse). 때로는 이 속도가 결정적인 요소가 됩니다.

ClickHouse Cloud 아키텍처

ClickHouse와 ClickHouse Cloud의 차이점, 특히 아키텍처 측면에서의 차이는 흔히 혼란을 일으키는 부분입니다. ClickHouse가 한명의 힘쎈 거인(monolithic titan)이라면, ClickHouse Cloud는 저장소와 컴퓨팅를 분리합니다. 이는 AWS에 배포되며, 최근에는 GCP에도 배포되었습니다.

ClickHouse Cloud는 Google BigQuery를 모델로 삼아 설계되었습니다. 이는 다음과 같은 기능을 즉시 사용할 수 있도록 제공합니다:

  1. ELT(Extract, Load, Transform) 제공업체와의 기본 통합
  2. 대화형 SQL 콘솔
  3. 자동화된 백업
  4. 캐싱
  5. 자동 복제

이러한 특징들은 ClickHouse Cloud가 단순한 ClickHouse의 호스팅 버전이 아니라, 클라우드 환경에 최적화된 완전히 관리되는 서비스임을 보여줍니다. 저장소와 컴퓨트의 분리는 클라우드 환경에서 더 나은 확장성과 유연성을 제공하며, 사용자는 필요에 따라 각 리소스를 독립적으로 조정할 수 있습니다.

또한 이러한 아키텍처는 빅데이터 처리와 분석에 더욱 적합하며, 사용자가 인프라 관리에 신경 쓰지 않고 데이터 분석에 집중할 수 있게 해줍니다. Google BigQuery의 모델을 따름으로써, ClickHouse Cloud는 엔터프라이즈급 성능과 기능을 제공하면서도 사용의 편의성을 유지하고 있습니다.

ClickHouse가 여전히 더 빠른 이유 (조건)

속도 테스트의 일반적인 결론은 ClickHouse가 더 빠르다는 것입니다 [1][2][3]. 하지만 이 속도 비교는 다른 제품들과 ClickHouse 비교만큼 명확하지는 않습니다.

ClickHouse와 Redshift의 비교는 세부적인 부분에서 이루어집니다. 둘 다 점진적 업데이트가 가능한 구체화된 뷰(materialized view), SIMD 벡터 실행, 강력한 압축 표준을 제공합니다. 차이점은 Redshift의 최적화는 많은 설정 없이 쿼리를 최적화하도록 만들어졌지만(그 결과 일부 제한된 효과를 가짐), ClickHouse의 최적화는 작업과 노력이 필요하지만 프로젝트의 고유한 요구사항에 맞게 조정된다는 것입니다.

ClickHouse가 직접 지적하는 Redshift의 몇 가지 제한사항이 있습니다. 첫 번째 제한사항은 Redshift가 최대 50개의 동시 쿼리(concurrent query)만 허용한다는 것입니다. 이는 동시 쿼리가 많은 분석 또는 데이터 제품에 특히 중요한 문제입니다.

두 번째 제한사항은 Redshift가 첫 번째 쿼리를 최적화하기 위해 컴파일해야 하며, 이로 인해 몇 초의 지연이 추가된다는 것입니다. 이 컴파일 시간은 사용자가 지속적으로 데이터베이스에 첫 번째 쿼리를 맞춤 설정하는 분석 제품에는 이상적이지 않습니다. ClickHouse는 또한 Redshift보다 더 나은 압축효율을 가지고 있다고 언급하며, 약 2배의 압축률을 달성한다고 합니다.

그러나, ClickHouse는 결과 캐시(result cache)가 없다는 단점이 있습니다. 이는 Redshift의 주력 기능입니다. 결과 캐시는 예측 가능하고 반복적인 쿼리가 있는 애플리케이션에 탁월합니다. 다행히도 ClickHouse는 올해 2월의 새로운 업데이트로 이 문제를 해결했습니다. 이제 프로젝트는 설정 가능한 캐시를 지원합니다.

ClickHouse의 속도 우위에 대한 반론은 더 많은 작업이 필요하다는 것입니다. 구체화된 뷰는 엔지니어가 설정해야 합니다. 일반적으로 쿼리를 간소화하려면 더 많은 기술적 감독이 필요합니다.

한편 Redshift는 자동으로 구체화된 뷰를 생성하는 AutoMV를 가지고 있습니다. Redshift는 Google BigQuery보다 빠른 솔루션을 원하지만 쿼리 튜닝에 많은 시간을 할애할 수 없는 기업에 이상적입니다.

ClickHouse와 Redshift가 함께 작동하는 방식

ClickHouse는 특정 쿼리에서 더 빠르고, Redshift는 기존 AWS 스택에 더 쉽게 연결할 수 있는 보다 범용적인 제품이기 때문에, 중복 데이터를 사용하여 잘 함께 작동할 수 있습니다. ClickHouse는 두 제품을 연결하는 방법을 단계별로 자세히 설명하는 훌륭한 가이드를 제공합니다.

Redshift와 ClickHouse 간에 데이터 스트리밍을 가능하게 하는 여러 ETL 제공업체가 있지만, Redshift가 이미 AWS 생태계에 포함되어 있기 때문에 많은 개발자들이 AWS Glue를 사용합니다. AWS Glue는 (현재로서는) ClickHouse용 네이티브 커넥터가 없지만, 데이터를 수집하는 데 사용할 수 있는 Python 스크립트를 실행할 수 있습니다. 또한 AWS EventBridge와 AWS Lambda를 사용하여 새 데이터가 수집된 후 자동으로 ETL 작업을 트리거할 수 있습니다.

요약

ClickHouse와 Redshift는 모두 데이터의 집계를 효율적으로 반환할 수 있는 훌륭한 OLAP 솔루션입니다. ClickHouse는 일반적으로 더 빠르며, Redshift보다 2-5배 정도 빠르지만, 더 많은 엔지니어링 노력이 필요하고 다른 도구와의 통합이 그만큼 긴밀하지 않습니다. 반면에 Redshift는 다른 AWS 제품들과 잘 작동합니다.

이러한 차이점 때문에 ClickHouse와 AWS Redshift는 때때로 이벤트 관리자(AWS EventBridge와 같은)와 ETL 솔루션(AWS Glue와 같은)을 통해 연결되어 함께 사용됩니다.

우리 PostHog는 수백 명의 고객을 위해 예측할 수 없는 쿼리에 대한 집계를 반환해야 했기 때문에 ClickHouse를 선택했습니다. ClickHouse 덕분에 PostHog는 빠르고 "버튼 클릭" 속도로 결과를 제공할 수 있습니다.


관련 글

ClickHouse와 Redshift의 차이점에 대해 더 자세히 알고 싶다면 다음 자료를 참고하세요:

이 자료들은 두 데이터베이스 시스템의 성능, 사용 사례, 그리고 각각의 장단점에 대한 더 깊은 이해를 제공할 것입니다.

profile
다이조부

0개의 댓글