안 보이는 건 못 고쳐
"내 파이프라인 돌아가" 에서 "내 파이프라인은 들여다볼 수 있어" 로 가는 건, 스크립트에서 시스템으로 가는 것과 같은 걸음이야. Observability 는 세 겹이고, 겹마다 막아 주는 사고의 종류가 달라.
- 로그 — 무슨 일이 있었는지, 순서대로, 사람이 읽는 형태로. 디버깅용.
- Metric — stage 마다 흘려보내는 count, duration, rate. 추세와 알림용.
- Run log — 시작 시간, 종료 시간, 성공/실패, stage 별 in/out row count, 에러를 run 단위로 남긴 기록. 사후 조사와 SLA 추적용.
구조화 로그엔 타협이 없어
일반 텍스트 로그 ('started extract') 는 터미널을 지켜보는 사람한테나 충분해. Production 급 로그는 구조화 (key=value 또는 JSON) 되어 있어서 log aggregator 가 인덱싱하고, 패턴에 알림을 걸고, run 을 가로질러 query 할 수 있어. Python logging 모듈로 가는 길은 짧아 — 설정 두 줄, 그리고 중요한 값은 꼭 실어 보내는 습관.