RisingWave: 간편하고 저렴한 클라우드 네이티브 스트림 프로세싱
스트림 프로세싱은 오랫동안 연구되어 온 주제입니다. 지난 수십 년 동안, 연구자들과 실무자들은 스트리밍 데이터에 대한 실시간 분석을 위해 빠르고, 확장 가능하며, 신뢰할 수 있는 스트리밍 시스템을 개발하는 데 상당한 노력을 기울여 왔습니다. 이러한 노력 덕분에, 오늘날 오픈 소스 및 상용 스트리밍 시스템은 빅테크 기업들의 데이터 센터에서 원활히 운영되며, 광고 추천, 사기 탐지, IoT 분석 등 수천 개의 애플리케이션을 지원하고 있습니다.
스트림 프로세싱 분야에서 이룬 괄목할 만한 진전을 목격하면서, 점점 더 많은 기업들이 최신 스트리밍 시스템을 도입해 비즈니스를 혁신할 수 있을지 탐색하기 시작했습니다. 그러나 많은 기업들이 이 여정에서 난관에 부딪히고 있으며, 스트리밍 시스템 도입 비용이 너무 높다는 이유로 좌절하고 있습니다. 그 이유는 크게 두 가지로 나눌 수 있습니다.
학습 난이도: 스트리밍 시스템을 사용하는 방법을 배우는 것은 결코 쉬운 일이 아닙니다. SQL을 대화형 인터페이스로 제공하는 기존 데이터베이스(예: MySQL, PostgreSQL)와 달리, 대부분의 스트리밍 시스템은 사용자가 스트리밍 데이터를 조작하기 위해 플랫폼 고유의 프로그래밍 인터페이스(주로 Java)를 배워야 합니다. 비기술자에게 스트리밍 시스템을 마스터하는 것은 사실상 불가능한 과제입니다. 설상가상으로, 스트리밍 시스템은 데이터베이스와는 다른 방식으로 데이터를 표현합니다. 사용자는 스트리밍 시스템과 데이터베이스 간의 데이터 전환을 위해 복잡한 데이터 추출 로직을 작성해야 합니다.
운영 비용: 많은 인기 있는 스트리밍 시스템은 오픈 소스입니다. 포괄적인 배포 스크립트와 도커 이미지도 쉽게 구할 수 있습니다. 그러나 오픈 소스라고 해서 무료나 저렴하다는 의미는 아닙니다. 스트리밍 워크로드는 사용 수요에 따라 급격히 변동할 수 있습니다. 기업들은 최악의 시나리오에 대비해 대규모 머신 클러스터를 구매해야 합니다. 스트리밍 시스템을 배포하고 유지하는 비용은 단순히 기계를 구매하는 비용을 훨씬 초과할 수 있습니다. 실제로, 시스템을 운영하기 위해 밤낮없이 헌신할 엔지니어 팀을 구성하는 것 자체가 큰 골칫거리가 될 수 있습니다.
스트림 프로세싱 민주화
스트림 프로세싱은 빅테크 기업이나 자본력이 풍부한 기업들만의 특권이 되어서는 안 됩니다. 스트림 프로세싱은 뛰어난 엔지니어만이 다룰 수 있는 괴물이 되어서는 안 됩니다. 스트림 프로세싱은 데이터 과학자부터 의사결정자, 대기업부터 소규모 사업자에 이르기까지 모두에게 이익을 가져다줄 수 있어야 합니다. RisingWave Labs는 스트림 프로세싱의 민주화를 위해 모든 노력을 기울이고 있습니다. 우리는 스트림 프로세싱을 간편하고, 저렴하며, 접근 가능하게 만드는 클라우드 네이티브 스트리밍 데이터베이스 RisingWave를 구축하고 있습니다.

