CHAPTER 01 · DATA ENGINEERING

데이터 처리 흐름과 검증의 기초

주문표를 예로 데이터 처리 흐름, Spark의 역할, 결과 검증 방법을 배웁니다.

입문 · 개념과 학습 준비7개 학습 섹션강의 1장 · 16슬라이드 기반

처음부터 읽기 교수님 강의자료

01

왜 여러 컴퓨터가 필요할까요?

이 수업에서는 데이터를 처리하는 시스템을 만들고, 결과가 맞는지 직접 확인합니다.

기록이 늘면 처리 방법도 달라집니다.

주문 10건은 손으로 더할 수 있습니다. 주문이 계속 쌓이고 매일 마감 시각까지 계산해야 한다면, 저장 공간·메모리·처리 시간을 함께 고려해야 합니다.

학습용 비유 · 조별 과제

책 1,000권의 오탈자를 조원에게 나눠 찾으면 빨라질 수 있지만, 배분과 연락에도 시간이 듭니다. 분산 처리에도 통신과 작업 조정 비용이 있습니다.

데이터 처리의 기본 용어 네 가지
단어처음 읽는 설명이 수업에서의 예
프로세스컴퓨터에서 현재 실행 중인 프로그램의 단위데이터 계산을 수행하는 Spark 프로그램
서버다른 프로그램의 요청을 받아 기능을 제공하는 프로그램 또는 컴퓨터작업 자원을 관리하는 Spark Master
클러스터공동 작업을 위해 연결한 여러 실행 자원의 묶음Master와 두 Worker가 협력하는 실습 환경
분산 처리데이터와 작업을 여러 실행 단위에 나누어 처리하는 방식주문표를 나누어 부분 합계를 계산한 뒤 합치기
한 대에서도 구조를 배울 수 있습니다.

실습에서는 내 PC 안에 실행 환경을 분리하는 컨테이너를 여러 개 실행합니다. 컨테이너 간 통신을 관찰할 수 있지만, PC의 CPU·메모리 자체가 늘어나지는 않습니다.

컴퓨터를 늘려도 전체 속도를 제한하는 구간인 병목이 남을 수 있습니다. 실습에서는 작업을 나누어 실행하고, 어느 구간에서 느려지는지 관찰합니다.

확인 질문 · 컴퓨터가 2대면 언제나 2배 빨라질까요?

아닙니다. 나눌 수 없는 작업, 데이터 전송 시간, 한쪽에 몰린 작업 때문에 기대만큼 빨라지지 않을 수 있습니다.

근거: 1장 슬라이드 1–2, 5 (파일 순서 기준). 기본 용어 설명과 조별 과제 비유는 학습용 보충입니다.

02

주문 기록이 매출표가 되기까지

데이터 엔지니어링(Data Engineering, DE)은 데이터를 분석과 인공지능(AI)에 쓸 수 있도록 처리 흐름을 설계·구현·검증하는 일입니다.

“오늘 매출은 얼마인가?”에 답하려면 처음 생성된 기록인 원천 데이터를 가져와 정리하고 계산해야 합니다. 이렇게 연결된 처리 흐름이 데이터 파이프라인입니다.

흩어진 영수증과 서류를 분류하여 파일 트레이에 정돈하는 작업장. 원천 기록을 정리해 사용할 수 있게 만드는 데이터 처리의 비유.
학습용 비유 · 서류 정리 작업장. 영수증을 모아 분류하고 보관한 뒤 필요한 사람에게 건네듯, 데이터도 수집 → 변환 → 저장 → 제공의 흐름을 거칩니다. AI 생성 이미지이며 실제 시스템 화면이 아닙니다.

수집에서 제공까지, 네 단계

각 단계를 선택해 역할을 확인하세요. 시각화는 학습용 모형입니다.

주문 예제 · 중복 기록은 어떻게 셀까요?

