Elastic Channels 제한 사항과 고려사항
Elastic Channels 제한 사항과 고려사항
Elastic Channels에 구체적으로 적용되는 제한 사항과 고려사항을 알려드릴게요. Named Channel 한도, 일반 SDK 한도, 서비스 수준 한도는 고성능 아키텍처 Snowpipe Streaming의 제한 사항과 고려사항을 참고하세요.
출처: Snowflake 문서
본문
SDK 버전 요구사항
Elastic Channels에는 Java, Python, Node.js 모두 SDK 버전 1.8.0 이상이 필요합니다. 그 이전 SDK 버전에는 GA Elastic Channels API가 포함되지 않아요.
전달과 순서
- At-least-once 전달: Elastic Channels는 exactly-once 전달을 보장하지 않습니다. 모호한 실패(타임아웃, 네트워크 오류, 5xx) 후 재시도하면 대상 테이블에 중복 행이 생길 수 있어요.
- 순서 보장 없음: 여러 프로듀서가 동시에, 또는 단일 프로듀서가 연속 append로 제출한 행들은 제출된 순서대로 대상 테이블에 나타난다고 보장되지 않습니다.
- Offset token 없음: Elastic Channels는 offset token, continuation token, 커밋된 오프셋 조회, 서버 측 중복 제거를 사용하지 않습니다.
워크로드가 순서 있는 수입이나 exactly-once 전달을 요구한다면 Named Channels를 사용하세요.
Append tokens
- Append token은 콜백에서 반환되어 제출된 메시지에 결과를 매칭하는 식별자입니다.
- Snowflake로 전송되지 않으며 서버 측 중복 제거, 재생, 순서를 제공하지 않아요.
- Token은 append가 승인될 때까지 SDK 메모리에 보관됩니다. Token을 작게 유지하세요(간결한 이벤트나 append ID). 큰 token은 프로듀서 메모리 사용량을 늘립니다.
REST 페이로드 한도
각 Elastic REST 요청은 최대 4 MB의 페이로드 데이터(압축을 쓰면 압축 후 네트워크로 보내지는 페이로드 크기)를 담을 수 있어요. ZSTD나 Gzip 압축으로 요청 크기를 줄이고 요청당 더 많은 행을 담으세요. Named Channel REST 요청도 압축을 쓰면 압축 후 네트워크로 보내지는 페이로드에 같은 4 MB 한도가 있습니다.
요청 및 속도 한도
- Snowflake는 요청 또는 바이트 속도 한도를 초과하면 HTTP 429를 반환할 수 있습니다.
- 직접 REST 클라이언트는 재시도 지연에 무작위 변동(jitter)이 있는 지수 백오프로 429 응답을 재시도해야 합니다.
- SDK 사용자는 내부 재시도가 수락된 append를 처리하게 두고, 로컬 배압이 새 append를 거부하면 수입을 일시 중지하세요.
- 고정된 예약된 요청 비율을 가정하지 마세요.
채널 라이프사이클
- Elastic Channel 라이프사이클은 클라이언트에 묶여 있습니다. Elastic Channel에 대한 별도의 close나 drop 작업은 없어요.
getElasticChannel() (또는 언어별 동등 메서드)은 반복 호출 시 같은 채널 인스턴스를 반환합니다.- 클라이언트를 닫으면 Elastic Channel이 닫힙니다. 이후의 어떤 append도 동기적 closed-client 오류를 일으킵니다.
클라이언트 측 버퍼 내구성
- SDK는 시간·크기 임계값으로 자동으로 행을 일괄 처리하고, 클라이언트 프로세스가 살아 있는 동안 일시적 실패를 재시도합니다.
- 버퍼링된 행과 SDK 복구 상태는 프로세스 크래시, 노드 유실, 강제 종료를 가로질러 영속화되지 않습니다.
- 수입을 일시 중지하면 미완료 작업이 제한되지만 메모리 전용 이벤트를 크래시 내구성 있게 만들지는 않아요.
- 재생성하거나 재생할 수 없는 손실 민감 데이터는 그 책임을 받아들이기 전에 이벤트를 영속화하고 내구성 승인까지 보관하세요. 애플리케이션 관리 내구성 스토리지는 Kafka 없이 보존을 제공할 수 있습니다. 로컬 스토리지는 용량과 호스트 유실 한도가 있어요.
이 제한은 승인 전에 적용됩니다. 내구성 승인 후에는 Snowflake가 append를 내구성 있게 버퍼링했습니다. 배포 선택은 미승인 데이터 보호를 참고하세요.
지원되지 않는 Named Channel 작업
다음 Named Channel 작업은 Elastic Channels에 적용되지 않습니다.
- 이름으로 채널 열기·닫기
- 채널 삭제
- Offset tokens와
getLatestCommittedOffsetToken - Continuation tokens
- 채널 시퀀서 작업
waitForCommit 또는 이에 상당하는 offset-commit 대기
지원되는 대상
- 표준 Snowflake 테이블
- 파티션된 테이블을 포함한 Snowflake 관리 Iceberg v2·v3 테이블
Iceberg 세부 사항은 Apache Iceberg™ 테이블과 함께하는 Snowpipe Streaming 고성능 아키텍처를 참고하세요.
스키마 진화
스키마 진화는 비동기이며 append가 내구성 있게 승인된 후에 완료될 수 있어요. 지원되는 추론 타입은 표준 테이블과 관리형 Iceberg 버전에 따라 다릅니다. 전체 제약 사항은 스키마 진화를 참고하세요.
일반 서비스 한도
테이블 수준 처리량 한도, pipe 한도, SDK 아키텍처 제약(지원 아키텍처, glibc 버전, 타임존, 인증)은 고성능 아키텍처 Snowpipe Streaming의 제한 사항과 고려사항을 참고하세요.