로컬에서 Apache Airflow를 Docker Compose로 구축하기
·
Data Engineering
최근 ETL 파이프라인을 직접 설계하고, 워크플로우를 만들면서 ApacheAirflow를 로컬 개발 환경에 Docker Compose로 올려 실험할 일이 생겼습니다.이 글에서는 실제 Mac 환경에서 Airflow를 띄우며 마주친 주요 이슈, 트러블슈팅, 실무 폴더 설계를 다룹니다. 1. 환경 세팅1.1 Docker Desktop 설치Docker 공식 설치 페이지에서 Docker Desktop 설치설치 후 동작 확인docker --version# 예시 출력: Docker version 28.1.1, build 4eba3771.2 작업 폴더 구조 준비Airflow 작업용 폴더 생성mkdir -p ~/workspace/airflowcd ~/workspace/airflow 2. Airflow Docker Com..
열 지향 저장의 본질과 파일 포맷의 선택 기준
·
Data Engineering
데이터 분석이 시스템 병목의 주범이 되는 경우는 의외로 흔하다.특히, 테이블의 열이 100개가 넘는데 단 3개만 조회하는 쿼리라면? 불필요하게 전체 행을 읽는다면, 아무리 좋은 하드웨어도 병목이 발생하기 마련이다. 그래서 우리는 "행 기반 저장"보다 "열 기반 저장"을 선택한다.이번 글에서는 이 열 기반 저장 방식이 왜 유리한지 그리고 이를 파일 포맷 수준에서 어떻게 구현하는지를 정리한다. 열 지향 방식행 지향 방식은 이제껏 우리에게 친숙한 엑셀 시트에서 한 사람의 정보를 한 줄에 저장하는 방식이다.이름 나이 성별 국적--------------------------철수 25 남자 한국영희 31 여자 일본민수 22 남자 미국철수, ..
Elasicsearch는 저장소가 아니다
·
Data Engineering
DB도 있고 Redis도 있는데, 굳이 ES를 써야 해?Elasticsearch는 많은 시스템에서 당연하듯이 사용된다. 특히 로그 분석이나 검색 기능이 들어가는 시스템이라면, 대게 ES가 들어간다. 그런데 처음 ES를 마주하면 종종, "그냥 JSON을 넣을 수 있는 NoSQL 아닌가? 쿼리 기반으로 검색해야 해서 복잡한데 왜 쓰는거야?" 라고 생각한다. 나 역시 처음엔 ES를 검색도 되는 데이터 저장소정도로 이해했다. 하지만 실제로 써보면 ES는 저장소가 아니라 '질의 특화 인덱싱 엔진'에 가깝다. ES의 핵심 역할: 많은 데이터 중에서 원하는 걸 빠르게 찾게 해준다ElasticSearch는 단순한 데이터 저장소가 아니다. 수십만, 수백만 건의 데이터 중에서 필요한 정보를 조건에 맞춰 빠르게 찾고, 정렬..
Data Lake vs Data Warehouse: 저장소인가, 체계인가
·
Data Engineering
데이터를 어디에 저장하고 어떻게 꺼내쓸까S3에 던져두면 되는 걸까? 아니면 BigQuery에 테이블부터 만들어야 할까? 데이터를 처음 수집하고 분석하려 할 때 가장 고민을 많이 해야 하는 질문이다. 이 질문은 자연스레 Data Lake와 Data Warehouse의 개념으로 이어진다. 이 둘은 단순히 저장소의 종류가 아니라, 데이터를 어떻게 다루고 어떤 목적을 가지는지에 따라 달라지는 구조에 대한 선택이다. 이번 글에서는 Data Lake와 Data Warehouse가 무엇이고, 어떻게 다르고, 실무에서는 어떻게 사용하는지 정리해본다. 개념 정리1. Data Lake정형/비정형 데이터 모두 수용 가능한 Raw Storage보통은 S3, HDFS, Azure Blob, GCS 등에 저장파일 형식도 다양(J..
ETL이 지나고, ELT가 온다: 구조적 전환과 클라우드 시대의 흐름
·
Data Engineering
"피크 타임만 되면 파이프라인이 너무 느려져요"운영 중이던 데이터 파이프라인에서 자주 들렸던 말이다. 밤에는 멀쩡히 돌던 작업이 트래픽이 몰리는 시간대만 되면 속도가 급격히 떨어졌다. 하지만 어느 순간 판이 달라졌다.ETL(Extract - Transform - Load)이라는 고전적 구조에서, ELT(Extract - Load - Transform)라는 낯선 순서로의 전환이 나타난 것이다. 단순히 순서를 바꾼 것처럼 보이지만, 이는 클라우드 시대의 데이터 인프라가 어떻게 변했는지, 그리고 앞으로 무엇이 중심이 될지를 말해주는 흐름이다. ETL 구조: 데이터를 '가다듬어' 보관하자전통적인 ETL의 핵심은 다음과 같다.Extract : RDB, API, 로그 등에서 원본 데이터를 뽑고Transform : ..
병렬 처리의 함정, 그리고 최적화: DataHub 메타데이터 Ingestion 파이프라인 개선기
·
Data Engineering
🟡 들어가며운영 중인 메타데이터 플랫폼(DataHub)의 파이프라인을 개발하면서 겪었던 병목 문제와, 이를 해결하기 위한 병렬 처리 최적화 과정을 공유합니다.특히 Airflow 기반의 병렬 처리 구조를 구성하면서 실제 시스템의 한계를 마주했던 경험을 중심으로 다루며 "병렬 처리 = 무조건 빠름"이라는 고정관념이 깨지고, 시스템 자원에 맞춘 설계가 얼마나 중요한지 몸소 느낄 수 있었습니다.이 글에서는 기존 파이프라인의 구조적 한계부터 성능 이슈, 병렬 처리 최적화, 옵션 설정 개선에 이르기까지 단순한 기능 개발을 넘어 실질적인 운영 개선을 이루어낸 경험을 정리해보았습니다. 🧱 파이프라인 구조를 다시 고민하게 된 이유초기 ingestion 파이프라인은 약 5만 건의 메타데이터를 2만 건 단위로 나눠, 세..
[Airflow] Dynamic task mapping
·
Data Engineering
batch 작업을 손쉽게 도와주는 Airflow이번 포스팅에서는 airflow의 metadata DB, executor, operator, decorator 기본 개념과 Dynamic task mapping에 대해 정리하고자 한다. Airflow우선 Airflow는 기본적으로 scheduler, workers, metadata DB, webserver로 이루어져 있다. SchedulerScheduler는 DAG 파일을 주기적으로 스캔하고 있다가 실행할 task가 있으면 Executor에게 전달한다.즉, 어떤 task가 언제 실행되어야 하는지 모니터링하고 있다가 Executor에게 알려준다. ExecutorExecutor는 Scheduler가 스케줄링한 task들을 실제로 어디서, 어떻게 실행할지 결정한다..
NAVER DAN24 - CQueryHub
·
Data Engineering
24년 11월 12일에 네이버 컨퍼런스 DAN에 다녀왔다.참가한 세션 중 인상 깊은 세션이었던 [CQueryHub: Data Warehouse입니다. 근데 이제 Flink와 Iceberg를 곁들인] 세션에 대해 정리를 해보려 한다. 세션 주제는 CDC 아키텍쳐이었다.CDC는 Change Data Capture의 약자로, Source DB에 변경점이 생기면 실시간으로 변경된 데이터에 대해서만 Target DB에 반영하는 기술이다. 기존 ETL 기술과 비교되는 기술이다. 둘 다 Source DB와 Target DB와의 sync를 맞춘다는 공통점을 갖고 있지만, ETL은 배치성 작업으로서의 성격이 짙다. ETL은 변경점을 기준으로 Target DB에 반영하지 않고 매일 매시간을 기준으로 업데이트 사항을 반영한..