# 파이프라인 하나를 끝까지 만들어보기

> **이 장에서 배우는 것**
> 읽는 장이 아니라 **하는 장**입니다. 단계 **세 개**짜리 파이프라인을 만들고,
> **가운데를 일부러 깨뜨려** 뒷단계가 어떻게 되는지 봅니다.

## 준비물

```
□ 60분
□ 예약이 도는 상태
□ 자동 시작이 켜져 있을 것 — 꺼져 있으면 예약이 안 돕니다
□ 되돌리기 쉬운 작업 폴더 하나
□ 밖으로 나가는 단계는 이번에 넣지 마세요
```

예약을 아직 안 걸어봤다면 [예약 실행](/guide/ht-schedule)을 먼저 보세요.

**마지막 줄을 지키세요.** 첫 파이프라인에 발송이나 게시를 넣으면, 실습 3단계에서
일부러 깨뜨릴 때 진짜 사고가 납니다.

---

## 1단계 — 세 단계 그리기 (10분)

먼저 종이에 그립니다. **각 단계의 산출물이 무엇인지**를 적는 게 핵심입니다.

```
[1 수집]  →  무엇을 남기나:
[2 가공]  →  무엇을 남기나:
[3 정리]  →  무엇을 남기나:
```

```
예시:
  1 수집  매일 09시, 지정 폴더의 어제 변경 파일 목록을 파일로 남긴다
  2 가공  그 목록을 읽어 종류별로 묶어 표로 남긴다
  3 정리  표를 읽어 세 줄 요약을 남긴다
```

**각 단계가 파일을 남겨야 합니다.** 단계가 결과를 머리에만 들고 있으면 중간부터
다시 돌릴 수 없습니다 — 이게 [파이프라인 설계 원칙](/guide/ht-pipelines)에서
말하는 "단계는 재실행 가능해야 한다"의 실제 모습입니다.

---

## 2단계 — 1단계만 만들어 돌리기 (15분)

셋을 한 번에 만들지 마세요. **하나씩 세우고 확인합니다.**

```
□ 1단계 예약을 만들었다
□ 한 번 수동으로 돌려봤다
□ 산출물 파일이 실제로 생겼다
□ 그 파일을 열어 내용이 맞는지 봤다
```

**네 번째를 건너뛰지 마세요.** 파일이 생긴 것과 내용이 맞는 것은 다릅니다. 여기서
안 보면 3단계 결과가 틀렸을 때 어디서 틀렸는지 못 찾습니다.

---

## 3단계 — 2·3단계 잇기 (15분)

앞 단계의 산출물을 **읽는 것으로** 다음 단계를 만듭니다.

```
□ 2단계는 1단계 산출물 파일을 읽는다
□ 3단계는 2단계 산출물 파일을 읽는다
□ 각 단계는 앞 단계보다 늦게 돈다      ← 시간 간격을 확인하세요
```

### 시간 간격을 어떻게 잡나

```
1단계 09:00  →  2단계 09:20  →  3단계 09:40
```

**1단계가 평소 3분 걸린다고 2단계를 09:05 에 두지 마세요.** 느려지는 날이 반드시
있습니다. **평소 소요의 3배 이상**을 띄우거나, 앞 단계 산출물이 없으면 멈추도록
적으세요.

```
2·3단계 지시에 넣을 줄:
  "읽을 파일이 없으면 아무것도 만들지 말고 '앞 단계 결과 없음'이라고만 남기세요."
```

---

## 4단계 — 가운데를 깨뜨리기 (15분)

**이게 이 실습의 핵심입니다.** 1단계 산출물 파일의 **이름을 바꾸거나 지우고**
2·3단계를 돌리세요.

### 무엇을 보나

| 2단계가 한 일 | 판정 |
|---|---|
| "앞 단계 결과 없음"을 남기고 멈춤 | ✓ 제대로 설계됐습니다 |
| 빈 표를 만들어 정상 완료 | **3단계가 그 빈 표를 요약합니다** |
| 예전 파일을 찾아 씀 | **가장 위험합니다 — 어제 데이터로 오늘 보고가 나갑니다** |

**세 번째 줄이 실무 사고의 전형입니다.** 오류가 안 나기 때문에 아무도 모릅니다.
숫자만 조용히 하루 밀립니다.

### 3단계까지 확인

```
□ 3단계 산출물을 열어봤다
□ 그 안에 "없음"이 전파됐나, 아니면 그럴듯한 요약이 나왔나
```

**전파되지 않았다면 2단계 지시를 고치고 다시** 4단계를 하세요. 한 단계의 실패가
다음 단계에서 정상으로 둔갑하는 것이 파이프라인의 가장 흔한 실패입니다.

---

## 5단계 — 비용과 정리 (5분)

```
□ 세 예약이 각각 하루 몇 번 도는지 셌다
□ 연습용 예약을 껐다
□ 남길 것은 실패 시 동작이 지시에 들어 있는지 확인했다
```

**첫 줄을 꼭 세어보세요.** 파이프라인은 단계마다 비용이 붙고, 매일 돌면 그게
[누적됩니다](/guide/ht-pipelines). 세 단계 × 매일이면 한 달에 90번입니다.

---

## 자기 점검

```
□ 각 단계가 파일을 남기도록 만들었다
□ 한 단계씩 세우고 각각 확인했다
□ 시간 간격을 평소 소요의 3배 이상으로 뒀다
□ 가운데를 깨뜨려 뒷단계까지 확인했다      ← 이걸 안 하면 이 실습은 안 한 것입니다
□ "앞 단계 결과 없음"이 3단계까지 전파됐다
```

---

## 확인

**1. 각 단계가 파일을 남겨야 하는 이유는?**

<details>
<summary>답</summary>

**중간부터 다시 돌릴 수 있어야 하기 때문**입니다. 결과가 파일로 남아 있지 않으면
2단계만 다시 돌릴 수 없고 처음부터 전부 다시 해야 합니다.
</details>

**2. 가운데 단계가 "예전 파일을 찾아 쓰는" 것이 왜 가장 위험합니까?**

<details>
<summary>답</summary>

**오류가 나지 않아 아무도 모르기 때문**입니다. 파이프라인은 정상 완료로 표시되고,
어제 데이터로 만든 오늘 보고가 그대로 나갑니다.
</details>

**3. 단계 사이 시간 간격을 평소 소요보다 넉넉히 두는 이유는?**

<details>
<summary>답</summary>

**느려지는 날이 반드시 있기 때문**입니다. 앞 단계가 안 끝난 상태에서 다음 단계가
돌면 결과 없음이나 옛 결과로 진행됩니다. 간격을 넓히거나, 결과가 없으면 멈추도록
적어야 합니다.
</details>

---

반복되는 절차 자체를 재사용 가능한 단위로 만듭니다 →
[스킬로 절차를 담기](/guide/ht-skills)
