주요 컨텐츠로 이동

수천 대의 항공기에서 수백만 개의 이벤트를 하나의 선언적 파이프라인으로 처리하기

Lakeflow 선언형 파이프라인과 PySpark 사용자 정의 데이터 소스를 이용한 확장 가능한 시스템 구축

Map with blue triangles and red arrows showing wind direction.

Published: August 22, 2025

솔루션2분 소요

작성자: Frank Munz

Summary

  • PySpark 사용자 정의 데이터 소스와 Lakeflow 스트리밍 테이블을 사용하여 실시간 ADS-B 비행 데이터를 스트림합니다.
  • 물질화된 뷰와 AI/BI Genie 또는 SQL에서 즉시 쿼리할 수 있는 메트릭을 사전 집계합니다.
  • 이 파이프라인이 생산 규모—하루에 수억 건의 이벤트까지—에서 실행될 수 있게 하는 설계 선택, 함정, 데이터 품질 검사를 배웁니다.

매 초마다 수만 대의 항공기가 전 세계적으로 IoT 이벤트를 생성합니다 - 그랜드 캐년 위를 날아가는 4명의 관광객을 태운 작은 세스나에서부터 570명의 승객을 태우고 프랑크푸르트를 출발하여 뉴욕으로 가는 대서양 루트에서 위치, 고도, 비행 경로를 방송하는 에어버스 A380까지.

날씨와 교통 상황이 변화함에 따라 복잡한 비행 경로를 지속적으로 업데이트해야 하는 항공 교통 관제사처럼, 데이터 엔지니어들은 고처리량, 저지연, 임무 중요도가 높은 항공 데이터 스트림을 처리할 수 있는 플랫폼이 필요합니다. 이러한 임무 중요 시스템에서는 처리를 일시 중지하는 것이 선택사항이 아닙니다.

이런 데이터 파이프라인을 구축하려면 수백 줄의 코드를 다루고, 컴퓨팅 클러스터를 관리하며, 복잡한 권한을 설정하여 ETL을 작동시켜야 했습니다. 그런 날들은 이제 끝났습니다. Lakeflow 선언형 파이프라인을 사용하면, 서버리스 컴퓨팅에서 실행되는 일반 SQL(또는 Python을 선호한다면)을 사용하여 몇 분 안에 생산 준비가 된 스트리밍 파이프라인을 구축할 수 있습니다. 이는 통합된 거버넌스와 세밀한 접근 제어를 제공합니다.

이 글은 교통, 물류, 화물 사용 사례의 아키텍처를 안내합니다. 현재 북미 상공을 비행 중인 모든 항공기로부터 실시간 항공 전자 데이터를 수집하는 파이프라인을 보여줍니다. 이는 몇 줄의 선언형 코드로 실시간 비행 상태 업데이트를 처리합니다.

실제 환경에서의 대규모 스트리밍

대부분의 스트리밍 튜토리얼은 실제 세계 예제를 약속하지만, 생산 규모의 볼륨, 속도, 다양성을 간과하는 합성 데이터 세트를 제공합니다. 항공 산업은 세계에서 가장 요구사항이 높은 실시간 데이터 스트림 중 일부를 처리합니다--항공기 위치는 초당 여러 번 업데이트되며, 안전 중심의 애플리케이션에 대한 낮은 지연 요구사항이 있습니다.

OpenSky Network는 옥스퍼드 대학과 다른 연구소의 연구자들이 진행하는 크라우드 소싱 프로젝트로, 비상업적 용도로 실시간 항공 전자 데이터에 무료로 접근할 수 있게 해줍니다. 이를 통해 우리는 진정으로 매력적인 데이터로 엔터프라이즈 등급의 스트리밍 아키텍처를 보여줄 수 있습니다.

휴대폰에서 비행기를 추적하는 것은 캐주얼한 재미이지만, 같은 데이터 스트림은 수십억 달러 규모의 물류 작업을 지원합니다: 항구 당국은 지상 작업을 조정하고, 배송 서비스는 비행 일정을 알림에 통합하며, 화물 운송업자는 전세계 공급 체인을 통한 화물 움직임을 추적합니다.

