Ken
- 1. ClickHouse의 기본 구조
- 2. ClickHouse Cloud의 개선된 구조
- 3. ClickHouse의 기본 MergeTree 동작
- 4. ClickHouse Cloud의 SharedMergeTree 동작 구조
- (1) 완전한 스토리지/컴퓨트 분리와 오브젝트 스토리지 기반
- (2) 경량 쿼럼 일관성 및 빠른 확장성
- (3) 클라우드 전용 최적화 및 운영 단순화
- 5. ClickHouse Cloud를 사용해야 하는 이유
- (1) 성능 및 확장성
- (2) 운영 단순화 및 안정성
- (3) 워크로드 격리 및 서비스별 독립 확장
- (4) 클라우드 전용 최적화 및 최신 기능
- 6. ClickHouse OSS vs ClickHouse Cloud 성능 비교
- (1) 핵심 성능 특성
- (2) 주요 성능 차이점
- (3) 각각이 우수한 상황
- (4) 운영상 고려사항
- 결론
1. ClickHouse의 기본 구조
ClickHouse는 고성능, 대용량 분석(OLAP) 쿼리에 최적화된 컬럼 지향 데이터베이스 관리 시스템(DBMS)입니다. 데이터는 컬럼 단위로 저장되어 필요한 컬럼만 읽어들임으로써 메모리 사용과 쿼리 속도를 극대화합니다. 내부적으로는 데이터를 블록 단위로 처리하여 벡터화(vectorized) 실행 엔진을 사용, 한 번에 수천~수만 행의 연산을 병렬 처리합니다. 또한, 분산 아키텍처를 통해 여러 노드에 데이터를 파티셔닝 및 복제하여 대규모 데이터셋도 효율적으로 처리할 수 있습니다. 데이터 압축 및 컬럼별 인덱싱을 통해 저장 공간과 I/O를 최소화하며, 쿼리 성능을 극대화합니다[1][2][3].
2. ClickHouse Cloud의 개선된 구조
ClickHouse Cloud는 기존 자체 운영(온프레미스) ClickHouse와 달리, 클라우드 네이티브 환경에 맞춰 설계된 Shared Everything 구조를 채택합니다. 이 구조의 핵심은 스토리지와 컴퓨트의 완전한 분리와, 모든 데이터와 메타데이터가 오브젝트 스토리지(S3, GCS, Azure Blob 등)에 저장된다는 점입니다. 모든 컴퓨트 노드는 동일한 스토리지에 접근하며, 별도의 샤딩/복제 설정 없이도 수평 확장성과 고가용성을 즉시 제공합니다. 각 서비스는 Kubernetes 기반의 독립된 네트워크/컴퓨트/스토리지 격리를 통해 보안과 장애 격리도 강화됩니다. 관리형 백업, 자동 스케일링, 서비스별 워크로드 분리(Compute-Compute Separation, Warehouses) 등 운영 복잡성을 대폭 줄이고, 비용 효율과 안정성을 동시에 확보합니다[4][5].
3. ClickHouse의 기본 MergeTree 동작
ClickHouse의 MergeTree 엔진은 대용량 데이터의 효율적 저장과 고속 조회를 위해 설계된 컬럼스토어 테이블 엔진 패밀리입니다. 데이터는 INSERT 시 파트(part) 단위의 불변(immutable) 파일 집합으로 저장되고, 각 파트는 미리 정의된 프라이머리 키(Primary Key, 정렬 키) 순서로 정렬됩니다. 시스템은 백그라운드에서 작은 파트들을 주기적으로 병합(merge)하여 더 큰 파트를 만들고, 파트 개수를 제어해 I/O 효율을 극대화합니다. 파트와 파티션은 논리적으로 구분되며, 파티션별로 병합이 이뤄집니다.
각 컬럼 데이터는 .bin 파일에, 그 위치 인덱스는 .mrk2(마크) 파일에 저장되어, 필요한 압축 블록만 점프해 읽을 수 있습니다. 희소 인덱스(primary.idx), 그라뉼(granule) 단위의 인덱싱, 컬럼별 압축, TTL 기반 데이터 수명 관리 등 다양한 최적화가 결합되어 있습니다. 병합 과정에서 ReplacingMergeTree, CollapsingMergeTree 등 파생 엔진은 중복 제거, 집계, 삭제 등 추가 연산을 지원합니다. 그러나 병합이 완료되기 전에는 중복/이전 버전/미삭제 데이터가 SELECT 결과에 노출될 수 있으며, 이를 보완하기 위해 FINAL 쿼리, 주기적 OPTIMIZE FINAL, 파이프라인 dedup 등 다양한 전략이 활용됩니다[3][6].
4. ClickHouse Cloud의 SharedMergeTree 동작 구조
ClickHouse Cloud에서 기본 테이블 엔진은 SharedMergeTree(CloudMergeTree)입니다. SharedMergeTree는 기존 ReplicatedMergeTree의 한계를 극복한 클라우드 네이티브 엔진으로, 다음과 같은 구조적 차별점을 가집니다.
(1) 완전한 스토리지/컴퓨트 분리와 오브젝트 스토리지 기반
모든 데이터와 메타데이터가 S3, GCS, Azure Blob 등 공유 오브젝트 스토리지에 저장됩니다. 레플리카(노드) 간 직접 통신이 필요 없으며, 모든 동기화와 복제는 오브젝트 스토리지와 ClickHouse Keeper(메타데이터 조율)만으로 처리됩니다. 이로써 리더 없는 비동기 복제, 수백 레플리카의 즉시 확장, 장애 시 빠른 재구성 등이 가능합니다.
(2) 경량 쿼럼 일관성 및 빠른 확장성
INSERT는 기본적으로 쿼럼(quorum) 일관성으로 동작하여, 메타데이터가 Keeper 쿼럼에 저장될 때만 성공으로 간주됩니다. 동기화가 필요한 경우 SYSTEM SYNC REPLICA LIGHTWEIGHT 등 명령어로 강한 일관성을 추가할 수 있습니다. 테이블당 수백 레플리카를 허용하며, 별도 샤딩 없이도 동적으로 확장/축소가 가능합니다.
(3) 클라우드 전용 최적화 및 운영 단순화
SharedMergeTree는 병합, 뮤테이션, 컴팩션 등 모든 백그라운드 작업의 처리량이 대폭 향상되었으며, Cloud 전용 설정(컴팩트 파트 프리페치, 버퍼링 등)으로 병합 경로 최적화가 지원됩니다. 관리형 백업, 모니터링, 자동 스케일링, 서비스별 워크로드 분리(읽기/쓰기/팀별 엔드포인트 분리) 등 운영 부담이 최소화됩니다. 또한, Compute-Compute Separation(Warehouses)로 동일 데이터에 여러 컴퓨트 그룹을 붙여 읽기/쓰기/서비스별 독립 스케일링이 가능합니다. RW(쓰기) 서비스만 병합을 수행하고, RO(읽기) 서비스는 병합 부담이 없습니다[7][8][4][5].
5. ClickHouse Cloud를 사용해야 하는 이유
(1) 성능 및 확장성
SharedMergeTree는 클라우드 환경에 맞춘 설계로 INSERT, 병합, 뮤테이션 처리량이 기존 ReplicatedMergeTree 대비 크게 향상되었습니다. 수백 레플리카로 수평 확장/축소가 빠르고, 복제 큐·메타데이터 복제 등 운영자가 직접 다뤄야 할 복잡성이 없습니다. 실제 도입 사례에서도 대규모 데이터셋에서의 처리량, 확장성, 장애 복구 속도 등에서 큰 성능 개선이 보고되고 있습니다[7][8].
(2) 운영 단순화 및 안정성
스토리지/컴퓨트 분리형 아키텍처를 추가 설정 없이 바로 사용할 수 있고, 오브젝트 스토리지로 비용 효율도 극대화됩니다. 자동 스케일링, 아이들링, 관리형 백업/모니터링/보안정책, 네트워크/스토리지 격리 등 운영 과제들이 관리형 서비스로 흡수됩니다. Peak 대비 과도한 리소스 프로비저닝이 불필요하며, 실제 사용량에 따라 비용이 최적화됩니다[4].
(3) 워크로드 격리 및 서비스별 독립 확장
Warehouses 개념을 통해 읽기/쓰기, 실시간/배치, 팀별 쿼리를 각기 다른 엔드포인트와 스케일로 분리 운영할 수 있습니다. 각 워크로드별로 최적화된 리소스와 성능을 보장하며, 비용 통제력과 예측 가능성을 높입니다. 서비스별로 별도의 네트워크/컴퓨트/스토리지 격리가 적용되어, 장애나 보안 이슈가 한 서비스에 국한됩니다[5][4].
(4) 클라우드 전용 최적화 및 최신 기능
클라우드 환경에 맞춘 자동 스케일링, 오토 아이들링, 서비스별 리소스 할당, 오브젝트 스토리지 기반 무제한 저장 등 자체 운영 환경에서는 구현이 어려운 최신 기능을 기본 제공하며, 관리형 서비스의 신속한 업데이트와 지원을 받을 수 있습니다[4].
6. ClickHouse OSS vs ClickHouse Cloud 성능 비교
(1) 핵심 성능 특성
ClickHouse Cloud는 오픈소스 버전과 동일한 고속 성능을 제공하지만 인프라를 관리할 필요가 없습니다. 다만 중요한 차이점들이 있습니다.
(2) 주요 성능 차이점
데이터 접근 패턴: ClickHouse Cloud는 데이터가 캐시에 있을 때는 빠르지만 오브젝트 스토리지에서 대량의 데이터를 가져와야 할 때는 더 느릴 수 있습니다. ClickHouse Cloud는 오브젝트 스토리지 기반의 서버리스 아키텍처를 사용하며 로컬 캐싱에 의존합니다.
공유 인프라의 영향: 비전용 ClickHouse Cloud 계정의 성능은 다른 사용자들의 영향으로 인해 저하될 수 있습니다. 전용 계정을 선택하면 이 문제를 피할 수 있습니다.
실제 성능: ClickHouse Cloud 같은 관리형 서비스는 수백 명의 동시 사용자에서도 1초 이내의 쿼리 응답 속도를 일관되게 제공하며, 높은 동시성 워크로드에서 경쟁력 있는 성능을 유지합니다.
(3) 각각이 우수한 상황
ClickHouse OSS가 나은 경우:
- 미리 예측 가능한 피크 시간대가 있는 워크로드
- 일정하고 예측 가능한 성능이 필요한 경우
- 커스텀 스토리지 엔진이 필요한 경우 (OSS가 더 유연함)
ClickHouse Cloud가 나은 경우:
- 불규칙하거나 변동성 있는 워크로드 (자동 스케일링)
- 일시적 피크를 위해 24/7 과도한 리소스를 프로비저닝하고 싶지 않은 경우
- 전담 데이터베이스 인프라 팀이 없는 조직
(4) 운영상 고려사항
성능 선택은 사용 사례에 따라 결정됩니다. ClickHouse Cloud는 수요에 따라 서버 크기를 자동으로 확장 및 축소할 수 있어, 미사용 시 0으로 축소되고 메모리 부하 시 확장됩니다. 이러한 자동 스케일링은 OSS에서 구현하기 사실상 불가능하다는 점에서 운영 관점의 이점은 Cloud가 훨씬 더 다양합니다.
결론
ClickHouse Cloud의 Shared Everything 아키텍처와 SharedMergeTree 엔진은 기존 MergeTree/ReplicatedMergeTree의 강점을 그대로 가져오면서, 클라우드 환경에 최적화된 구조적 혁신을 제공합니다. 이를 통해 성능, 일관성, 확장성, 운영 단순화, 비용 효율, 워크로드 격리 등 모든 측면에서 대폭 향상된 경험을 제공하며, 대규모 실시간 분석 환경에서의 데이터 플랫폼으로서 최적의 선택지가 됩니다. 자체 운영 대비 복잡성·비용·운영 부담을 획기적으로 줄이고, 미래지향적 데이터 아키텍처로의 전환을 가능하게 합니다.