주요 컨텐츠로 이동
플랫폼

Databricks에서 Spark 선언형 파이프라인 실시간 모드 정식 출시 발표

선언적 흐름과 싱크를 통해 가장 시간이 중요한 운영 워크로드에 1초 미만의 지연 시간을 제공하세요

작성자: Jerry Peng, Abhay Bothra, Sudhanva Huruli, Navneeth Nair, Anant Pingle , Murali Talluri

  • 운영 스트리밍 워크로드에서 밀리초 수준의 엔드투엔드 처리 지연 시간을 제공하는 Spark Declarative Pipelines (SDP)의 실시간 모드(RTM) 정식 출시(General Availability)를 발표합니다.
  • 실시간 모드는 Apache Flink와 같은 별도의 특화된 엔진이 필요 없도록 만들어 주며, 단일 프레임워크 아래에서 배치, ETL, 저지연 스트리밍을 통합합니다.
  • 실시간 모드는 ForEach 싱크를 통해 실시간 연산과 운영 스토어에 대한 즉시 쓰기를 가능하게 하여, 사기 탐지 및 라이브 개인화와 같이 시간이 중요한 유스케이스를 지원합니다.

작년에 고객이 저지연 운영 유스케이스를 구축할 수 있도록 지원하는 Real-Time Mode (RTM)를 소개했습니다. 이는 고객이 기존 마이크로배치 아키텍처보다 최대 100배 빠른 밀리초 단위로 스트리밍 데이터를 처리할 수 있게 해 주었기에 판도를 바꾸는 계기가 되었습니다. 게다가 Spark와 함께 Flink 같은 별도의 특화된 엔진을 유지 관리할 필요가 없어지면서 중복 코드베이스, 단편화된 거버넌스 모델, 운영 오버헤드가 사라졌습니다.

오늘, Spark Declarative Pipelines (SDP)의 RTM이 정식 출시(GA)되었다고 발표합니다. SDP는 Databricks에서 스트리밍 및 ETL 파이프라인을 구축하는 표준 방법으로 자리 잡았으며, 의존성 해결, 증분 처리, 오케스트레이션, 장애 복구, 데이터 품질 관리를 자동으로 처리합니다. RTM을 사용하면 고객은 이러한 모든 SDP의 이점을 유지하면서 운영에 필요한 저지연 파이프라인을 구축할 수 있습니다. 사기 탐지(fraud scoring), 실시간 알림, 운영 스토어에 최신 피처 푸시 등 이제 모든 유스케이스에서 SDP를 사용할 수 있습니다.

Real-Time Mode (RTM)란 무엇인가요?

RTM은 밀리초 범위의 엔드투엔드 지연 시간을 달성하는 Spark Structured Streaming 엔진의 발전된 형태입니다. 데이터를 지속적으로 스트리밍하고, 모든 쿼리 단계를 동시에 실행하며, 데이터가 생성되는 즉시 단계 간에 전달하는 방식으로 이를 수행합니다. 아키텍처에 대한 자세한 내용은 블로그 "마이크로배치 장벽 허물기: Apache Spark Real-Time Mode의 아키텍처"를 읽어보세요.

RTM은 데이터를 밀리초 단위로 의사결정에 활용하는 모든 워크로드 를 지원할 수 있습니다. 대표적인 유스케이스로는 사기 감지, 실시간 개인화, 실시간 추천 시스템, 실시간 피처 계산 등이 있습니다. 피처 계산을 수행하는 실제 고객 워크로드에서 Apache Flink와 RTM을 벤치마크한 결과, RTM은 Flink 같은 특화된 엔진보다 최대 92% 더 빨랐습니다. 벤치마크 결과는 아래와 같습니다. 참조된 데이터셋과 쿼리에 대한 자세한 내용은 이 GitHub 저장소를 참조하세요.

Apache Spark Real-Time Mode 대 Apache Flink

Spark Declarative Pipelines에서 RTM을 사용하는 이유

고객들은 ETL 워크로드를 위해 점점 더 기본적으로 SDP를 선택하고 있습니다. RTM을 통해 이제 SDP는 운영형 저지연 스트리밍을 포함한 모든 스트리밍 워크로드를 지원하므로, 고객은 모든 파이프라인에서 단일 프레임워크를 사용할 수 있습니다. 단일 프레임워크란 하나의 모니터링 스택과 하나의 과금 모델을 의미하며, 서로 다른 API로 인한 단편화가 발생하지 않습니다.

SDP 서버리스는 이를 한 단계 더 발전시킵니다. 선택해야 할 컴퓨팅도 없고 크기를 지정해야 할 클러스터도 없습니다. 복잡한 인프라 튜닝 없이 서브세컨드 지연 시간을 얻을 수 있으며, 쿼리가 사용하는 코어에 대해서만 비용을 지불합니다.  또한 RTM 플로우는 버전 없는 업그레이드 및 적은 다운타임의 유지보수와 같은 SDP 기능을 제공하여 운영 작업과 업그레이드로 인한 중단 모두를 줄여줍니다.

SDP의 RTM이 즉각적인 영향을 미치는 유스케이스 중 하나는 실시간 피처 계산입니다. 사기 감지나 개인화를 위한 ML 모델은 정확한 예측을 위해 지난 10분 동안의 사용자의 총 거래 금액과 같은 최신 신호에 의존합니다. 이러한 롤링 윈도우 집계를 계산하고 밀리초 내에 온라인 스토어에 적재하는 영역에서 SDP의 RTM이 그 간극을 메워줍니다. Databricks Feature Store는 정확히 이 아키텍처를 사용하여 Kafka에서 온라인 피처 스토어로 200ms의 엔드투엔드 p99 지연 시간을 제공합니다.

SDP에서 RTM 시작하기