아키텍처 혁신: 사용자 정의 데이터 소스를 일급 시민으로

전통적인 아키텍처는 외부 시스템을 데이터 플랫폼에 연결하기 위해 상당한 코딩과 인프라 오버헤드를 필요로 합니다. 제3자 데이터 스트림을 수집하려면 일반적으로 제3자 SaaS 솔루션에 대한 비용을 지불하거나 인증 관리, 흐름 제어 및 복잡한 오류 처리를 포함한 사용자 정의 커넥터를 개발해야 합니다.

데이터 인텔리전스 플랫폼에서는, Lakeflow Connect 가 Salesforce, Workday, ServiceNow와 같은 기업 비즈니스 시스템의 복잡성을 해결하며, 인증, 변경 데이터 캡처, 오류 복구를 자동으로 처리하는 관리형 커넥터의 수를 늘려줍니다.

Lakeflow의 OSS 기반인 Apache Spark™는 Parquet, Iceberg, Delta.io와 같은 클라우드 저장 형식부터 Apache Kafka, Pulsar, Amazon Kinesis와 같은 메시지 버스까지 수십 가지 기술 시스템에서 읽을 수 있는 내장 데이터 소스의 광범위한 생태계를 제공합니다. 예를 들어, spark.readStream.format("kafka")를 사용하여 쉽게 Kafka 토픽에 연결할 수 있습니다. 이 익숙한 구문은 모든 지원 데이터 소스에서 일관되게 작동합니다.

그러나 Lakeflow Connect가 다루는 기업 시스템과 Spark의 기술 기반 커넥터 사이에서 임의의 API를 통해 제3자 시스템에 접근할 때 차이가 있습니다. 일부 서비스는 REST API를 제공하지만 어느 카테고리에도 속하지 않으며, 그럼에도 불구하고 조직들은 이러한 데이터를 그들의 레이크하우스에 필요로 합니다.

PySpark 사용자 정의 데이터 소스 는 API 통합을 다른 데이터 소스만큼 간단하게 만드는 깔끔한 추상화 계층으로 이 공백을 채워줍니다.

이 블로그에서는 OpenSky Network를 위한 PySpark 사용자 정의 데이터 소스를 구현하고 간단한 pip 설치로 사용할 수 있게 만들었습니다. 데이터 소스는 API 호출, 인증, 오류 처리를 캡슐화합니다. 위의 예제에서 "kafka"를 "opensky"로 간단히 바꾸면 나머지는 동일하게 작동합니다:

이 추상화를 사용하면, 팀은 통합 오버헤드보다는 비즈니스 로직에 집중할 수 있으며, 모든 데이터 소스에서 동일한 개발자 경험을 유지할 수 있습니다.

사용자 정의 데이터 소스 패턴은 금융 시장 데이터, IoT 센서 네트워크, 소셜 미디어 스트림, 예측 유지 보수 시스템 등의 외부 API에 대해 원활하게 작동하는 일반적인 아키텍처 솔루션입니다. 개발자들은 HTTP 연결 풀링, 속도 제한, 인증 토큰에 대해 걱정하지 않고 익숙한 Spark DataFrame API를 활용할 수 있습니다.
 
이 접근 방식은 통합 노력이 재사용 가능한 커넥터를 구축하는 것을 정당화하고, 엔터프라이즈 등급의 관리 솔루션이 존재하지 않는 제3자 시스템에 특히 유용합니다.

스트리밍 테이블: 정확히 한 번의 수집을 간단하게 만들기

이제 사용자 정의 데이터 소스가 API 연결성을 어떻게 처리하는지 확인했으니, 스트리밍 테이블 이 이 데이터를 어떻게 안정적으로 처리하는지 살펴봅시다. IoT 데이터 스트림은 중복 감지, 늦게 도착하는 이벤트, 그리고 처리 보장 등에 대해 특정한 도전을 제시합니다. 전통적인 스트리밍 프레임워크는 정확한 한 번의 의미를 달성하기 위해 여러 컴포넌트 간에 신중한 조정이 필요합니다.

