원문: Introducing Streaming Observability in Workflows and DLT Pipelines
참고 요약
- 실시간 스트리밍 인사이트: Databricks Workflows와 Delta Live Tables(DLT)의 새로운 옵저버빌리티 기능이 Kafka, Kinesis, Delta 등 다양한 소스에 대한 백로그 메트릭과 알림으로 모니터링을 간소화합니다.
- 파이프라인 성능 최적화: 시각적 메트릭과 알림이 지연을 줄이고, 리소스를 관리하고, 데이터 신선도를 개선하는 데 도움을 줍니다.
- 간소화된 스케일링: 신뢰성 높고 높은 처리량의 성능을 위해 스트리밍 파이프라인을 손쉽게 추적하고, 조정하고, 최적화할 수 있습니다.
Databricks는 Workflows와 Delta Live Tables(DLT) 파이프라인 내에서 향상된 스트리밍 옵저버빌리티 기능을 소개하게 되어 기쁩니다. 이 기능은 데이터 엔지니어링 팀에게 실시간 데이터 처리를 최적화하기 위한 강력한 도구를 제공합니다. 사용자 인터페이스는 직관성을 고려하여 설계되었으며, Kafka, Kinesis, Delta, Autoloader 등 주요 스트리밍 소스 전반에 걸쳐 초 단위 백로그 지속 시간, 처리된 바이트 수, 수집된 레코드 수, 처리된 파일 수와 같은 핵심 메트릭을 모니터링할 수 있게 해줍니다. 선제적인 태스크 수준 알림의 도입으로 백로그 관리의 모호함이 제거되어, 더 효율적인 컴퓨팅 리소스 활용과 데이터 신선도 유지가 가능해졌습니다. 이러한 혁신은 조직이 자신감을 가지고 실시간 분석을 확장할 수 있도록 지원하며, 신뢰할 수 있고 고성능의 스트리밍 파이프라인을 통해 의사 결정 프로세스를 향상시키고 더 나은 결과를 이끌어냅니다.
스트리밍 모니터링과 알림에서의 일반적인 과제
백로그가 증가한다는 것은 일회성 수정부터 데이터 볼륨 증가에 대응하기 위한 재구성 또는 최적화 필요성에 이르기까지 다양한 근본적 문제를 나타내는 경우가 많습니다. 아래는 엔지니어링 팀이 스트리밍 파이프라인의 처리량과 안정성을 유지하기 위해 집중하는 몇 가지 핵심 영역입니다.용량 계획 (Capacity Planning)
이는 높은 처리량을 유지하고 시스템 안정성을 보장하기 위해 수직적으로(기존 리소스에 더 많은 파워 추가) 확장할지, 수평적으로(더 많은 노드 추가) 확장할지를 결정하는 것을 포함합니다.운영 인사이트 (Operational Insights)
버스트한 입력 패턴, 지속적인 높은 처리량 구간, 또는 다운스트림 시스템의 속도 저하를 모니터링하는 것을 포함합니다. 이상 징후나 급등을 조기에 감지하면 원활한 운영을 유지하기 위한 선제적 대응이 가능합니다.데이터 신선도 보장 (Data Freshness Guarantees)
스트림에 내장된 머신러닝 모델이나 비즈니스 로직과 같은 실시간 애플리케이션의 경우, 가장 최신 데이터에 접근하는 것이 무엇보다 중요합니다. 오래된 데이터는 부정확한 의사 결정으로 이어질 수 있으므로, 스트리밍 워크플로우에서 데이터 신선도를 우선시하는 것이 필수적입니다.오류 감지 및 트러블슈팅 (Error Detection and Troubleshooting)
이슈를 플래그로 표시하고, 실행 가능한 인사이트를 제공하고, 엔지니어가 신속하게 수정 조치를 취할 수 있도록 하는 강력한 모니터링 및 알림 시스템이 필요합니다.스트림의 백로그를 파악하는 작업은 이전에 여러 단계를 거쳐야 했습니다. Delta Live Tables에서는 파이프라인 이벤트 로그를 지속적으로 파싱하여 관련 정보를 추출해야 했습니다. Structured Streaming의 경우, 엔지니어들은 종종 Spark의
StreamingQueryListener에 의존하여 백로그 메트릭을 캡처하고 서드파티 도구로 전송했는데, 이는 추가적인 개발 및 유지 관리 부담을 수반했습니다.
알림 메커니즘을 설정하는 것도 추가적인 복잡성을 더했으며, 더 많은 커스텀 코드와 구성이 필요했습니다. 메트릭이 전달된 후에도 백로그를 해소하는 데 필요한 시간에 대한 기대치 관리라는 과제가 남았습니다. 데이터가 언제 따라잡을지 정확한 추정치를 제공하려면 처리량, 리소스 가용성, 스트리밍 워크로드의 동적 특성 등 다양한 변수가 관여하여 정밀한 예측이 어렵습니다.
Workflows와 Delta Live Tables의 백로그 메트릭 표시
스트리밍 옵저버빌리티 출시와 함께, 데이터 엔지니어는 이제 Workflows와 DLT UI의 시각적 지표를 통해 백로그를 쉽게 감지하고 관리할 수 있습니다. 스트리밍 백로그 메트릭은 Workflows UI 내의 Databricks 노트북 코드와 나란히 표시됩니다. Workflow UI 오른쪽 패널에 표시되는 스트리밍 메트릭 그래프는 백로그를 강조 표시합니다. 이 그래프는 시간에 따른 미처리 데이터의 양을 플롯합니다. 데이터 처리 속도가 데이터 입력 속도보다 느려지면 백로그가 쌓이기 시작하며, 이는 그래프에서 명확하게 시각화됩니다.Workflows UI에서의 백로그 메트릭 알림
Databricks는 시작, 지속 시간, 실패, 성공에 대한 알림을 포함하는 기존 기능에 백로그 메트릭을 추가하여 알림 기능을 더욱 강화하고 있습니다. 사용자는 Workflows UI 내에서 스트리밍 메트릭에 대한 임계값을 설정할 수 있으며, 이 한도가 초과될 때마다 알림이 트리거됩니다. 알림은 이메일, Slack, Microsoft Teams, 웹훅 또는 PagerDuty를 통해 알림을 전송하도록 구성할 수 있습니다. DLT 파이프라인에서 알림을 구현할 때 권장되는 모범 사례는 Databricks Workflow를 사용하여 오케스트레이션하는 것입니다. 위 알림은 이메일로 전달되며, Workflows UI로 직접 클릭해 이동할 수 있습니다.DLT의 실시간 백로그 메트릭을 통한 스트리밍 파이프라인 성능 향상
Delta Live Tables에서 스트리밍 파이프라인을 관리하고 최적화하는 것은 특히 Kafka와 같은 높은 처리량의 데이터 소스를 다루는 팀에게 상당한 도전입니다. 데이터 볼륨이 증가함에 따라 백로그가 증가하고, 이는 성능 저하로 이어집니다. 서버리스 DLT에서는 스트림 파이프라이닝과 수직 오토스케일링 같은 기능이 시스템 성능을 효과적으로 유지하는 데 도움이 되는 반면, 비서버리스 환경에서는 이러한 기능들을 사용할 수 없습니다. 주요 문제 중 하나는 백로그 메트릭에 대한 실시간 가시성의 부재로, 이는 팀이 신속하게 문제를 식별하고 파이프라인을 최적화하기 위한 정보에 입각한 결정을 내리는 것을 방해합니다. 현재 DLT 파이프라인은 이벤트 로그 메트릭에 의존하며, 이는 백로그를 효과적으로 추적하기 위해 커스텀 대시보드나 모니터링 솔루션이 필요합니다. 그러나 새로운 스트리밍 옵저버빌리티 기능은 데이터 엔지니어가 DLT UI를 통해 백로그를 신속하게 식별하고 관리할 수 있도록 하여 모니터링 및 최적화 효율성을 향상시킵니다.실제 사례: Kafka 스트리밍 파이프라인 최적화
Kafka에서 데이터를 수집하여 스트리밍 Delta 테이블에 쓰는 Delta Live Tables 파이프라인을 살펴보겠습니다. 아래 코드는 DLT에서 테이블 정의를 나타냅니다.kafka_stream_bronze는 파이프라인에서 생성된 스트리밍 Delta 테이블로, 지속적인 데이터 처리를 위해 설계되었습니다. maxOffsetsPerTrigger 설정은 1000으로 구성되어 DLT 파이프라인 내의 각 트리거 간격에서 처리될 수 있는 최대 Kafka 오프셋 수를 제어합니다. 이 값은 현재 데이터 크기를 기반으로 필요한 처리 속도를 분석하여 결정되었습니다. 파이프라인은 초기 설정의 일환으로 Kafka에서 과거 데이터를 처리하고 있었습니다.
초기에 Kafka 스트림은 초당 1000개 미만의 레코드를 생성했으며, 백로그 메트릭은 꾸준한 감소세(이미지 1 참조)를 보였습니다. Kafka에서 유입되는 데이터 볼륨이 증가하기 시작하자 시스템은 부하 징후를 보이기 시작했으며(이미지 2 및 3 참조), 이는 처리가 증가하는 데이터 볼륨을 따라가지 못하고 있음을 나타냈습니다.
초기 구성은 처리 지연으로 이어졌고, 인스턴스와 구성 설정에 대한 재평가가 필요해졌습니다. maxOffsetsPerTrigger를 1000으로 제한한 초기 구성이 증가하는 부하를 효과적으로 처리하기에 충분하지 않다는 것이 명확해졌습니다. 이를 해결하기 위해 아래와 같이 트리거당 최대 10,000개의 오프셋을 허용하도록 구성을 조정했습니다.
이를 통해 파이프라인이 각 트리거에서 더 큰 데이터 배치를 처리할 수 있게 되어, 처리량이 크게 향상되었습니다. 이 조정 이후 백로그 메트릭의 지속적인 감소(이미지 4 참조)가 확인되었으며, 이는 시스템이 유입되는 데이터 스트림을 성공적으로 따라잡고 있음을 나타냅니다. 감소된 백로그는 전반적인 시스템 성능을 향상시켰습니다.
이 경험은 스트림 백로그 메트릭을 시각화하는 것의 중요성을 잘 보여주며, 이는 구성에 대한 선제적 조정을 가능하게 하고 파이프라인이 변화하는 데이터 요구를 효과적으로 관리할 수 있도록 보장합니다. 백로그의 실시간 추적 덕분에 복잡한 이벤트 로그 쿼리나 Spark UI 탐색 없이 Kafka 스트리밍 파이프라인을 최적화하고, 지연을 줄이고, 데이터 처리량을 개선할 수 있었습니다.
주의 병목 현상에 뒤늦게 대응하지 마세요. 새로운 옵저버빌리티 기능을 활용하여 백로그, 신선도, 처리량을 모니터링하세요. 지금 바로 사용해보고 스트레스 없는 데이터 파이프라인 관리를 경험해보세요.