개요
회사에서 내부망의 데이터를 클라우드로 옮겨야 할 일이 생겼고 이 과정에서 ETL이 필요하다.
요약하면 아래와 같은 과정 정도로 정리할 수 있다.
내부망 -> 내부 ETL -> 클라우드 전송 -> 클라우드 ETL -> 데이터레이크 적재
이때 내부 ETL 용으로 오픈소스를 도입하고자 하는데 기존에 써서 익숙한 NIFI와 곁눈질로 배운 AirFlow중 어떤 툴이 더 효율적인지, 2가지 이외의 괜찮은 툴은 없는지 조사를 한 뒤 내용을 좀 정리해보고자 한다.
Apache NIFI 장점
- live batch streaming
- guaranteed delivery
- flow file 기반으로 누락없는 전송을 보장함
- 데이터 버퍼링
- 백 프레셔 관리 가능
Apache NIFI 우려사항
- 실제 데이터가 커짐에 따라 GUI 및 트랙킹이 귀찮으면이 있음
- zoo keeper 필요함
NIFI가 가장 잘 쓰일수 있는 요건
- 자원효율적, NRT로 데이터를 A에서 B로 옮김
Apache Airflow 장점
- workflow를 코드로 관리 가능
- task 의존성 관리
Apache Airflow 우려사항
- worker의 ETL 성능
- 어찌보면 airflow는 workflow 엔진이지 etl 처리 엔진은 아니지 않나
Airflow가 가장 잘 쓰일수 있는 요건
- Airflow 클러스터 외부 시스템에서 ETL이 처리되고 Airflow는 Workflow 관리만 하는 형태
고민의 지점
- GUI 형태로 process를 만들고 직접 UI상에서 개발/디버깅을 해야 하는 NIFI 대비 파이썬 코드로 DAG, Operator를 관리할수 있는 Airflow가 더 끌리긴 한다.
- 요즘은 확실히 Airflow가 대세인듯 하다.
- 다만 Airflow는 NIFI 대비 장비 효율적인 성능이 나올지는 확인이 필요하다. Airflow는 아무래도 workflow 관리 자체에 의미를 두고 실제 실행은 클러스터 외부에서(hive/spark) 수행되는 아키텍처에 가장 적합해 보이긴 한다. 직접 끊임업이 데이터를 공급받아 ETL을 태워야하는 곳에는 NIFI가 더 적합할지도 모른다는 생각을 하고 있다.