Lakeflow 선언형 파이프라인의 스트리밍 테이블은 이러한 복잡성을 선언형 의미 체계를 통해 해결합니다. Lakeflow는 낮은 지연 처리와 고처리량 애플리케이션 모두에서 뛰어납니다.

이는 사용자 정의 데이터 소스로 구동되는 스트리밍 테이블을 보여주는 첫 번째 기사 중 하나일 수 있지만, 마지막은 아닙니다. 선언형 파이프라인과 PySpark 데이터 소스가 이제 Apache Spark™에서 오픈 소스로 널리 사용 가능하므로, 이러한 기능이 개발자들에게 점점 더 접근 가능해지고 있습니다.

위의 코드는 항공 전자 데이터를 데이터 스트림으로 접근합니다. 동일한 코드는 스트리밍과 배치 처리에 대해 동일하게 작동합니다. Lakeflow를 사용하면 파이프라인의 실행 모드를 구성하고 Lakeflow Jobs와 같은 워크플로우를 사용하여 실행을 트리거할 수 있습니다.

이 간단한 구현은 선언형 프로그래밍의 힘을 보여줍니다. 위의 코드는 지속적으로 항공 전자 데이터를 실시간으로 수집하는 스트리밍 테이블을 결과로 가져옵니다 - 이것은 현재 미국 상공을 날고 있는 약 10,000대의 비행기로부터 데이터를 스트리밍하는 완전한 구현입니다(시간에 따라 다름). 플랫폼은 나머지 모든 것 - 인증, 증분 처리, 오류 복구, 스케일링을 처리합니다.
 
비행기의 호출 신호, 현재 위치, 고도, 속도, 방향, 목적지 등 모든 세부 사항이 스트리밍 테이블로 수집됩니다. 이 예는 코드와 같은 스니펫이 아니라, 대규모로 실제, 실행 가능한 데이터를 제공하는 구현입니다.

 

전체 애플리케이션은 새로운 Lakeflow 선언형 파이프라인 에디터를 사용하여 처음부터 상호 작용적으로 쉽게 작성할 수 있습니다. 새로운 에디터는 기본적으로 파일을 사용하므로, 데이터소스 패키지 pyspark-data-sources 를 노트북에서 pip install을 실행하는 대신 에디터의 설정/환경에서 직접 추가할 수 있습니다.

뒷단에서, Lakeflow는 스트리밍 인프라를 관리합니다: 자동 체크포인팅은 실패 복구를 보장하고, 증분 처리는 중복 계산을 제거하며, 정확한 한 번의 보장은 데이터 중복을 방지합니다. 데이터 엔지니어는 비즈니스 로직을 작성하고, 플랫폼은 운영적 우수성을 보장합니다.

선택적 구성

위의 예제는 독립적으로 작동하며 상자에서 완전히 기능합니다. 그러나, 생산 배포는 일반적으로 추가 구성을 필요로 합니다. 실제 시나리오에서 사용자는 OpenSky 데이터 수집을 위한 지리적 지역을 지정하거나, API 비율 제한을 늘리기 위해 인증을 활성화하고, 나쁜 데이터가 시스템에 들어가는 것을 방지하기 위해 데이터 품질 제약을 적용해야 할 수 있습니다.

지리적 지역

주요 대륙과 지리적 지역에 대해 사전 정의된 경계 상자를 지정하여 특정 지역 위의 비행을 추적할 수 있습니다. 데이터 소스에는 아프리카, 유럽, 북아메리카 등을 포함한 지역 필터가 포함되어 있으며, 전세계적인 범위를 위한 글로벌 옵션도 있습니다. 이러한 내장된 지역들은 데이터의 반환 볼륨을 제어하면서 분석을 특정 사용 사례에 관련된 지리적 영역에 집중하게 도와줍니다.

요율 제한 및 OpenSky 네트워크 인증

OpenSky 네트워크와의 인증은 생산 배포에 중요한 이점을 제공합니다. OpenSky API는 실시간 비행 추적 애플리케이션에 필수적인 하루에 100회(익명)에서 4,000회(인증됨)로 요율 제한을 늘립니다.

