Single Source of Truth: 비엔지니어가 모르는 (하지만 알아야 할) 개념
Source: Dev.to
“최종 버전” 문제
이런 상황을 본 적 있나요?
schedule_april.xlsxschedule_april_revised.xlsxschedule_april_revised2.xlsxschedule_april_tanaka_checked.xlsxschedule_april_FINAL.xlsxschedule_april_FINAL_actually_final.xlsx
극단적인 예는 아니지만 현재 많은 직장에서 일어나고 있습니다. 엔지니어들은 이 혼란을 단일 진실 원천(Single Source of Truth, SSOT)의 부재라고 부릅니다.
Single Source of Truth – 하나의 위치에 권위 있는 버전의 정보가 보관됩니다. 다른 모든 것은 그 위치를 가리키거나 그곳에서 생성됩니다.
“올바른 근무 일정은 여기 있다.”
“최신 회의 노트는 여기 있다.”
“이 숫자는 여기서 나온다.”
하나의 “여기”를 정하는 것이 SSOT를 실천하는 것입니다.
단일 진실 원천이란?
- 정의: 모든 정보 조각은 정확히 한 곳에만 존재합니다. 다른 모든 복사본은 그곳에서 파생되거나 해당 위치를 참조합니다.
- 이점: 어느 버전이 올바른지에 대한 혼란을 없앱니다.
- 결과: “이곳이 원천이다”라는 간단한 선언만으로도 대부분의 혼란을 해소할 수 있습니다.
실제 예시: 근무 스케줄러
저는 보육원(140명 어린이, 약 40명 직원)을 위해 Claude Code로 근무 최적화 도구를 만들었습니다. 시스템은 다음을 처리해야 했습니다:
- 파트‑타임 고정 스케줄
- 순환 스케줄
- 방별 인력 배치 요구 사항
- 15분 간격 출석 집계
Claude Code는 다음과 같은 아키텍처를 제안했습니다:
flowchart TD
A[YAML config file (staff info, constraints) – SSOT] --> B[Python script (auto‑calculation)]
B --> C[Excel output (display only)]
- YAML이 유일한 진실 원천입니다.
- Excel은 단지 출력물이며, 매 실행 시 YAML에서 다시 생성됩니다.
- Excel을 직접 편집해도 다음 실행에서 덮어쓰여 무의미합니다.
- 데이터를 바꾸고 싶다면 YAML을 수정하면 됩니다.
이 방식을 채택하고 나니 SSOT가 모든 곳에 나타났습니다:
| 아티팩트 | 역할 |
|---|---|
CLAUDE.md | Claude Code에 대한 모든 지시가 여기서 관리됩니다 – AI 동작에 대한 단일 진실 원천 파일 하나. |
content-manifest.yaml | Zenn, Qiita, note, dev.to에 게시할 글들의 URL, 초안 경로, 발행 상태를 모두 한 곳에 보관합니다. |
git 저장소 | 코드의 권위 있는 버전이며, 로컬 변경은 커밋하기 전까지는 반영되지 않습니다. |
엔지니어는 코드를 배우면서 자연스럽게 SSOT를 흡수하지만, 비엔지니어는 이를 없이 전체 작업을 운영하는 경우가 많습니다.
일상 업무에서 SSOT가 나타나는 곳
- 스케줄: 하나의 Google Sheet가 권위 있는 스케줄이며, 다른 문서는 직접 편집되지 않습니다.
- 회의 노트: Notion 페이지에 노트를 보관하고, Slack 요약은 내용을 복제하지 않고 해당 페이지에 링크합니다.
- 핵심 수치: 특정 스프레드시트 열이 원천이며, 보고서는 그 열에서 값을 가져와 복사하지 않습니다.
새로운 소프트웨어가 필요한 것이 아니라, “원천”이 어디에 있는지 결정하고 다른 모든 곳에서 이를 참조하겠다는 약속만 있으면 됩니다.
언급된 도구들
- cc-health-check – 20가지 항목으로 구성된 Claude Code 환경 진단 도구. 브라우저 기반이며 설치가 필요 없습니다.
- claude-code-hooks – AI 에이전트의 과도한 실행을 방지하기 위한 훅 컬렉션(비용 알림, 교착 상태 방지, 로깅).