학습용 주문 기록 · A002는 같은 주문의 재전송
주문 번호금액기록 상태
A00110,000원정상
A00220,000원정상
A00220,000원같은 주문의 재전송
  1. 수집 · 원천 데이터 가져오기

    쇼핑몰의 주문 기록 3행을 받습니다.

    • 행: 기록 하나.
    • 열: 주문 번호·금액 같은 항목.
  2. 변환 · 목적에 맞게 데이터 정리하기

    • 규칙: 주문 번호는 고유하며, 같은 번호의 재전송은 한 번만 계산.
    • 결과: 중복 A002를 제외하면 2건, 합계 30,000원.

    실제 업무에서도 중복 판단 기준을 먼저 정해야 합니다.

  3. 저장 · 원본과 처리 결과 보관하기

    원본과 정리한 결과를 구분해 보관합니다. 오류가 생기면 원본으로 다시 계산할 수 있습니다.

  4. 제공 · 매출표 전달하기

    날짜별 매출표를 분석가나 서비스에 전달합니다. 어떤 주문을 포함했는지도 설명할 수 있어야 합니다.

계산 뒤 확인할 세 가지

  • 누락: 빠진 주문이 없는가?
  • 재실행: 다시 실행해도 같은 기준으로 계산하는가?
  • 복구: 중단 후 처리를 재개할 수 있는가?

목적에 따른 저장소 선택

  • 데이터 레이크: 다양한 데이터를 폭넓게 보관하는 저장소입니다.
  • 데이터 웨어하우스: 분석하기 좋게 정리한 데이터를 다루는 저장 체계입니다.

확인 질문 · 위 명세에 맞는 결과는 무엇인가요?

직접 실행 · 주문 CSV 파이프라인

이 절의 내용을 합성 주문 5행 정리 실습에서 확인할 수 있습니다. 입력 CSV, Python 전체 코드, 예상 결과로 중복·충돌·재실행을 확인합니다. Python 표준 라이브러리만 사용합니다.

근거: 1장 슬라이드 2–3. 주문표와 계산 결과는 학습용 예제이며 실제 실행 결과가 아닙니다.

03

데이터 시스템을 만드는 네 가지 역량

무엇을 계산하는지, 어디에서 실행되는지, 데이터가 늘어도 처리할 수 있는지 확인합니다.

학습용 비유 · 공동 요리의 책임

함께 요리할 때는 조리뿐 아니라 역할 배분·품질 유지·완성품 확인도 필요합니다. 데이터 시스템에서도 아래 네 역량을 함께 익힙니다.

01 · 처리 구현

“어떤 입력으로 어떤 출력을 만들까?”를 코드로 표현합니다.

  • DataFrame: 열 이름과 자료형을 가진 표 형태의 데이터 구조.
  • SQL: 필요한 행이나 집계 결과를 요청하는 질의 언어.
  • 배치(Batch): 모인 데이터를 작업 단위로 처리하는 방식.
  • 스트리밍(Streaming): 계속 들어오는 데이터를 지속적으로 처리하는 방식.

02 · 분산 실행 이해

계산이 어느 실행 자원에서 수행되는지 확인합니다.

  • Apache Spark: 여러 실행 자원으로 데이터 처리를 수행하는 엔진입니다.
  • PySpark: Python으로 Spark를 사용하는 인터페이스입니다.

코드 한 줄이 여러 실행 자원에 나뉘어 처리될 수 있습니다.

03 · 신뢰성과 확장성

  • 신뢰성: 반복 실행·오류 상황에서도 요구한 결과를 안정적으로 제공하는 성질.
  • 확장성: 데이터·작업 증가에 자원과 처리 방식을 조정해 대응하는 성질.

주문이 100배 늘어도 처리할 수 있는지, 다시 실행해도 요구한 결과가 나오는지 확인합니다.

04 · AI 협업과 검증

AI가 만든 코드도 개발자가 검증하고 채택 이유를 설명해야 합니다.

  • 명세: 입력 규칙과 기대 결과를 적은 기준.
  • 스키마(Schema): 열 이름·자료형 등 데이터 구조의 정의. 금액이 숫자인지 문자열인지도 여기에 해당합니다.

Spark에서 역할과 데이터 조각 구분하기

