# 업무 자동화를 위한 핵심 개념

> 자동화를 배운다는 것은 새로운 언어를 배우는 것과 같습니다.
> 단어(개념)를 알아야 AI와 제대로 대화할 수 있고, 원하는 것을 정확하게 요청할 수 있습니다.

---

## Tier 1: 반드시 알아야 할 기초 개념

### 1. 워크플로우 (Workflow)

**한 줄 정의:** 작업이 진행되는 순서와 흐름.

**비유:** 카페에서 커피를 만드는 과정 — 주문 받기 → 원두 갈기 → 에스프레소 추출 → 우유 스팀 → 컵에 담기 → 서빙. 이 순서가 워크플로우입니다.

**업무 예시:**
- 신규 고객 등록 워크플로우: 양식 제출 → 데이터 저장 → 환영 이메일 발송 → 담당자 배정
- 월말 보고서 워크플로우: 데이터 수집 → 정리 → 계산 → 시각화 → 이메일 발송

**AI에게 요청하는 법:**
> "이 워크플로우를 자동화해줘: [단계1] → [단계2] → [단계3]"

---

### 2. 트리거 / 액션 (Trigger / Action)

**한 줄 정의:** 트리거는 "시작 신호", 액션은 "그때 할 일".

**비유:** 알람(트리거)이 울리면 기상(액션)한다. 손님이 들어오면(트리거) 인사한다(액션).

**트리거 종류:**
| 트리거 유형 | 예시 |
|-------------|------|
| 시간 기반 | "매일 오전 9시에" |
| 이벤트 기반 | "이메일이 오면", "파일이 업로드되면" |
| 조건 기반 | "매출이 100만원을 넘으면" |
| 수동 | "내가 버튼을 누르면" |

**실제 활용 예:**
- 트리거: 구글 폼에 응답이 제출됨 → 액션: 스프레드시트에 기록 + 확인 이메일 발송
- 트리거: 매주 월요일 오전 8시 → 액션: 지난주 데이터 요약 리포트 생성

**AI에게 요청하는 법:**
> "[조건/시간]이 되면, 자동으로 [할 일]을 실행하는 자동화를 만들어줘"

---

### 3. API 연동 (API Integration)

**한 줄 정의:** 서로 다른 앱이나 서비스를 연결하는 통로.

**비유:** API는 "앱들의 악수 방법"입니다. 카카오톡 앱과 네이버 지도 앱이 서로 데이터를 주고받을 수 있는 것은 API 덕분입니다. 식당의 주방과 홀을 연결하는 "주문서 시스템"이라고 생각해도 됩니다.

**API가 하는 일:**
- 구글 스프레드시트 ↔ 슬랙 연결 (새 행 추가되면 슬랙 메시지 발송)
- 노션 ↔ 이메일 연결 (노션 데이터베이스 업데이트 시 이메일 알림)
- 사내 시스템 ↔ 외부 서비스 연결

**API 키(Key):** API를 사용하기 위한 "출입증". 잃어버리거나 공유하면 다른 사람이 우리 계정으로 악용할 수 있습니다.

**AI에게 요청하는 법:**
> "[서비스A]와 [서비스B]를 API로 연결해줘. [서비스A]에서 [이런 일]이 일어나면 [서비스B]에서 [이런 액션]을 실행해줘."

---

### 4. 스케줄링 / Cron (Scheduling)

**한 줄 정의:** "언제" 자동으로 실행할지 정하는 것.

**비유:** 핸드폰 알람을 설정하는 것과 같습니다. 매일 같은 시간, 특정 요일, 매월 특정 날짜에 자동으로 실행됩니다.

**Cron 표현식:** 서버에서 스케줄을 표현하는 방법. 직접 쓸 필요는 없지만, AI에게 이렇게 요청하면 됩니다:

| 내가 원하는 것 | AI에게 요청하는 말 |
|----------------|-------------------|
| 매일 오전 9시 | "매일 오전 9시에 실행" |
| 매주 월요일 | "매주 월요일 오전 8시에 실행" |
| 매달 1일 | "매월 1일 자정에 실행" |
| 평일만 | "월~금 오전 9시에 실행" |

**활용 예:**
- 매일 오전 8시: 오늘의 일정 슬랙 알림
- 매주 금요일 오후 5시: 주간 업무 요약 이메일
- 매월 마지막 날: 월간 데이터 백업

---

## Tier 2: 알면 훨씬 잘 쓸 수 있는 중급 개념

### 5. 에러 핸들링 (Error Handling)

**한 줄 정의:** 자동화가 실패했을 때 어떻게 대처할지 미리 정해두는 것.

**비유:** 비행기 조종사가 엔진 하나가 꺼져도 착륙할 수 있는 비상 절차를 훈련받는 것. 문제가 생겼을 때 "그냥 추락"하지 않고 안전하게 대처하는 계획입니다.