인증을 위해 https://opensky-network.org 에서 API 자격 증명을 등록하고 데이터 소스를 구성할 때 client_id와 client_secret을 옵션으로 제공합니다. 이러한 자격 증명은 코드에 하드코딩되는 대신 Databricks 비밀로 저장되어야 합니다.

OpenSky Network에 데이터를 공급하면 이 제한을 하루에 8,000회 호출로 늘릴 수 있다는 점을 유의하십시오. 이 재미있는 프로젝트는 귀하의 발코니에 ADS-B 안테나를 설치하여 이 군중 소스화된 이니셔티브에 기여하는 것을 포함합니다.

기대치를 통한 데이터 품질

데이터 품질은 신뢰할 수 있는 분석에 있어 중요합니다. 선언적 파이프라인 기대치는 스트리밍 데이터를 자동으로 검증하는 규칙을 정의하며, 오직 깨끗한 레코드만 테이블에 도달하도록 보장합니다.

이러한 기대치는 누락된 값, 유효하지 않은 형식, 비즈니스 규칙 위반을 잡아낼 수 있습니다. 나쁜 레코드를 삭제하거나, 검토를 위해 격리하거나, 검증이 실패할 때 파이프라인을 중단할 수 있습니다. 다음 섹션의 코드는 지역 선택, 인증, 데이터 품질 검증을 생산 사용에 대해 구성하는 방법을 보여줍니다.

수정된 스트리밍 테이블 예시

아래 구현은 지역 파라미터와 인증이 있는 스트리밍 테이블의 예를 보여주며, 데이터 소스가 지리적 필터링과 API 자격 증명을 어떻게 처리하는지 보여줍니다. 데이터 품질 검증은 항공기 ID(국제 민간 항공 기구 - ICAO에 의해 관리)와 비행기의 좌표가 설정되어 있는지 확인합니다.

머티리얼라이즈드 뷰: 분석을 위한 사전 계산된 결과

스트리밍 데이터에 대한 실시간 분석은 일반적으로 스트림 처리 엔진, 캐싱 계층, 분석 데이터베이스를 결합하는 복잡한 아키텍처를 필요로 합니다. 각 구성 요소는 운영 오버헤드, 일관성 문제, 추가 실패 모드를 도입합니다.

Lakeflow 선언적 파이프라인의 물리화 된 뷰 는 서버리스 컴퓨트로 기본 런타임을 추상화함으로써 이러한 아키텍처 오버헤드를 줄입니다. 간단한 SQL 문은 새로운 데이터가 도착함에 따라 자동으로 업데이트되는 사전 계산된 결과를 포함하는 물리화 뷰를 생성합니다. 이러한 결과는 대시보드, Databricks 앱, 또는 Lakeflow Jobs로 구현된 워크플로우에서 추가 분석 작업에 최적화되어 있습니다.

이 물리화된 뷰는 스트리밍 테이블에서 항공기 상태 업데이트를 집계하여 비행 패턴, 속도, 고도에 대한 전세계 통계를 생성합니다. 새로운 IoT 이벤트가 도착하면, 뷰는 서버리스 Lakeflow 플랫폼에서 증분적으로 업데이트됩니다. 매일 거의 10억 개의 이벤트를 다시 계산하는 대신 몇 천 개의 변경만 처리함으로써 처리 시간과 비용이 크게 줄어듭니다.

Lakeflow 선언형 파이프라인에서의 선언적 접근법은 변경 데이터 캡처, 증분 계산, 결과 캐싱에 대한 전통적인 복잡성을 제거합니다. 이를 통해 데이터 엔지니어는 대시보드, Databricks 애플리케이션, 또는 다른 하위 사용 사례에 대한 뷰를 생성할 때 분석 로직에만 집중할 수 있습니다.

AI/BI Genie: 실시간 인사이트를 위한 자연어

더 많은 데이터는 종종 새로운 조직적인 도전을 만들어냅니다. 실시간 데이터가 사용 가능하더라도, 일반적으로 기술 데이터 엔지니어링 팀만이 파이프라인을 수정하므로, 분석 비즈니스 팀은 ad hoc 분석을 위해 엔지니어링 리소스에 의존합니다.