Spark 실행의 기본 용어 네 가지
단어실제 역할조별 계산에 빗대면
Driver애플리케이션의 실행을 조정하는 프로세스계산 계획을 세우고 결과를 받는 조장
Executor데이터 처리 작업을 수행하는 프로세스배정된 계산을 수행하는 조원
Partition나누어 처리할 데이터 조각각자 맡은 문제 묶음
Shuffle다음 계산에 필요한 기준으로 데이터를 실행 자원 사이에 재분배하는 과정담당 기준이 바뀌어 문제지를 다시 나누기
Worker와 Executor 구분하기
  • Worker: 계산 자원을 제공하고 Executor를 실행합니다.
  • Executor: 실제 데이터 처리 작업을 수행하는 프로세스입니다.

두 역할의 관계는 2장에서 실습합니다.

더 알아보기 · 실행을 살펴보는 도구는 무엇인가요?
  • Spark UI: 작업 상태와 실행 정보를 보는 웹 화면입니다.
  • 실행계획(Execution Plan): Spark가 계산을 어떤 연산 순서로 수행하려는지 나타냅니다. DataFrame의 explain()으로 계획을 살펴볼 수 있습니다.
  • Join: 공통 키를 기준으로 표를 연결하는 연산입니다. 예를 들어 주문표와 상품표를 상품 번호로 연결합니다.

관련 기술로 Hadoop·HDFS·MapReduce가 있습니다.

  • Hadoop: 분산 데이터 저장·처리 기술군입니다.
  • HDFS: 파일을 여러 컴퓨터에 나누어 저장하는 시스템입니다.
  • MapReduce: 나누어 계산하고 결과를 모으는 처리 모델입니다.

이 절에서는 각 기술의 역할만 소개합니다.

확인 질문 · Partition은 컴퓨터 한 대를 뜻하나요?

아닙니다. Partition은 데이터 조각입니다. 하나의 실행 자원이 여러 조각을 차례로 처리할 수 있으므로, 데이터 조각 수와 컴퓨터 수는 다를 수 있습니다.

근거: 1장 슬라이드 4–5, 10. 용어 설명과 비유는 학습용 보충입니다.

04

Spark 기초부터 전체 파이프라인까지

학기 학습 순서는 Spark 실행 이해 → 저장·실시간 처리 연결 → 전체 파이프라인 검증입니다. 주차별 강의 범위는 아래 표와 같습니다.

학습용 비유 · 작은 가게에서 물류 체계로

가게에서 주문을 정리한 뒤 창고·배송을 연결하고, 주문이 제대로 전달되는지 확인하는 과정과 비슷합니다.

주차별 강의 범위
주차강의 범위처음 배우는 학생의 질문
1–7주Spark 실행과 성능: 실습환경, DataFrame, SQL, Parquet, Shuffle, Spark UI, 성능 조정표를 어떻게 처리하고, 어디에서 느려지는지 어떻게 알까?
8주중간시험배운 계산과 실행 구조를 내 말로 설명할 수 있을까?
9–13주Lakehouse와 Streaming: Iceberg, Kafka, Structured Streaming, Window데이터를 관리하면서 계속 들어오는 기록을 어떻게 처리할까?
14주통합 Data Engineering: 전체 파이프라인, 데이터 품질, 장애 복구, AI를 활용한 구현처음부터 끝까지 이어지는 시스템을 어떻게 검증할까?
15주기말시험설계·구현·검증의 선택을 설명할 수 있을까?
1~5장에서는 Spark의 실행과 표 연산을 배웁니다.

Docker 환경에서 분산 실행을 확인하고, DataFrame과 SQL로 주문 데이터를 정제·집계합니다. Lakehouse와 Streaming은 그다음에 연결할 주제입니다.

