Blog/데이터 엔지니어링/데이터 프로듀서에서 Snowflake까지 더 간단해진 경로: 최대 20 GB/s를 지원하는 Elastic Channels
2026년 9월 17일/6분 읽음데이터 엔지니어링

데이터 프로듀서에서 Snowflake까지 더 간단해진 경로: 최대 20 GB/s를 지원하는 Elastic Channels

오늘 Snowflake는 Snowpipe Streaming용 Elastic Channels Snowpipe Streaming의 GA를 발표합니다. 이를 통해 애플리케이션, 디바이스, 서비스의 데이터를 Snowflake 테이블 또는 Snowflake 관리형 Apache Iceberg™ 테이블로 더 간단하게 직접 스트리밍할 수 있습니다. 데이터 적재만을 위해 존재했던 수집 시스템을 걷어내어 운영을 단순화하고, 지연 시간을 줄이며, 총소유비용도 낮출 수 있습니다.

커넥티드 제품과 산업 시스템, 디지털 애플리케이션을 운영하는 조직에는 이러한 단순성이 중요한 문제입니다. 디바이스는 텔레메트리를 지속적으로 전송하고, 애플리케이션은 사용자 이벤트를 생성하며, 서비스는 각각 독립적으로 확장됩니다. 이러한 신호를 분석과 AI에 활용하려면, 신호를 생성하는 애플리케이션 못지않게 복잡한 수집 시스템이 필요할 수 있습니다.

Elastic Channels는 이 과정을 단순화합니다. 대상 테이블을 지정하고, 행 또는 행 배치를 추가하면, Snowflake가 데이터를 영구 저장한 시점에 지속성 확인(durable acknowledgment) 응답을 받을 수 있습니다. 이 응답은 해당 데이터가 테이블에서 쿼리 가능해지기 전에 반환됩니다. SDK는 추가 작업을 자동으로 배치 처리하고 일시적 오류를 재시도하며, Snowflake는 수집 확장과 채널 수명 주기를 관리합니다. 따라서 Snowflake에 데이터를 적재하기 위한 별도의 메시지 버스나 스테이징 파이프라인이 필요하기 않게 됩니다.

이렇게 단순해진 방식으로도 까다로운 워크로드를 처리할 수 있습니다. GA 시점 기준으로 Elastic Channels는 테이블당 최대 20 GB/s를 지원합니다. 워크로드에 따라 데이터는 최소 5초 만에 쿼리 가능한 상태가 될 수 있습니다. 내부 테스트에서는 처리 성능을 더 끌어올려 단일 테이블 기준 최대 40 GB/s까지 도달했습니다. 다음 블로그에서는 이러한 벤치마크 결과와 측정 방법을 자세히 다룰 예정이며, 이어지는 3번째 블로그에서는 Elastic Channels의 기반 아키텍처와 설계를 엔지니어링 관점에서 살펴봅니다.

Elastic Channels에 대해 자세히 알아보거나 바로 시작하려면 Elastic Channels 설명서를 참고하세요.

Performance metrics diagram showing Snowflake throughput of 40 GB/s and query latency as low as 5 seconds
그림 1: Elastic Channels의 처리량 성능과 한도

고객 과제에서 출발한 직접 연결 경로 개발

Snowflake는 서로 다른 두 가지 스트리밍 과제에 직면한 고객들과 함께 Elastic Channels를 개발했습니다. 기업용 리워드 및 인센티브 애플리케이션 프레임워크를 제공하는 Yuvital은 파이프라인을 단순화하고 사용자 분석 및 클릭스트림 이벤트를 Snowflake로 직접 스트리밍하기 위해 Elastic Channels를 테스트해 왔습니다. Industrial DataOps 소프트웨어 분야의 선도 기업인 HighByte는 수천 개의 연결을 지원하고 산업 및 IoT 데이터를 Snowflake로 직접 스트리밍하면서 준실시간 가용성을 확보할 수 있는 더 단순한 방법이 필요했습니다. 이러한 설계 파트너 사례는 디지털 애플리케이션과 산업 시스템 전반에서 더 단순한 수집 방식이 필요하다는 점을 보여줍니다.

Elastic Channels는 데이터를 테이블로 이동하기 위해서만 존재하는 여러 시스템에 의존할 필요성을 줄여 수집 과정을 단순화합니다. 여러 컨슈머가 사용하거나 공유 재생 또는 보존을 위해 이미 Kafka 같은 메시지 버스를 사용하고 있다면, 그대로 유지하면서 Named Channels를 사용해 Snowflake로 사본을 스트리밍할 수 있습니다.

Elastic Channels를 사용하면 고객은 대상 테이블을 생성하고, SDK 또는 REST를 통해 프로듀서를 연결한 뒤 행 추가를 시작할 수 있습니다. 플릿과 트래픽이 증가해도 Snowflake가 서버 측 수집 경로를 처리합니다.

 

Quote Icon