AI/BI Genie 는 모든 사람을 위한 스트리밍 데이터에 대한 자연어 쿼리를 가능하게 합니다. 비기술 사용자는 평문 영어로 질문을 할 수 있고, 쿼리는 실시간 데이터 소스에 대한 SQL로 자동 변환됩니다. 생성된 SQL을 검증할 수 있는 투명성은 AI 환영에 대한 중요한 보호 장치를 제공하면서도 쿼리 성능과 거버넌스 표준을 유지합니다.

뒷단에서, Genie는 Unity 카탈로그 접근 규칙을 따르면서 질문을 이해하기 위해 에이전트 추론을 사용합니다. 확실하지 않을 때는 명확한 설명을 요구하고, 예제 쿼리와 지시를 통해 비즈니스 용어를 배웁니다.

예를 들어, "현재 추적되고 있는 고유한 비행기는 몇 대인가요?"는 내부적으로 SELECT COUNT(DISTINCT icao24) FROM ingest_flights로 번역됩니다. 마법 같은 것은 자연어 요청에서 열 이름을 알 필요가 없다는 것입니다.

또 다른 명령어인 "모든 항공기에 대한 고도 대 속도 그래프 그리기," 는 속도와 고도의 상관 관계를 보여주는 시각화를 생성합니다. 그리고 "지도에 모든 비행기의 위치를 표시하라" 는 항공 이벤트의 공간 분포를 보여주며, 고도는 색상 코딩을 통해 표현됩니다.

이 기능은 실시간 분석에 매우 중요하며, 상황이 변함에 따라 비즈니스 질문이 빠르게 나타나는 경우가 많습니다. 엔지니어링 자원을 기다리고 복잡한 시간 창 집계를 가진 사용자 정의 쿼리를 작성하는 대신, 도메인 전문가들은 스트리밍 데이터를 직접 탐색하며, 즉시 운영 결정을 이끄는 통찰력을 발견합니다.

실시간 데이터 시각화

귀하의 데이터가 Delta 또는 Iceberg 테이블로 사용 가능하게 되면, 거의 모든 시각화 도구나 그래픽 라이브러리를 사용할 수 있습니다. 예를 들어, 여기에 보여진 시각화는 Dash를 사용하여 Lakehouse 애플리케이션으로 실행하면서 시간 경과 효과를 사용하여 만들어졌습니다.

이 접근법은 현대 데이터 플랫폼이 데이터 엔지니어링을 단순화하는 것뿐만 아니라 팀이 실시간으로 시각적으로 영향력 있는 통찰력을 제공할 수 있도록 하는 방법을 보여줍니다.

데이터 엔지니어링의 미래에 대해 배운 7가지 교훈

이 실시간 항공 전자 파이프라인을 구현함으로써 저는 현대 스트리밍 데이터 아키텍처에 대한 기본적인 교훈을 배웠습니다.

이 일곱 가지 통찰력은 보편적으로 적용됩니다: 스트리밍 분석은 자연어를 통해 접근 가능할 때, 데이터 엔지니어가 인프라 대신 비즈니스 로직에 집중할 때, 그리고 AI가 운영 결정을 즉시 이끌어낼 때 경쟁 우위를 창출합니다.

1. 사용자 정의 PySpark 데이터 소스가 간극을 메꾸다
PySpark 사용자 정의 데이터 소스는 Lakeflow의 관리형 커넥터와 Spark의 기술적 연결성 사이의 간극을 메웁니다. 그들은 API 복잡성을 Spark 개발자에게 익숙한 재사용 가능한 컴포넌트로 캡슐화합니다. 이러한 커넥터를 구현하는 것은 쉽지 않지만, Databricks Assistant와 다른 AI 도우미들은 개발 과정에서 충분한 가치 있는 지침을 제공합니다.

이에 대해 글을 쓰거나 심지어 사용하는 사람이 많지 않지만, PySpark 사용자 정의 데이터 소스는 더 나은 벤치마킹, 개선된 테스팅, 더 포괄적인 튜토리얼 및 흥미로운 컨퍼런스 토크 등 많은 가능성을 열어줍니다.