용어 정리 · 파일 형식과 후반부 기술
이름우선 알아둘 뜻
CSV쉼표 등 구분자로 열을 나눈 텍스트 파일 형식
Parquet열을 중심으로 데이터를 저장하는 분석용 파일 형식
Lakehouse데이터 레이크에 분석용 테이블 관리 기능을 결합하는 접근
Iceberg데이터 파일을 분석용 테이블로 관리하는 테이블 형식
REST Catalog웹 요청 방식의 인터페이스로 테이블의 위치와 관리 정보를 제공하는 서비스
MinIO데이터 파일을 객체 단위로 보관하는 저장 서비스
Kafka계속 발생하는 이벤트 기록을 받아 보관하고 전달하는 플랫폼
Structured StreamingSpark에서 계속 들어오는 데이터를 표 기반 연산으로 처리하는 기능
Window예를 들어 “5분 동안”처럼 기록을 묶어 계산하는 구간

강의 계획의 CSV → Parquet → Iceberg → Kafka/Streaming은 학습 범위를 넓혀 가는 순서를 나타냅니다. CSV·Parquet은 파일 형식, Iceberg는 테이블 형식, Kafka는 이벤트 플랫폼입니다.

확인 질문 · 지금 Kafka까지 설치해야 하나요?

아닙니다. 학기 전반은 Compose로 Spark Master·Worker·Client를 구성합니다. Kafka와 Iceberg 관련 서비스는 강의 계획에서 학기 후반에 추가하는 범위입니다.

근거: 1장 슬라이드 6–7.

05

Docker로 실습 환경 준비하기

친구의 PC에서는 되는데 내 PC에서는 안 된다면, 코드를 보기 전에 실행 환경이 같은지 확인해야 합니다.

재현 가능한 환경은 같은 설정으로 다시 실행할 수 있게 구성한 환경입니다.

수업에서는 Windows PC의 Docker Desktop과 WSL2로 실습 환경을 구성합니다.

학습용 비유 · 실험 키트

실험 재료와 조립 설명서를 맞추듯, 이미지와 설정 파일로 시작 조건을 맞춥니다. PC 자원·네트워크는 다를 수 있어 실행 결과는 별도로 확인해야 합니다.

환경을 만드는 도구와 구성 요소

설치 전에 읽는 Docker 용어
용어의미우리 실습에서의 역할
Image · 이미지프로그램과 필요한 실행 파일을 담은 환경의 틀정해진 Spark 버전으로 시작
Container · 컨테이너이미지를 바탕으로 만든 실행 환경Master, Worker 2개, Client를 별도로 실행
Volume · 볼륨 / 파일 연결컨테이너 밖의 데이터를 안에서 사용할 수 있게 연결하는 저장 장치·경로 설정배포 실습은 PC의 apps 폴더를 컨테이너 경로에 연결하는 바인드 마운트 사용
Network · 네트워크프로그램들이 서로 통신할 수 있는 연결컨테이너끼리 서비스 이름으로 통신
Port · 포트한 주소에서 특정 서비스로 연결하기 위한 번호PC 브라우저에서 Spark 관리 화면에 접속
Compose여러 서비스의 실행 설정을 파일로 정의하고 함께 관리하는 도구compose.yaml로 실습 전체 구성

이미지의 버전·구성을 가리키는 이름이 태그입니다. 2장 배포 파일의 값은 spark:4.1.3-scala2.13-java21-python3-ubuntu이며, 실습 때 이 값을 기준으로 맞춥니다.

2장 명령 미리 보기 · 시작·상태 확인·정리

Compose 명령의 역할

  • up: 구성에 따라 컨테이너를 생성하고 시작합니다.
  • ps: 상태를 확인합니다.
  • logs: 실행 기록을 확인합니다.
  • exec: 실행 중인 컨테이너 안에서 명령을 수행합니다.
  • stop: 기존 컨테이너를 정지합니다.
  • start: 정지한 기존 컨테이너를 다시 시작합니다.
  • down: Compose가 만든 컨테이너와 네트워크를 정리합니다.

실제 명령 순서와 실행 위치는 2장에서 안내합니다.

준비 → 상태 → 계산 검증

이미지와 서비스 상태를 확인한 뒤, 통신과 작은 계산이 정상적으로 수행되는지 확인합니다.

  1. 이미지 확인
  2. 서비스 시작
  3. Worker 등록 확인
  4. 통신 확인
  5. 작은 계산 실행