1단계: 파이프라인 구성

실시간 모드에서는 파이프라인 모드가 continuous여야 하며, spark.databricks.streaming.realTimeMode.enabled이 true로 설정되어야 합니다.

2단계: 실시간 업데이트 플로우 정의

실시간 모드에는 업데이트 플로우가 필요합니다. dp.create_sink()을 사용하여 출력 타겟을 정의한 다음, pipelines.trigger을 "RealTime"로 설정하고 target이 싱크를 가리키도록 하여 @dp.update_flow 데코레이터를 사용합니다.

지원되는 소스 및 싱크에 대한 자세한 내용은 설명서를 참조하세요.

모든 커스텀 싱크에 피처 쓰기

사기 감지나 실시간 개인화 같은 유스케이스는 피처가 실시간으로 계산되는 것뿐만 아니라 쿼리 가능한 저지연 스토어에 적재되어야 합니다. 사기 모델은 거래가 승인되기 전에 고객의 최신 거래 내역을 알아야 하고, 개인화 엔진은 사용 방금 전까지 무엇을 검색했는지 읽어와야 합니다.

이제 Lakebase, Redis 또는 기타 OLTP 스토어와 같은 커스텀 싱크에 ForEach 싱크를 사용하여 SDP에서 직접 데이터를 쓸 수 있습니다. 라이터를 정의하고 foreach_sink으로 등록한 다음 update_flow에 연결하세요.

오프라인과 온라인 간의 동기화 과정 없이, 피처가 생성된 지 밀리초 만에 운영 스토어에 적재됩니다. 응용 프로그램과 모델은 초저지연으로 이를 쿼리할 수 있습니다. 
서버리스의 RTM에 예정된 다음 기능은 무엇인가요?

  • 낮은 비용으로 RTM 파이프라인 실행: 각 쿼리마다 자체 리소스를 생성하는 대신 여러 RTM 플로우를 단일 파이프라인에 빈팩(bin-pack)합니다. 또한 시스템은 워크로드에 따라 소스 및 셔플 파티션을 자동으로 튜닝하므로 사용자가 수동으로 크기를 조정할 필요가 없습니다.
  • 확장된 싱크 지원: SDP를 위한 네이티브 Lakebase 싱크(기본 일괄 처리, 자동 재시도, UC 관리 인증 포함).

결론

RTM은 Spark Declarative Pipelines를 스트리밍 데이터에 즉각적으로 응답해야 하는 운영 중심의 지연 민감형 애플리케이션이라는 새로운 워크로드 영역으로 확장합니다. 팀에서 이미 사용하고 있는 SDP API에 서브세컨드 지연 시간을 제공하므로, 가장 시간이 중요한 파이프라인을 위해 별도의 프레임워크나 엔진을 운영할 필요가 없습니다. 사기 탐지 파이프라인, 개인화 엔진, ML 피처 계산 시스템 등 어떤 것을 구축하든 실시간 모드를 사용하면 SDP의 단순성을 유지하면서 애플리케이션에 필요한 지연 시간을 확보할 수 있습니다.

Spark Declarative Pipelines의 Real-Time Mode가 이제 정식 출시(GA)되었습니다.

기술 리소스

SDP에서 RTM을 시작하려면 다음 리소스를 확인하세요:

FAQ

Spark Declarative Pipelines의 Real-Time Mode (RTM)란 무엇인가요?

실시간 모드(RTM)를 사용하면 Spark Declarative Pipelines(SDP)가 밀리초 범위의 엔드투엔드 지연 시간으로 스트리밍 데이터를 처리할 수 있습니다. 데이터를 지속적으로 스트리밍하고, 모든 쿼리 단계를 동시에 실행하며, 데이터가 생성되는 즉시 단계 간에 전달합니다. 실시간 파이프라인은 SDP의 오케스트레이션 및 자동 장애 복구 기능의 이점을 누릴 수 있습니다.

Spark Declarative Pipelines에서 Real-Time Mode를 사용할 수 있나요?

네. Spark Declarative Pipelines의 실시간 모드가 이제 정식 출시되었습니다. Apache Spark Structured Streaming에서 이미 제공되던 실시간 모드를 SDP 파이프라인에서도 사용할 수 있게 해줍니다.

파이프라인에서 실시간 모드를 어떻게 켜나요?

파이프라인을 continuous 모드로 설정하고 spark.databricks.streaming.realTimeMode.enabled을 true(으)로 설정하세요. 그런 다음 pipelines.trigger을 "RealTime"(으)로 설정하고 싱크를 가리키는 타겟을 포함하는 업데이트 플로우를 정의하세요.

실시간 파이프라인이 Lakebase나 다른 OLTP 스토어에 쓸 수 있나요?

open, process, close을(를) 구현하는 라이터가 포함된 ForEach 싱크를 정의한 다음 실시간 플로우를 해당 싱크로 지정하세요. 이는 Lakebase, Redis 또는 기타 OLTP 스토어에서 작동합니다.

Spark Declarative Pipelines의 실시간 모드는 어떤 유스케이스를 위해 만들어졌나요?

실시간 모드는 스트리밍 데이터를 밀리초 단위로 의사 결정에 활용하는 운영 워크로드를 위해 만들어졌습니다. 사기 탐지, 실시간 개인화, 실시간 추천, 실시간 피처 계산 등이 그 예입니다. Databricks 피처 스토어는 이 아키텍처를 사용하여 Apache Kafka에서 온라인 피처 스토어까지 p99 지연 시간 200ms를 달성합니다.

(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

관련 태그:

데이터 스트리밍, 데이터 엔지니어링 , 공지사항

최신 게시물을 이메일로 받아보세요

블로그를 구독하고 최신 게시물을 이메일로 받아보세요.