Yuvital은 리워드와 인센티브를 활용해 기업이 회원의 참여를 높이고 더 건강한 행동을 유도할 수 있도록 지원합니다. 회원 활동과 참여 이벤트가 끊임없이 발생하는데, 이 데이터를 Snowflake로 가져와 회원 활동을 파악하고 경험을 개인화하며 비즈니스 의사결정에 활용합니다. 추가 전용 이벤트를 Snowflake에 적재하는 가장 빠른 방법으로 Confluent를 쓰고 있었지만, 이렇게 단순한 목적에 비하면 너무 복잡하고 비용도 컸습니다. Elastic Channels를 도입하면서 코드 몇 줄만 추가해 Node.js 백엔드에서 이벤트를 바로 전송하기 시작했고, 이후 확장도 어렵지 않았습니다.”

Yaron Levi
Chief Architect and Co-Founder, Yuvital
Diagram comparing traditional multi-hop data pipeline to Snowpipe Streaming Elastic Channels architecture for Snowflake
그림 2: Elastic Channels로 단순해지는 데이터 파이프라인

프로듀서에게는 단순함, 비즈니스에는 안정성

Elastic Channels는 다수의 독립 프로듀서가 하나의 대상을 공유하는 워크로드를 위해 설계되었습니다.

  • 하나의 공유 수집 경로: 프로듀서는 대상 파이프와 테이블에 대해 하나의 암시적 Elastic Channel을 통해 씁니다.
  • 프로듀서 조정 불필요: 플릿과 트래픽이 변해도 애플리케이션은 수집 채널을 할당, 추적 또는 재조정할 필요가 없습니다.
  • 서버 측 자동 확장: Snowflake는 프로듀서 수와 트래픽 변화에 따라 워크로드를 분산합니다.
  • 지속성 확인 응답: 제출된 데이터가 수집 서비스 내에서 영구 저장된 뒤 프로듀서에게 확인 응답이 전달됩니다.

확인 응답을 받은 후 프로듀서는 보관 중인 사본을 더 이상 유지하지 않아도 됩니다. Snowflake가 데이터를 영구 저장한 상태이기 때문입니다. 처리와 조회 가능 상태는 그 이후에 확보됩니다. 확인 응답이 모든 행의 다운스트림 처리가 완료되었음을 의미하지는 않습니다. 위에서 언급한 지연 시간 수치는 확인 응답 시간이 아니라 수집부터 쿼리 가능 시점까지의 시간을 측정한 것입니다.

프로듀서는 확인 응답을 받지 못한 이벤트를 재시도할 수 있도록 보관해야 합니다. 장애가 발생하면 수신을 일시 중단하거나, 수집을 계속해야 하는 경우에는 기존 아웃박스나 프로듀서 로컬의 영구 버퍼를 사용할 수 있습니다. 비정상 종료에도 데이터를 보존하려면, 이벤트에 대한 책임을 수락하기 전에 이벤트를 먼저 저장하고 확인 응답을 받은 후 삭제해야 합니다. SDK의 메모리 버퍼는 영구 스풀이 아닙니다.

이렇게 하면 프로듀서마다 조정 로직을 넣지 않고도, 디바이스 전체나 애플리케이션 전반의 운영 데이터를 Snowflake라는 공유 확장형 목적지로 보낼 수 있습니다.

연속적으로 쌓이는 데이터에서 비즈니스 성과로

다수의 프로듀서가 데이터를 지속적으로 생성하는 환경이라면 어디에나 동일한 직접 수집 방식을 적용할 수 있습니다.

  • 커넥티드 제품 및 IoT: 대규모 플릿 전반에서 디바이스와 네트워크 상태를 모니터링하고, 텔레메트리에서 제품 인텔리전스로 이어지는 경로를 단축하며, 디바이스별로 채널을 할당하지 않고도 새 프로듀서를 온보딩할 수 있습니다.
  • 산업 운영: 기계와 공장 현장의 신호를 Snowflake로 가져와 이상 감지, 예측 유지 보수, 운영 최적화를 더 빠르게 수행할 수 있습니다.
  • 보안 및 옵저버빌리티: 분산 에이전트의 로그, 지표, 트레이스, 행동 이벤트를 스트림해 위협 감지와 인시던트 대응을 가속화합니다.
  • 디지털 애플리케이션: 독립적으로 확장되는 서비스의 클릭스트림과 제품 이벤트를 캡처해 개인화, 실험, 준실시간 고객 분석을 지원합니다.
Quote Icon

HighByte Intelligence Hub는 제조 기업이 엣지에서 설비와 센서, 산업 시스템의 데이터를 수집하고 맥락을 부여해 Snowflake에서 활용할 수 있도록 지원합니다. Elastic Channels를 사용하면 개별 공장과 프로듀서에 걸쳐 채널을 조정하지 않고도 공유 수집 경로로 연속적인 데이터 스트림을 보낼 수 있어, 처리량을 높이면서 관리는 단순해집니다. 데이터 유실이 허용되지 않는 산업 데이터에서는 지속성 확인 응답이 특히 중요합니다. 엣지에서 데이터를 안정적으로 버퍼링해 두고 연결이 복구되면 Snowflake로 전달할 수 있기 때문입니다.”