2. 선언형은 개발을 가속화합니다
새로운 선언형 파이프라인과 PySpark 데이터 소스를 사용하여, 코드 스니펫처럼 보이는 것이 완전한 구현입니다. 코드 줄 수를 줄이는 것은 개발자 생산성뿐만 아니라 운영 신뢰성에 관한 것입니다. 선언형 파이프라인은 상태 관리, 체크포인트, 오류 복구와 같은 명령형 스트리밍 코드를 괴롭히는 버그 전체 클래스를 제거합니다.

3. 레이크하우스 아키텍처는 단순화합니다
레이크하우스는 모든 것을 한 곳에 모아냈습니다—데이터 레이크, 웨어하우스, 그리고 모든 도구들.

개발 중에는, 나는 같은 테이블을 사용하여 수집 파이프라인을 구축하거나, DBSQL에서 분석을 실행하거나, AI/BI Genie 또는 Databricks 앱을 사용하여 결과를 시각화하는 것 사이를 빠르게 전환할 수 있었습니다. Databricks Assistant가 항상 어디에나 있어서 워크플로우가 원활해졌고, 플랫폼에서 실시간 시각화를 배포할 수 있는 능력이 있습니다.

데이터 플랫폼으로 시작한 것이 더 이상의 컨텍스트 전환 또는 도구 조정 없이 나의 완전한 개발 환경이 되었습니다.

4. 시각화 유연성이 중요합니다
레이크하우스 데이터는 빠른 탐색을 위한 클래식 노트북부터 즉시 대시보드를 위한 AI/BI Genie, 풍부하고 상호 작용적인 경험을 위한 사용자 정의 웹 앱에 이르기까지 다양한 시각화 도구와 접근 방식에 접근할 수 있습니다. 실제 예제를 보려면 이 게시물에서 이전에 Dash를 레이크하우스 애플리케이션으로 사용한 방법을 확인해 보세요.

5. 스트리밍 데이터가 대화형이 됩니다
수년 동안, 실시간 인사이트에 접근하려면 깊은 기술적 전문성, 복잡한 쿼리 언어, 그리고 데이터와 의사 결정자 사이에 장벽을 만드는 전문 도구가 필요했습니다.

이제 Genie를 사용하여 실시간 데이터 스트림에 대해 직접 질문을 할 수 있습니다. Genie는 스트리밍 데이터 분석을 기술적인 도전에서 간단한 대화로 변환합니다.

6. AI 툴링 지원은 배수기입니다
AI 지원이 레이크하우스 전체에 통합되면서 제가 얼마나 빠르게 작업할 수 있는지가 근본적으로 변했습니다. 가장 인상적이었던 것은 Genie가 플랫폼 컨텍스트에서 어떻게 배웠는지였습니다.

AI 지원 도구는 당신의 기술을 향상시킵니다. 그 진정한 힘은 당신이 강력한 기술적 기반을 구축할 때 해제됩니다.

 

7. 인프라와 거버넌스 추상화가 비즈니스 중심을 만든다
플랫폼이 운영 복잡성을 자동으로 처리하면—스케일링부터 오류 복구까지—팀은 기술 제약을 싸우는 대신 비즈니스 가치를 추출하는 데 집중할 수 있습니다. 이러한 변화는 인프라 관리에서 비즈니스 로직으로의 전환이 스트리밍 데이터 엔지니어링의 미래를 대표합니다.

요약하자면, 스트리밍 데이터 엔지니어링의 미래는 AI 지원, 선언형, 그리고 비즈니스 결과에 초점을 맞춘 것입니다. 이러한 구조적 변화를 받아들이는 조직들은 자신들의 데이터에 대해 더 나은 질문을 하고 더 많은 솔루션을 더 빠르게 구축하게 될 것입니다.

더 알고 싶으신가요?

실습해 보세요!

완전한 비행 추적 파이프라인은 Databricks 무료 에디션에서 실행될 수 있으며, Lakeflow를 GitHub 저장소에 명시된 몇 가지 간단한 단계만으로 누구나 접근할 수 있게 만듭니다.

 

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

게시물을 놓치지 마세요

관심 있는 카테고리를 구독하고 최신 게시물을 받은편지함으로 받아보세요