하루가 실제로 어떻게 생겼나
데이터 엔지니어링 마케팅 자료 속에선 다들 unicorn 을 타고 Spark cluster 와 Iceberg lakehouse 를 지나 실시간 추천 시스템으로 달려가. 실제 하루는 이래:
- 대시보드 숫자가 이상해 보인다는 Slack 메시지 triage (알고 보니 upstream 이 지난 화요일에 enum 값을 하나 추가했어).
- 누군가의 dbt PR 리뷰. Join key 에 빠진
not_nulltest 를 잡아냈어. - 새 ingestion 용 작은 Pandera schema 작성. 일주일치 historical 데이터에 돌렸더니 0.3% 의 row 가 fail — producer 를 대화에 불러들여.
- 데이터 사이언티스트와 30분 미팅. 원하는 feature 를 schema 는 받쳐 줄 수 있는데 freshness SLA 가 안 나온다고 설명.
- Transient API 실패를 더 잘 견디게 Airflow DAG 손보기.
- 지난주 사고를 복기해 보니 기존 runbook 에 한 step 이 빠져 있었어 — runbook 업데이트.
이거 멋진 일이야. 그리고 대부분 화려하지 않아. 지루한 부분이 곧 일이야. 화려한 부분은 곁가지고.
시니어와 미드를 가르는 것
본능은 같아. 겨누는 시점이 달라.
- Mid: "이 transformation 느리네, 더 큰 warehouse 로 옮기자"
- Senior: "이게 느린 건 model 이 Type 2 dimension 셋을 join 해서야 — 자연 key 에 validity 조건 거는 대신 surrogate key 를 쓰게 model 을 고치자"
- Mid: "schema 가 바뀌어서 깨졌네, consumer 를 패치하자"
- Senior: "schema 가 바뀌어서 깨졌네 — contract 랑 CI 체크를 써서 이게 다시는 일어날 수 없게 하자"
- Mid: "이번 on-call 시프트 끔찍했다, 알림을 고치자"
- Senior: "이번 on-call 시프트 끔찍했다 — 검증 게이트를 조여서 on-call 이 쳐다봐야 할 사고의 수 자체를 줄이자"
안 변하는 것
Schema. Lineage. Idempotency. Contract. Validation. Observability. 이 quest 의 어휘가 2026년 시니어 데이터 엔지니어의 작업 어휘야 — 아마 2030년에도. 도구는 돌고 돌아 (오늘의 hot orchestrator 가 내일의 legacy 마이그레이션이야). 원리는 살아남아.
오늘 오후에 당장
끝났어. 노트북 들고, inbox 에서 제일 지저분한 CSV 를 골라서, Pandera 검증에 Polars transform 에 dbt model 에 freshness 체크까지 달린 partitioned Parquet warehouse 로 바꿔 봐. 허락은 필요 없어. 오후 하나면 돼. 가.