네이버 클라우드 플랫폼의 ETL 서비스 Data Flow 실습

NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM
8 min readDec 22, 2023

--

데이터의 중요성이 커지며 다양한 데이터 처리가 필요해지고 있습니다. 그러나 데이터 처리를 막상 해보면 스토리지를 비롯한 여러 가지 서비스와의 복잡한 연관 관계를 정의하는 것부터, 전용 Framework 도입(Spark, Hive, Flink 등), 그로 인한 서비스 운영 비용 상승 등 어려움과 마주하기 마련입니다.

네이버 클라우드 플랫폼의 ETL 서비스 Data Flow 활용하면 이러한 어려움을 쉽게 해결할 수 있습니다. 본 포스팅을 통해Data Flow 를 활용한 데이터 처리 예제를 공유해 드리겠습니다.

이런 분들이 보면 좋아요!

Data Flow 는 무엇인가요?

Data Flow는 네이버 클라우드 플랫폼 (NAVER Cloud Platform)에서 제공하는 완전 관리형 ETL(Extract, Transform, Load) 서비스입니다. 데이터 추출, 변환뿐 아니라 다양한 데이터 스토어에 로드할 수 있습니다.

Data Flow는 클라우드 환경에서 데이터 통합 및 준비 과정을 간소화하고, 자동화하기 위해 설계된 서비스입니다. Data Flow를 사용하면 데이터 통합 및 ETL 프로세스를 더 효율적으로 관리하고, 클라우드 기반의 유연한 환경에서 대용량 데이터를 처리할 수 있습니다.

예제 소개

목표

  • Airflow를 사용하여 Data Flow가 작업을 처리할 수 있게 데이터를 삭제, 이동 시킵니다.
  • Object Stroage에 쌓이는 csv 포맷의 Flow log 데이터를 주기적으로 parquet으로 압축합니다.
  • inbound 트래픽 중 source ip 리스트를 저장합니다.

아키텍처

1. 사전작업

1.1 서버 생성

네이버 클라우드 플랫폼 콘솔 [Server > Server] 메뉴에서 서버를 생성합니다. 본 예제에서는 테스트 편의성을 위해 public subnet으로 셋업 하였습니다.

네이버 클라우드 플랫폼 서버 생성 화면

1.2 Flow Log 신청

[Object Storage > Bucket Management] 메뉴에서 Flow log를 저장하기 위한 bucket(버킷) 을 생성합니다.

버킷 이름은 dataflow-test-bucket으로 설정

[Server > Network Interface] 으로 이동한 후 Flow Log 저장소를 위한 bucket 을 생성합니다.

Flow log 설정 화면

약 20분 후 아래와 같은 포맷의 데이터가 지정한 Bucket에 생성됩니다.

Bucket에 저장된 Flow log

1.3 Airflow 셋업

A. 아래 Git 예제를 pull한 후 docker-compose를 사용해서 airflow를 동작 시킵니다.(README.md 참조)

이후 Airflow에서 주기적으로 Flow Log 데이터를 삭제하고 path 변경을 합니다.

B. Airflow가 동작하는 서버로 접속한 후 login 합니다.

  • ex: localhost:8080, default id/pwd: airflow / airflow

C. Variable 을 등록합니다.

Access Key, Flow Log가 저장되는 bucket, Network Interface ID(NIC_ID), Secret Key를 아래와 같이 추가하면 됩니다. Network Interface ID(NIC_ID) 는 앞서 진행한 Flow Log 신청 화면에서 ‘Network Interface 이름’에서 찾을 수 있습니다.

Access Key, buecket, nic_ID, secret key 추가

Variable을 등록하면 아래와 같이 DAG가 정상적으로 생성된 것을 볼 수 있습니다. 그리고 Actions 아래 play 모양의 버튼을 누르면 작업이 진행됩니다.

DAG 생성 화면
Actions — play 버튼 클릭 후 진행된 작업

2. Data Flow 셋업

2.1 Job 생성

다시 콘솔로 돌아와 Big Data & Analytic > Data Flow] 에 접속합니다.

아래와 같이 Job(작업) 생성을 진행합니다.

A. Source는 앞서 사전 작업으로 Object Stroage에서 생성한 버킷(Flow Log 데이터 저장소) 으로 지정합니다.

bucket (버킷) 지정 화면
소스 상세 설정 화면

B. 데이터 형식은 Parquet을 선택하고, 변환된 후 저장소 (Object Storage)를 Target(타깃)으로 지정합니다.

타깃 설정 화면

C. inbound 트래픽만 추출 되도록 변환 옵션에서 Filter(필터)를 선택하고, 상세 설정 탭을 눌러 원하는 조건을 설정합니다.

인바운드 트래픽 추출을 위한 필터링
상세 필터링 조건 설정 화면

D. SRC_ADDR 칼럼 중복을 제거하기 위해 변환 옵션 중 ‘중복 제거’를 선택합니다.

중복 제거 화면

E. 마지막으로 SRC_ADDR 칼럼만 추출되도록 변환 옵션 중 ‘속성 선택’을 클릭하고, 상세 설정 화면에서 해당 필드를 선택합니다.

2.2 Job 실행

이제 구성한 작업(Job)을 실행할 순서입니다.

Job 실행이 완료되면 지정한 Bucket 에 results, inbound-distict-ip-list 디렉토리가 생성된 것을 확인할 수 있습니다.

  • flowlog-dataflow-v1 > results 디렉토리에 parquet 파일이 생성되었고,
  • flowlog-dataflow-v1 > inbound-distict-ip-list에 csv 파일이 생성된 것을 확인할 수 있습니다.

3. Workflow 생성

생성한 작업(Job)은 매일 하루에 한 번 실행되도록 주기를 설정합니다.

아래는 매일 00:00 분 앞서 생성한 작업(job)을 실행하는 예제입니다. Workflow 메뉴에서 ‘워크플로 생성’ 버튼을 누릅니다.

Data Flow > Workflow > 워크플로 생성하기
워크플로 신규 생성 화면
원하는 트리거 (실행 규칙) 설정하기

그 다음 Trigger와 Job을 연결하면 실습은 마무리 됩니다.

마치며

이번 실습을 통해 Data Flow의 전반적인 흐름을 살펴보았습니다.

실무에서 네이버 클라우드 플랫폼을 활용 중 Flow Log 데이터가 큰 경우 위 예제를 적용하면 Object Storage 비용을 낮추는 효과를 톡톡히 볼 수 있습니다. 다만 Data Flow 비용도 있기 때문에 Object Storage 절감 비용과 종합적으로 비교하여 선택 하시기 바랍니다. 참고로 F production lovel 에서는 k8s, VM 등에서 Airflow 를 운영 하시는 것을 권장합니다.

여러분의 네이버 클라우드 플랫폼 활용에 작은 도움이 되었으면 좋겠습니다. 긴 글 읽어주셔서 감사합니다!

문의하기

--

--

NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM

We provide cloud-based information technology services for industry leaders from startups to enterprises.