← 기술 목록으로

K8s · Airflow 데이터 수집 플랫폼 운영 & 장애 대응

데이터 수집 파이프라인을 Kubernetes 위 Airflow로 운영하며, 80개+ 크롤러의 스케줄·동시 실행·자원을 한곳에서 관리하고 반복 장애를 근본 원인 분석으로 해소한 운영

기간2024–2026
소속래브라도랩스(LabradorLabs)
역할데이터 엔지니어 · 인프라 운영
KubernetesApache AirflowKubernetesExecutorHelmGit-SyncPostgreSQLWireGuard

1운영해야 했던 규모

인턴과 팀원이 만든 크롤러가 80개를 넘으면서, 각자 서버에서 실행하던 방식으로는 실행 시간과 자원 사용을 통제하기 어려웠습니다. 외부 API의 rate limit, DB 연결 수, CPU·메모리, 네트워크 대역폭을 한꺼번에 봐야 했습니다.

2공통 실행 환경을 만든 방식

Airflow를 공통 스케줄러로 두고 KubernetesExecutor로 작업마다 Pod를 띄웠습니다. 크롤러별 실행 시간과 동시 실행 수를 나눴고, Airflow pool과 재시도 정책으로 외부 API 호출이 한 번에 몰리지 않도록 했습니다.

Git-Sync의 DAG가 Airflow scheduler와 pool을 거쳐 KubernetesExecutor Pod로 실행되고 외부 API, DB, 스토리지에 연결되는 구성도
Git-Sync로 DAG를 배포하고 Airflow가 스케줄·동시성·재시도를 관리하며 KubernetesExecutor가 작업별 Pod를 생성했습니다.

3운영 중 해결한 문제

Pod가 생성되지 않거나 Init 단계에서 멈출 때는 재시작 전에 원인부터 확인했습니다. 노드 inode와 DiskPressure, CoreDNS, kube-proxy, etcd 응답 지연, Git-Sync 권한과 재시도 설정을 순서대로 확인했습니다.

토큰과 키 만료는 사전 알림을 달아 장애가 난 뒤 교체하는 일을 줄였습니다. 특정 서버에 작업이 몰리는 경우에는 스케줄과 자원 요청량을 다시 조정했습니다.

4역할을 나눈 방식

각 크롤러의 수집 로직과 데이터 오류는 해당 담당자가 수정했습니다. 저는 여러 크롤러가 함께 쓰는 스케줄링, Kubernetes 자원, 네트워크, DB 연결, 모니터링을 설계하고 운영했습니다. 공통 장애가 생기면 원인을 찾아 담당자가 다시 같은 문제를 겪지 않도록 설정과 런북에 반영했습니다.

5결과

80개+ 크롤러 — 실행 시간과 동시성을 한 곳에서 관리
데이터 도달 시간 — 취약점 정보는 수집부터 고객사 반영까지 약 1시간
작업 격리 — 크롤러별 Pod로 자원 과사용과 실패 영향 분리
장애 대응 — 만료·DNS·디스크·스케줄 문제를 알림과 런북으로 관리