| 주제 | 이유 |
|---|---|
if __name__ == "__main__" |
배치 진입점 제어 |
import, __init__.py |
모듈 구성 |
os, pathlib |
경로/파일 다루기 |
argparse |
커맨드라인 인자 처리 |
logging |
로그 남기기 |
datetime, dateutil |
날짜 기반 배치에 필수 |
schedule, time, sleep |
시간 제어 (반복/딜레이) |
| 주제 | 이유 |
|---|---|
| 모듈 구조 설계 | 기능별 책임 분리, 유지보수 |
| 서비스 계층(Service Layer) | API/DB 호출 분리 |
예외 처리 (try-except) |
에러 무중단 실행 |
| 리팩토링 원칙 | job 단위로 나누기, 재사용성 고려 |
| 주제 | 이유 |
|---|---|
requests, httpx |
외부 API 호출 |
boto3 |
AWS S3 연동 (업로드/다운로드) |
pymysql, sqlalchemy |
MySQL 등 DB 연동 |
dotenv (python-dotenv) |
.env 파일로 환경 변수 관리 |
| 주제 | 이유 |
|---|---|
cron 또는 schedule 모듈 |
주기적 실행 (시간별, 일별 등) |
| 로그 로테이션 | 로그가 너무 커지는 것 방지 |
| 알림 연동 (Slack, 이메일 등) | 배치 실패 알림 자동화 |
유닛 테스트 (pytest) |
코드 안정성 확보 |
.gitignore 설정 |
민감정보, 로그, 가상환경 제외 |
| 주제 | 이유 |
|---|---|
| Airflow | 복잡한 배치 플로우, 의존성 관리 |
| Prefect | 파이썬 배치 자동화 대안 |
| Docker | 환경 이식성 |
| GitHub Actions | CI/CD, 스케줄 실행 |