2장: Docker와 Spark 실습으로 이동 →

확인 질문 · 같은 이미지를 받았다면 무엇을 알 수 있나요?

근거: 1장 슬라이드 7–8, 16. 이미지와 파일 연결은 배포 compose.yaml 설정을 따르며, 16번 슬라이드의 설치·실행 방법은 2장에서 다룹니다.

06

계산 결과와 실행 구조를 함께 검증하기

AI는 코드·테스트 초안과 오류 분석을 돕습니다. 정확성·확장성·성능을 확인하고 선택의 이유를 설명하는 일은 개발자의 책임입니다.

학습용 비유 · 계산기 답을 검산하기

계산기에 중복 주문을 입력하면 계산은 맞아도 매출은 틀립니다. AI 코드도 입력과 계산 기준이 맞는지 사람이 검산해야 합니다.

검증은 세 단계로 진행합니다.

  1. 문제와 명세를 적습니다.

    “1부터 100까지의 정수를 각각 한 번 더한다. 입력 열은 정수형 id, 기대 결과는 5,050이다.”처럼 입력과 결과를 구체화합니다.

  2. 사람이 코드를 읽습니다.

    범위의 끝값이 포함되는지, 모든 데이터를 한곳에 모으는지, 잘못된 입력을 어떻게 처리하는지 확인합니다.

  3. 실행·테스트·관찰로 확인합니다.

    작은 입력의 정답과 비교하고, Spark UI와 실행계획에서 실제 실행을 봅니다. 작은 예제 성공이 100배 규모의 성능을 보장하지는 않습니다.

학습용 코드 비교 · 같은 5,050, 다른 데이터 이동

코드를 읽기 전에
  • 실행 위치: spark가 준비된 PySpark 환경. PowerShell용 명령이 아닙니다.
  • SparkSession: Spark 기능을 사용하는 진입점으로, 아래 코드에서는 spark라는 이름을 사용합니다.
  • 준비 방법: 실제 환경 구성과 배포 프로그램 실행은 2장에서 진행합니다.

A · 원본 전체를 Driver로 가져와 더하기

df = spark.range(1, 101, 1, 4)
rows = df.collect()
total = sum(row["id"] for row in rows)
print(total)
  • range(1, 101, 1, 4): 1부터 100까지 1씩 증가하는 값을 4개 Partition으로 구성합니다. 끝값 101은 포함하지 않습니다.
  • collect(): 모든 행을 Driver로 가져옵니다.
  • sum: 가져온 값을 Driver의 Python에서 더합니다.

확인할 점: 원본이 커지면 모든 행이 Driver 메모리에 모이는 구조가 문제가 될 수 있습니다.

B · Spark에서 합계를 계산한 뒤 작은 결과 받기

from pyspark.sql import functions as F

df = spark.range(1, 101, 1, 4)
result = df.agg(F.sum("id").alias("total"))
row = result.first()
print(row["total"])
  • agg: 집계 연산을 표현합니다.
  • F.sum("id"): id 열을 합산합니다.
  • alias("total"): 결과 열 이름을 total로 붙입니다.
  • first(): 결과의 첫 행을 Driver로 가져옵니다. 이 예제는 그룹 없이 전체 합계를 계산하므로 결과가 한 행입니다.

확인할 점: Driver는 합계 한 행을 받습니다. 집계 단계와 데이터 이동은 실행계획에서 확인합니다.

예상 결과: 5,050

두 코드의 예상값은 100 × 101 ÷ 2 = 5,050입니다. 손계산한 예상값이며 실제 Spark 실행 결과가 아닙니다.

코드를 적는 시점과 계산하는 시점

Spark 코드에서 연산을 정의하는 시점과 실제 계산이 실행되는 시점을 구분해야 합니다.

더 알아보기 · collect()는 항상 잘못된 코드인가요?