Jeffrey Schroeder
Director of Product Management, HighByte

불필요한 복잡성을 더하지 않는 유연한 시맨틱

Snowpipe Streaming은 사용 사례에 따라 다양한 스트리밍 기능을 제공할 수 있습니다. Elastic Channels는 순서 보장 없이 최소 1회 전달을 제공합니다. 재시도 또는 재생 과정에서 중복이 발생할 수 있으므로, 중복 제거가 중요한 경우에는 안정적인 이벤트 ID를 사용해야 합니다. 기존 Named Channels는 채널별 순서 보장과 정확히 1회 전달이 필요한 워크로드에 적합합니다. 애플리케이션 요구 사항에 맞는 수집 모델을 선택하세요.

Snowflake 데이터 플랫폼에 기본 내장

데이터가 Snowflake로 직접 들어오므로, 일관된 액세스 제어와 거버넌스, 변환, 분석, AI 기능을 그대로 적용할 수 있습니다. 중간 전송 계층을 제거하면 사본 중복을 줄이고, 운영 데이터가 플랫폼의 거버넌스 경계 밖에 머무는 시간도 단축할 수 있습니다.

애플리케이션에 맞는 클라이언트 인터페이스와 대상 테이블을 선택할 수 있습니다.

  • Python, Java, Node.js SDK: 이벤트가 발생하는 대로 추가합니다. SDK는 시간 및 크기 임계값을 사용해 추가 작업을 자동으로 배치 처리하고 일시적 오류를 재시도합니다. 애플리케이션은 확인 응답을 받지 않은 데이터의 양을 제어하고, 주기적으로 지속성 확인을 기다립니다.
  • REST API: 경량 서비스, 엣지 애플리케이션, 서버리스 함수, 웹훅, 전용 SDK가 없는 언어에 적합합니다. REST를 직접 사용하는 클라이언트가 NDJSON 배치 처리와 압축을 관리합니다. 응답이 성공적으로 돌아하면 영구 저장이 완료되었음을 의미합니다.
  • 수집 대상: Snowflake 테이블과 Snowflake 관리형 Iceberg 테이블.

테이블을 선택하고, 행 또는 행 배치를 추가한 뒤 지속성 확인 응답을 받습니다. 전송 배치 처리는 SDK가 담당하며, 아래 코드 샘플은 단일 추가 작업과 확인 응답을 보여줍니다.

Diagram showing three-step process for data ingestion: choosing a Snowflake table, appending rows via SDK or REST, and receiving durable acknowledgement
그림 3: 개발자 모델 단순화

 

Elastic Channels와 지속성 확인 응답은 모든 AWS, GCP, Azure 상용 리전에서 GA로 제공됩니다.

Elastic Channels는 추가 비용 없이 사용할 수 있습니다. Snowpipe Streaming은 수집된 압축 해제 기준 데이터량에 따라 GB당 0.0037 크레딧이 청구됩니다. 자세한 내용은 Snowpipe Streaming 비용 관련 설명서를 참조하십시오.

Snowflake CoCo로 시작하기

CoCo를 통해 Elastic Channels 파이프라인 구축을 바로 시작할 수 있습니다.

CoCo에 “최신 설명서 https://docs.snowflake.com/en/user-guide/snowpipe-streaming/data-load-snowpipe-streaming-overview를 참고해 Snowpipe Streaming Elastic Channels를 시작할 수 있도록 도와줘”라고 요청해 보세요.

CoCo는 Snowflake 오브젝트, 인증 프로필, 프로듀서 코드, 검증 단계를 자동으로 구성해 줍니다.

아래 최소 구성의 Python 예제는 한 번의 추가 작업과 확인 응답을 보여줍니다. 실제 운영 환경에서는 확인 응답을 받지 못한 이벤트를 보관하고, 행마다 기다리는 대신 지속성 체크포인트에서 대기합니다.

from datetime import datetime, timezone
from snowflake.ingest.streaming import StreamingIngestClient

client = StreamingIngestClient.from_table(
    client_name="sensor_producer",
    db_name="MY_DATABASE",
    schema_name="MY_SCHEMA",
    table_name="SENSOR_READINGS",
    profile_json="profile.json",
)

channel = client.get_elastic_channel()
ack = channel.append_row_with_wait({
    "DEVICE_ID": 1,
    "READING_TS": datetime.now(timezone.utc),
    "TEMPERATURE": 21.5,
})
ack.result()  # Data has been durably accepted by Snowflake.

다음 리소스도 활용할 수 있습니다.

테이블을 생성하고, 프로듀서를 연결한 뒤, 행 또는 행 배치를 추가하면 수집 확장과 채널 수명 주기는 Snowflake가 관리합니다.

이 게시물 공유하기

Subscribe to our blog newsletter

Get the best, coolest and latest delivered to your inbox each week