Dataflow는 통합 스트림 및 일괄 데이터 처리를 대규모로 제공하는 Google Cloud 서비스입니다. Dataflow를 사용하면 하나 이상의 소스에서 읽은 데이터로 파이프라인을 만들고, 데이터를 변환하고, 데이터를 대상에 기록할 수 있습니다.
Dataflow의 일반적인 사용 사례는 다음과 같습니다.
- 데이터 이동: 하위 시스템 간 데이터 수집 또는 복제
- BigQuery와 같은 데이터 웨어하우스로 데이터를 수집하는 ETL(추출, 변환, 로드) 워크플로
- BI 대시보드 지원
- 스트리밍 데이터에 실시간 ML 적용
- 대규모 센서 데이터 또는 로그 데이터 처리
Dataflow는 일괄 및 스트림 분석 모두에 동일한 프로그래밍 모델을 사용합니다. 스트리밍 파이프라인은 매우 낮은 지연 시간을 달성할 수 있습니다. 실시간 데이터의 변동 볼륨을 수집, 처리 및 분석할 수 있습니다. 기본적으로 Dataflow는 모든 레코드에 대해 단 한 번 처리를 보장합니다. 중복을 허용하는 스트리밍 파이프라인의 경우 적어도 한 번 모드를 사용 설정하여 비용을 줄이고 지연 시간을 개선할 수 있는 경우가 많습니다.
Dataflow 이점
이 섹션에서는 Dataflow를 사용할 때의 몇 가지 이점에 대해 설명합니다.
관리형
Dataflow는 완전 관리형 서비스입니다. 즉, Google이 Dataflow 실행에 필요한 모든 리소스를 관리합니다. Dataflow 작업을 실행할 때 Dataflow 서비스는 파이프라인 실행을 위해 작업자 VM 풀을 할당합니다. 사용자는 이러한 VM을 프로비저닝하거나 관리할 필요가 없습니다. 작업이 완료되거나 취소되면 Dataflow가 VM을 자동으로 삭제합니다. 사용자에게는 작업에 사용되는 컴퓨팅 리소스에 대한 비용이 청구됩니다. 비용에 대한 자세한 내용은 Dataflow 가격 책정을 참조하세요.
확장 가능
Dataflow는 일괄 및 스트리밍 파이프라인을 대규모로 지원하도록 설계되었습니다. 데이터가 병렬로 처리되기 때문에 작업이 여러 VM에 걸쳐서 분산됩니다.
Dataflow는 추가 작업자 VM을 프로비저닝하거나 필요한 개수가 감소되었을 때 일부 작업자 VM을 종료하는 방식으로 자동 확장을 수행할 수 있습니다. 또한 파이프라인의 특성을 기준으로 작업을 최적화합니다. 예를 들어 Dataflow는 VM과 함께 작업 균형을 동적으로 조정할 수 있으므로, 병렬 작업이 보다 효율적으로 완료됩니다.
휴대성
Dataflow는 오픈소스 Apache Beam 프로젝트를 기반으로 빌드되었습니다. Apache Beam을 사용하면 언어별 SDK를 사용해서 파이프라인을 작성할 수 있습니다. Apache Beam에서는 Java, Python, Go SDK는 물론 멀티 언어 파이프라인을 지원합니다.
Dataflow는 Apache Beam 파이프라인을 실행합니다. 나중에 Apache Flink 또는 Apache Spark와 같은 다른 플랫폼에서 파이프라인을 실행할 경우 파이프라인 코드를 재작성할 필요가 없습니다.
유연성
Dataflow는 데이터 이동과 같은 비교적 간단한 파이프라인에 사용할 수 있습니다. 하지만 실시간 스트리밍 분석과 같은 보다 복잡한 경우에도 적합합니다. 일괄 처리에서 스트리밍으로 이동하거나 보다 복잡한 사용 사례로 전환할 때 필요에 따라 Dataflow 기반 솔루션을 확장할 수 있습니다.
Dataflow는 필요에 따라 파이프라인을 만들거나 실행하기 위한 여러 방법을 지원합니다.
Apache Beam SDK를 사용하여 코드를 작성합니다.
Dataflow 템플릿을 배포합니다. 템플릿을 사용하면 사전 정의된 파이프라인을 실행할 수 있습니다. 예를 들어 개발자가 템플릿을 만들면 데이터 과학자가 이를 필요에 따라 배포할 수 있습니다.
Google은 또한 일반적인 시나리오를 위한 템플릿 라이브러리를 제공합니다. Apache Beam 프로그래밍 개념을 몰라도 이러한 템플릿을 배포할 수 있습니다.
JupyterLab 노트북을 사용하여 파이프라인을 반복적으로 개발하고 실행합니다.
관측 가능성
Google Cloud 콘솔에서 Dataflow 모니터링 인터페이스를 통해 Dataflow 작업 상태를 모니터링할 수 있습니다. 모니터링 인터페이스는 파이프라인에 대한 그래픽 표현을 통해 각 파이프라인 단계의 진행 상황 및 실행 세부정보를 보여줍니다. 모니터링 인터페이스를 통해 병목 현상 또는 높은 지연 시간과 같은 문제를 쉽게 포착할 수 있습니다. 또한 CPU 사용 및 메모리 할당을 모니터링하도록 Dataflow 작업을 프로파일링할 수 있습니다.
작동 원리
Dataflow는 데이터가 일련의 단계를 통과해서 이동하는 데이터 파이프라인 모델을 사용합니다. 이러한 단계에는 소스에서 데이터 읽기, 데이터 전환 및 집계, 대상에 결과 쓰기가 포함될 수 있습니다.
파이프라인은 매우 간단한 것부터 복잡한 것까지 다양한 처리를 포함할 수 있습니다. 예를 들어 파이프라인에서 다음을 수행할 수 있습니다.
- 데이터를 있는 그대로 대상으로 이동합니다.
- 대상 시스템에서 사용 가능한 형태로 데이터를 전송합니다.
- 분석용으로 데이터를 집계, 처리 및 보강합니다.
- 데이터를 다른 데이터와 조인합니다.
Apache Beam에 정의된 파이프라인은 파이프라인 실행 방법을 지정하지 않습니다. 파이프라인 실행은 실행기의 작업입니다. 실행기의 목적은 특정 플랫폼에서 Apache Beam 파이프라인을 실행하는 것입니다. Apache Beam은 Dataflow 실행기를 포함하여 여러 실행기를 지원합니다.
Apache Beam 파이프라인에서 Dataflow를 사용하려면 Dataflow 실행기를 지정합니다. 실행기는 실행 가능한 코드 및 종속 항목을 Cloud Storage 버킷에 업로드하고 Dataflow 작업을 만듭니다. 그런 후 Dataflow는 파이프라인 실행을 위해 VM 풀을 할당합니다.
다음 다이어그램은 Dataflow 및 기타 Google Cloud 서비스를 사용하는 일반적인 ETL 및 BI 솔루션을 보여줍니다.
이 다이어그램은 다음 단계를 보여줍니다.
- Pub/Sub가 외부 시스템에서 데이터를 수집합니다.
- Dataflow가 Pub/Sub에서 데이터를 읽고 이를 BigQuery에 작성합니다. 이 단계에서 Dataflow는 데이터를 변환하거나 집계할 수 있습니다.
- BigQuery는 데이터 웨어하우스로 작동하여 데이터 분석가가 데이터에 대해 임시 쿼리를 실행할 수 있게 해줍니다.
- Looker는 BigQuery에 저장된 데이터로부터 실시간 BI 인사이트를 제공합니다.
기본 데이터 이동 시나리오의 경우 Google 제공 템플릿을 실행할 수 있습니다. 일부 템플릿은 JavaScript로 작성된 사용자 정의 함수(UDF)를 지원합니다. UDF를 사용하면 템플릿에 커스텀 처리 논리를 추가할 수 있습니다. 보다 복잡한 파이프라인의 경우에는 Apache Beam SDK로 시작합니다.
다음 단계
- Apache Beam에 대한 자세한 내용은 Apache Beam 프로그래밍 모델을 참조하세요.
- Apache Beam SDK를 설치합니다.
- Java 빠른 시작, Python 빠른 시작 또는 Go 빠른 시작을 따라 첫 번째 파이프라인을 만듭니다.
- Dataflow 템플릿을 사용하여 스트리밍 파이프라인을 만들어 Dataflow 템플릿에 대해 알아보세요.