작은 결과를 의도적으로 가져올 때는 사용할 수 있습니다. 기준은 “몇 행, 몇 바이트가 Driver에 모이는가?”입니다.

  • 다른 수집 방식: toPandas()도 데이터를 Driver의 pandas 표로 가져옵니다.
  • Python 반복문: 큰 데이터를 한곳에 모아 순차 처리하는지 확인합니다.
  • 그룹별 집계: 그룹 수가 많으면 집계 결과도 커질 수 있습니다.
  • 성능 판단: 같은 조건에서 시간과 자원 사용을 측정해야 합니다.

확인 질문 · 두 코드가 5,050을 출력했다면?

근거: 1장 슬라이드 9–10, 14. 코드 비교는 학습용 보충 예제이며, 제공 실습의 1–100 합계 예제는 first_app.py에서 확인할 수 있습니다.

07

데이터 엔지니어의 역량과 학습 점검

파이프라인의 설계 이유와 결과를 확인한 방법을 설명할 수 있어야 합니다.

강의의 채용 자료에는 Python·SQL, 대용량 처리, 저장 구조, 운영·협업 역량이 나옵니다. 수업에서는 파이프라인을 구현하고 오류의 원인을 찾아 설명하는 연습을 합니다.

학습용 비유 · 공구보다 수리 과정

수리에는 고장 찾기 → 공구 선택 → 수리 → 작동 확인이 필요합니다. 데이터 처리 도구도 해결할 문제에 맞춰 선택하고 결과를 확인합니다.

만드는 역량

  • 처리 구현: Python·SQL·Spark로 데이터 계산.
  • 데이터 모델링: 저장할 정보의 구조와 관계 설계.

운영하는 역량

  • 모니터링: 실행 상태와 지표를 지속적으로 확인.
  • 운영 개선: 데이터 오류·장애를 찾고 시간·비용 조정.
채용 자료의 낯선 단어 · 필요할 때 찾아보기
JVM
Java 계열 프로그램을 실행하는 가상 머신입니다.
RDBMS
관계형 표 구조로 데이터를 관리하는 데이터베이스 시스템입니다.
Airflow
여러 작업의 순서와 일정을 관리하는 도구입니다.
오케스트레이션
작업 간 의존성과 실행을 조정하는 일입니다.
이벤트
주문 생성처럼 발생한 일을 나타내는 기록입니다.
CDC
데이터베이스의 변경 내용을 포착해 전달하는 방식입니다.
Cloud · 클라우드
네트워크를 통해 컴퓨팅과 저장 자원을 제공받는 방식입니다.
AWS·GCP·Azure
클라우드 서비스를 제공하는 플랫폼 이름입니다.
DW
데이터 웨어하우스의 약자입니다.
거버넌스
데이터의 관리 규칙과 책임 체계입니다.
리니지
데이터가 어디에서 와서 어떤 변환을 거쳤는지에 대한 이력입니다.
SLO
서비스가 지키려는 수준의 목표입니다.
Observability
기록과 지표 등으로 내부 상태를 파악하는 능력입니다.
IaC
인프라 구성을 코드나 설정 파일로 관리하는 방식입니다.
AI
인공지능입니다.
ML
데이터에서 규칙을 학습하는 머신러닝입니다.
Vector
수치의 배열입니다.
Graph
대상과 관계를 표현하는 구조입니다.
강의 속 진로·통계 자료 읽기

슬라이드 11은 2026년 9월 기준 채용공고 분석, 12–13은 수요·임금 참고 자료, 14는 AI 생산성 조사입니다. 강의 당시의 참고 자료이며, 국내 임금은 추정값으로 표시되어 있습니다.

통계를 읽을 때는 조사 시점과 표본을 확인해야 합니다.

다음 장으로 가기 전, 내 말로 확인하기

확인 질문 · 2장에서는 무엇을 확인하나요?

2장에서는 PC → Docker 컨테이너 → Spark 역할의 관계를 배우고, 제공 실습을 실행해 상태·통신·계산 결과를 확인합니다.

근거: 1장 슬라이드 11–15 및 슬라이드 2의 강의 목표.