아키텍처
스트림 프로세싱을 간편하게
RisingWave는 표준 SQL을 대화형 인터페이스로 제공하는 분산 스트리밍 데이터베이스입니다. PostgreSQL 방언을 사용하며, 코드 변경 없이 PostgreSQL 생태계와 원활하게 통합할 수 있습니다. RisingWave는 스트림을 테이블로 취급하며, 사용자가 스트리밍 데이터와 과거 데이터를 대상으로 복잡한 쿼리를 선언적이고 우아하게 작성할 수 있도록 지원합니다. RisingWave를 사용하면, 사용자는 Java나 시스템 고유의 저수준 API를 학습할 필요 없이 분석 쿼리 로직에만 집중할 수 있습니다.
스트림 프로세싱을 저렴하게
RisingWave는 클라우드를 위해 설계되었습니다. 클라우드 네이티브 아키텍처 덕분에, RisingWave는 클라우드 플랫폼이 제공하는 탄력적 자원을 최대한 활용할 수 있습니다. 완전 관리형 서비스로서, RisingWave는 사용자 개입 없이 자체적으로 클라우드에서 배포, 유지 관리, 확장됩니다. 사용자가 서비스 수준 계약(SLA)을 설정하면, RisingWave는 성능 목표를 최소 비용으로 달성하기 위해 다양한 컴퓨팅 및 스토리지 자원을 자동으로 조합합니다. RisingWave는 서버리스입니다: 사용한 만큼만 비용을 지불하며, 사용하지 않으면 비용이 발생하지 않습니다. 우리는 RisingWave가 소규모 사업자에게도 부담 없는 서비스를 제공할 수 있도록 지속적으로 최적화하고 있습니다.
스트림 프로세싱을 모두에게
우리는 훌륭한 제품이란 번영하는 오픈 커뮤니티의 집단 지성에서 나온다고 믿습니다. 소수 전문가들의 경험에만 의존해 RisingWave를 개발하는 대신, 오픈 소스 커뮤니티와 함께 설계하고 구현하고 있습니다. 우리는 RisingWave 커널을 Apache License 2.0 하에 오픈 소스화하기로 결정했습니다. RisingWave 커뮤니티는 개방되어 있습니다: 누구나 RisingWave 프로젝트 로드맵 설계에 참여할 수 있으며, 누구나 자신의 클라우드 서비스에 분산 스트리밍 데이터베이스를 배포할 수 있으며, 누구나 기여하고 피드백을 보낼 수 있습니다. RisingWave 커뮤니티는 협력적입니다: 우리는 다른 커뮤니티들과 함께 현대적인 실시간 데이터 인프라 스택을 구축하는 데 열정을 쏟고 있습니다. 예를 들어, 우리는 실시간 스트리밍 플랫폼인 Redpanda 커뮤니티와 활발히 협력하여 미션 크리티컬 애플리케이션 구축의 생산성을 극대화하고 있습니다.
RisingWave가 완벽하게 들어맞는 경우는 언제일까요?
RisingWave는 다음과 같은 상황에 이상적인 솔루션입니다:
Kafka 스트림, 데이터베이스 CDC 등과 같은 실시간 데이터 소스를 관리할 때
조인, 집계, 타임 윈도우 처리 등 복잡한 쿼리를 실시간으로 실행할 때
일관되고 최신의 결과를 인터랙티브하게, 동시에 탐색할 때
결과를 다운스트림 시스템에 원활히 전달할 때
스트리밍 데이터와 배치 데이터를 통합된 코드베이스로 처리할 때
어떤 사용 사례에서 RisingWave가 뛰어날까요?
RisingWave는 특히 다음과 같은 사용 사례에 효과적입니다:
스트리밍 분석: 실시간 대시보드에서 초 단위 데이터 신선도를 달성할 수 있어, 주식 거래, 스포츠 베팅, IoT 모니터링처럼 실시간성이 중요한 시나리오에 이상적입니다.
이벤트 기반 애플리케이션: 사기 탐지 및 이상 탐지와 같은 크리티컬 애플리케이션을 위한 정교한 모니터링 및 알림 시스템을 개발할 수 있습니다.
실시간 데이터 강화: 다양한 소스로부터 데이터를 지속적으로 수집하고, 실시간으로 데이터를 강화하여 효율적으로 다운스트림 시스템에 전달할 수 있습니다.
피처 엔지니어링: 배치 데이터와 스트리밍 데이터를 통합된 코드베이스로 머신러닝 모델용 피처로 변환하여, 일관된 통합을 실현할 수 있습니다.
다른 시스템과 RisingWave 비교하기
RisingWave는 기존 제품의 단순한 "대안"이 아닙니다. 그러나 종종 스트림 프로세서, 분석 데이터베이스, 운영 데이터베이스와 비교되곤 합니다.
스트림 프로세서
ksqlDB, Spark Structured Streaming, Flink SQL과 같은 스트림 프로세서는 자주 RisingWave와 비교됩니다. 이들 시스템은 각각 강점을 가지고 있지만, RisingWave는 PostgreSQL 스타일의 사용자 경험을 통해 뛰어난 간편성을 제공하며, 수동 상태 관리를 제거합니다. RisingWave는 다음에서 탁월합니다:
조인, 집계, 타임 윈도우 등 복잡한 쿼리를 고성능으로 처리
수 초 내 동적 확장(in/out)을 지원하여, 수 분 또는 수 시간이 아닌 수 초 만에 스케일 조정
장애 발생 시 수 초 만에 복구, 수 분 또는 수 시간 소요되지 않음
또한, RisingWave는 전체 아키텍처를 크게 단순화합니다. 자세한 내용은 RisingWave가 이벤트 기반 아키텍처를 어떻게 단순화하는지를 참조하세요.
다만, 이러한 스트림 프로세서들과 달리 RisingWave는 Java 및 Scala의 저수준 API를 제공하지 않습니다. 대신 다양한 언어 기반의 UDF와 SDK를 제공합니다.
분석 데이터베이스
ClickHouse의 머티리얼라이즈드 뷰, Snowflake의 다이나믹 테이블, BigQuery의 지속 쿼리, Databricks의 Delta Live Tables와 같은 현대적 분석 데이터베이스들은 지속 처리 기능을 제공합니다. RisingWave는 지속 처리 측면에서 다음과 같은 점에서 이들 솔루션을 능가합니다:
타임 윈도우, 워터마크 등 스트림 프로세싱을 위한 풍부한 기능 세트 제공
복잡한 스트리밍 조인을 최적화하여 처리
특정 생태계에 종속되지 않고, 모든 시스템으로부터 데이터 수집 및 결과 전송 가능
게다가, RisingWave의 투명한 동적 확장 및 즉각적인 장애 복구 메커니즘은 다른 분석 데이터베이스보다 뛰어납니다.
단, RisingWave는 컬럼너 스토리지를 지원하지 않습니다.
만약 워크로드가 대부분 사전에 정의된 쿼리가 아니라 임시성, 장기 범위 스캔을 중심으로 이루어진다면, 분석 데이터베이스가 더 나은 선택이 될 수 있습니다.
운영 데이터베이스
RisingWave는 PostgreSQL 와이어 프로토콜 호환성을 갖추고 있어, PostgreSQL 생태계의 대부분 도구들과 원활하게 통합할 수 있습니다. RisingWave는 스트리밍 데이터를 저장 및 처리하기 위해 특별히 설계되었기 때문에, 트랜잭션 데이터보다는 메트릭 및 이벤트 관리에 더 적합합니다.
주의할 점은, RisingWave는 내부적으로 PostgreSQL 엔진을 사용하지 않기 때문에 일부 PostgreSQL 도구가 지원되지 않을 수 있다는 점입니다. 또한, RisingWave는 읽기-쓰기 트랜잭션을 지원하지 않습니다.
RisingWave는 이벤트 기반 아키텍처를 어떻게 단순화할까요?
RisingWave는 이벤트 기반 아키텍처를 단순화하는 데 도움을 주기 위해 만들어졌습니다. RisingWave를 이벤트 스트리밍, 스트림 프로세싱, 스토리지, 서비스 기능을 결합한 통합 시스템으로 생각할 수 있습니다.
개발자는 일련의 머티리얼라이즈드 뷰를 통해 복잡한 스트림 프로세싱 로직을 표현할 수 있습니다.
또한, 사용자는 데이터를 시스템 내부에 직접 지속적으로 저장할 수 있어, 결과를 외부 데이터베이스로 전달하여 저장 및 쿼리 서비스를 구축할 필요가 없습니다.

RisingWave를 사용한 경우와 사용하지 않은 경우의 스트림 프로세싱 비교
