학습 기록/코드잇 데이터분석 부트캠프

# 위클리페이퍼 15 & 16

dataminutestone 2026. 4. 20. 08:55

Q1. DAG와 Task의 관계에 대해 예시를 들어 설명해주세요.

데이터 파이프라인을 구성할 때 가장 기본이 되는 개념은 DAG와 Task이다.

DAG(Directed Acyclic Graph)는 작업의 전체 흐름을 정의하는 구조이며, Task는 그 안에서 실행되는 개별 작업 단위를 의미한다.

즉, DAG는 하나의 워크플로우 설계도이고, Task는 그 설계도를 구성하는 실행 단위라고 볼 수 있다.

예를 들어, 매일 데이터를 수집하고 분석하는 파이프라인을 생각해보면 다음과 같은 흐름으로 구성할 수 있다.

  • 데이터 수집
  • 데이터 전처리
  • 데이터 저장
  • 리포트 생성

이 전체 흐름이 DAG이며, 각각의 단계는 하나의 Task로 구성된다.
또한 각 Task는 순서대로 실행되며, 이전 작업이 완료되어야 다음 작업이 수행되는 의존성을 가진다.

Q2. 수업시간에서 배우지 않은 Operator들의 종류와 활용 사례를 구글링하여 공유해주세요.

Operator는 Action Operator와 Transfer Operator로 구분된다.
  • Action Operator는 작업을 수행하거나 다른 시스템에 작업을 수행하도록 지시한다.
  • Transfer Operator는 특정 시스템에서 다른 시스템으로 데이터를 이동시킨다.

BashOperator

쉘 명령어를 실행할 때 사용된다.
데이터 처리 스크립트 실행이나 배치 작업에 주로 활용된다.

PythonOperator

Python 함수를 실행할 때 사용된다.
데이터 전처리, 간단한 로직 처리 등에 적합하다.

BranchPythonOperator

조건에 따라 작업 흐름을 분기할 때 사용된다.
데이터 존재 여부에 따라 다른 작업을 수행하는 경우에 활용된다.

EmailOperator

이메일을 자동으로 발송하는 Operator다.
작업 실패 알림이나 리포트 자동 전송에 활용된다.

HttpOperator

외부 API 호출을 수행할 때 사용된다.
데이터 수집이나 외부 서비스 연동에 활용된다.

Sensor 계열 Operator

특정 조건이 만족될 때까지 대기하는 역할을 한다.
파일 생성, 데이터 적재 여부 등을 감지하는 데 자주 사용된다.

DockerOperator / KubernetesPodOperator

컨테이너 기반 작업을 실행할 때 사용된다.
머신러닝 모델 실행이나 대규모 분산 처리 환경에서 활용된다.

Q3. On-premise, Cloud, Serverless 데이터 웨어하우스의 특징에 대해 각각 설명해주세요.

데이터 웨어하우스는 여러 소스의 현재 및 과거 데이터를 비즈니스에서

쉽게 인사이트와 보고서를 얻을 수 있는 방식으로 저장하는 데이터 관리 시스템이다.

데이터 웨어하우스는 구축 방식에 따라 크게 On-premise, Cloud, Serverless로 나눌 수 있다.

On-premise

기업 내부에 직접 서버를 구축하는 방식이다.

보안성과 커스터마이징 측면에서는 강점이 있지만, 초기 구축 비용이 크고 확장이 어렵다는 단점이 있다.
또한 유지보수 부담이 상당히 크다.


Cloud

Amazon Web ServicesGoogle Cloud와 같은 클라우드 환경에서 데이터 웨어하우스를 구축하는 방식이다.

필요에 따라 자원을 유연하게 확장할 수 있고, 인프라 관리 부담이 줄어든다는 장점이 있다.
다만 사용량 기반 과금 구조이기 때문에 비용 관리가 중요하다.


Serverless

Google BigQuerySnowflake와 같은 형태로, 서버 관리 자체가 필요 없는 구조다.

자동으로 확장되며 사용자는 쿼리 실행에만 집중할 수 있다.
운영 부담이 거의 없다는 장점이 있지만, 쿼리 비용이 급격히 증가할 수 있다는 점은 주의해야 한다.

Q4. BigQuery에서 쿼리 성능을 최적화할 수 있는 방법에 대해 설명해주세요.

성능 최적화의 핵심은 “스캔 데이터량을 줄이는 것”이다.

주요 최적화 방법은 다음과 같다.

1) 필요한 컬럼만 조회하기

SELECT * 대신 필요한 컬럼만 선택하면 불필요한 데이터 스캔을 줄일 수 있다.


2) 파티션 테이블 활용

날짜 기준 등으로 테이블을 나누면 특정 구간 데이터만 조회할 수 있어 성능이 크게 향상된다.


3) 클러스터링 적용

자주 조회되는 컬럼 기준으로 데이터를 정렬 저장하면 필터링 성능이 개선된다.


4) WHERE 조건 적극 활용

초기에 데이터 양을 줄이는 것이 중요하다.
필터 조건을 통해 불필요한 데이터를 최대한 제거해야 한다.


5) JOIN 최소화 및 최적화

불필요한 JOIN을 줄이고, 작은 테이블을 먼저 필터링하는 방식이 효율적이다.


6) 중복 계산 방지

같은 연산을 반복하지 않도록 WITH 절(CTE)을 활용해 재사용 구조를 만드는 것이 좋다.


7) 근사 함수 사용

APPROX 함수 계열을 활용하면 정확도를 일부 희생하는 대신 성능을 크게 개선할 수 있다.


8) 캐시 활용

동일한 쿼리는 캐시를 통해 재사용되므로 반복 실행 시 성능이 개선된다.

'학습 기록 > 코드잇 데이터분석 부트캠프' 카테고리의 다른 글

# 위클리페이퍼 12  (0) 2026.03.16
# 위클리페이퍼 11  (0) 2026.03.09
# 위클리페이퍼 10  (0) 2026.03.03
# 위클리페이퍼 9  (0) 2026.02.23
위클리 페이퍼 #8  (0) 2026.01.19