**에러 핸들링이 없으면:**
- 파일을 못 찾으면 → 자동화 전체 중단
- 인터넷 연결이 끊기면 → 아무 설명 없이 멈춤
- API 응답이 늦으면 → 에러로 처리되어 데이터 손실

**에러 핸들링이 있으면:**
- 파일을 못 찾으면 → "파일이 없습니다" 알림 후 다음 파일로 이동
- 인터넷 연결이 끊기면 → 3번 재시도 후 그래도 안 되면 알림
- API 응답이 늦으면 → 1분 기다렸다 재시도

**AI에게 요청하는 법:**
> "각 단계에서 에러가 발생할 경우를 처리해줘. 실패 시 재시도하고, 그래도 안 되면 나에게 알림을 줘."

---

### 6. 로깅 (Logging)

**한 줄 정의:** 자동화가 무엇을 했는지 기록을 남기는 것.

**비유:** 공장의 생산 일지. 언제 무엇을 만들었는지, 불량이 몇 개였는지, 어떤 문제가 있었는지 기록해두면 나중에 문제가 생겼을 때 추적할 수 있습니다.

**로그에 남겨야 할 것들:**
- 실행 시작/종료 시간
- 처리한 데이터 건수
- 발생한 에러와 그 원인
- 주요 처리 결과

**AI에게 요청하는 법:**
> "실행 로그를 파일로 저장해줘. 언제 시작했는지, 몇 건을 처리했는지, 에러가 있었는지 기록해줘."

---

### 7. 환경 변수 (Environment Variable)

**한 줄 정의:** 코드 밖에 별도로 보관하는 설정값. 특히 비밀 정보에 사용.

**비유:** 금고에 열쇠를 보관하고, 코드에는 "금고 번호"만 적어두는 것. 코드가 유출되어도 진짜 열쇠(API 키, 비밀번호)는 안전합니다.

**환경 변수로 관리해야 할 것:**
- API 키 (구글, 슬랙, 카카오 등)
- 데이터베이스 비밀번호
- 서비스 접속 URL
- 서버 주소

**이렇게 생겼습니다:**
```
# .env 파일 (코드와 분리된 비밀 파일)
SLACK_API_KEY=xoxb-1234-5678-abcd
GOOGLE_API_KEY=AIzaSy...
DB_PASSWORD=mysecretpassword
```

**AI에게 요청하는 법:**
> "API 키와 비밀번호는 코드에 직접 넣지 말고, .env 파일에서 읽어오도록 만들어줘."

---

### 8. 웹훅 (Webhook)

**한 줄 정의:** "일이 생기면 즉시 알려줘"라고 등록해두는 알림 시스템.

**비유:** 일반 전화(Polling)는 "지금 뭔가 있어요?"라고 내가 계속 물어보는 것. 웹훅은 "뭔가 생기면 먼저 전화해줘"라고 등록해두는 것. 훨씬 효율적입니다.

**웹훅 vs 일반 방식 비교:**
| 방식 | 비유 | 특징 |
|------|------|------|
| 주기적 확인(Polling) | 5분마다 메일함 확인 | 불필요한 반복, 느린 반응 |
| 웹훅(Webhook) | 새 메일 오면 알림 받기 | 즉각 반응, 효율적 |

**웹훅 활용 예:**
- 쇼핑몰에서 주문 완료 시 → 자동으로 재고 시스템 업데이트
- 고객이 폼 제출 시 → 즉시 CRM에 등록
- 슬랙에서 특정 메시지 수신 시 → 담당자에게 이메일 알림

**AI에게 요청하는 법:**
> "[서비스]에서 [이벤트]가 발생하면 웹훅으로 우리 시스템에 알려주도록 설정하는 방법을 알려줘."

---

## Tier 3: 고급 자동화를 이해하기 위한 심화 개념

### 9. 이벤트 드리븐 아키텍처 (Event-Driven Architecture)

**한 줄 정의:** "이벤트(사건)가 발생할 때만 반응"하는 시스템 설계 방식.

**비유:** 자동문. 사람이 접근할 때만 열립니다. 계속 열려있거나, 주기적으로 열렸다 닫히는 것이 아니라, "사람이 왔다"는 이벤트에 반응하는 것입니다.

**장점:**
- 필요할 때만 작동 → 자원 낭비 없음
- 각 시스템이 독립적 → 하나가 고장나도 다른 것에 영향 없음
- 확장하기 쉬움

**실제 예시:**
- 고객이 결제 완료 (이벤트) → 영수증 발송, 재고 감소, 배송 준비 동시 시작
- 파일이 업로드됨 (이벤트) → 바이러스 검사, 썸네일 생성, 데이터베이스 등록

---

### 10. 큐 / 메시지 브로커 (Queue / Message Broker)

**한 줄 정의:** 처리할 작업들을 줄 세워서 순서대로 처리하는 대기열 시스템.

**비유:** 은행 번호표 시스템. 손님이 많이 몰려도 번호표를 뽑고 순서대로 처리합니다. 창구가 바빠도 손님이 사라지지 않고 대기합니다.

**큐가 필요한 상황:**
- 한 번에 너무 많은 요청이 들어올 때
- 처리 속도보다 입력 속도가 빠를 때
- 처리 실패 시 재시도가 필요할 때

**실제 예시:**
- 이메일 발송 시스템: 한꺼번에 1만 명에게 보낼 때, 큐에 넣고 순서대로 발송
- 이미지 처리: 업로드된 이미지를 큐에 넣고 하나씩 리사이징

---

### 11. 멱등성 (Idempotency)

**한 줄 정의:** 같은 작업을 여러 번 실행해도 결과가 동일한 성질.

**비유:** 엘리베이터 버튼. 한 번 누르든 열 번 누르든 엘리베이터는 한 번만 옵니다. 반대로 멱등성이 없는 시스템은 버튼을 10번 누르면 엘리베이터가 10번 오는 것과 같습니다.

**왜 중요한가:**
- 자동화가 실패해서 재실행할 때, 중복 처리가 발생하지 않아야 합니다.
- 네트워크 문제로 같은 요청이 두 번 전달되어도 두 번 결제되면 안 됩니다.

**실제 예시:**
- 고객 등록: 같은 이메일로 두 번 등록 시도해도 고객은 한 명만 생성
- 결제 처리: 결제 요청이 중복 전달되어도 한 번만 결제

**AI에게 요청하는 법:**
> "이 자동화가 실수로 두 번 실행되어도 중복 처리가 되지 않도록 만들어줘."

---

### 12. 롤백 (Rollback)

**한 줄 정의:** 자동화 도중 문제가 생겼을 때 이전 상태로 되돌리는 것.

**비유:** 문서 작업의 "실행 취소(Ctrl+Z)". 여러 단계로 이루어진 자동화에서, 중간에 실패하면 이미 처리한 것들을 원상복구하는 기능입니다.

**롤백이 필요한 상황:**
- 데이터베이스에 1000건을 입력하는 중 500번째에서 오류 → 이미 입력한 499건 삭제
- 파일 이동 작업 중 실패 → 원래 위치로 복원
- 설정 변경 중 오류 → 이전 설정으로 되돌림

**AI에게 요청하는 법:**
> "자동화 도중 오류가 발생하면, 이미 처리한 작업들을 원상복구(롤백)하도록 만들어줘."

---

## 용어 사전 (빠른 참조)

| 용어 | 쉬운 말 | 한 줄 설명 |
|------|---------|-----------|
| 워크플로우 | 업무 흐름 | 작업 순서와 흐름 |
| 트리거 | 시작 신호 | 자동화를 시작시키는 조건 |
| 액션 | 할 일 | 트리거 발생 시 실행되는 작업 |
| API | 연결 통로 | 다른 앱과 데이터를 주고받는 방법 |
| API 키 | 출입증 | API 사용 권한을 증명하는 비밀 코드 |
| Cron | 자동 알람 | 정해진 시간에 자동 실행하는 스케줄러 |
| 에러 핸들링 | 비상 계획 | 오류 발생 시 대처 방법 |
| 로그 | 업무 일지 | 자동화 실행 기록 |
| 환경 변수 | 비밀 금고 | 코드 밖에 보관하는 설정값 |
| 웹훅 | 실시간 알림 등록 | 이벤트 발생 시 즉시 알려주는 시스템 |
| 큐 | 번호표 대기열 | 작업을 순서대로 처리하는 대기 시스템 |
| 멱등성 | 중복 방지 | 여러 번 실행해도 결과가 동일한 성질 |
| 롤백 | 실행 취소 | 오류 시 이전 상태로 되돌리기 |
| 이벤트 드리븐 | 반응형 설계 | 사건이 일어날 때만 반응하는 구조 |

---

## 개념 학습 로드맵

```
초보자 → Tier 1 완료 → Tier 2 완료 → Tier 3 이해
   ↓           ↓              ↓             ↓
도구 사용    기본 자동화    안정적 자동화   고급 시스템 설계
```

**추천 학습 순서:**
1. 워크플로우, 트리거/액션 이해 → 간단한 자동화 도구(Zapier, Make 등) 사용 시작
2. API, 스케줄링 이해 → AI에게 더 구체적인 자동화 요청 가능
3. 에러 핸들링, 로깅, 환경 변수 이해 → 안정적인 자동화 구축
4. 웹훅 이해 → 실시간 반응 자동화 구축
5. Tier 3 개념 → 복잡한 시스템 설계 참여

각 개념을 이해하면 AI와의 대화가 달라집니다. "이렇게 해줘"에서 "에러 핸들링과 멱등성을 고려해서 설계해줘"로 발전합니다.
