Git-tracked FS as SSOT — 문서 도메인의 DB-less 저장소
값비싼 데이터베이스 서버를 켜지 않고, 그냥 폴더와 파일을 데이터베이스처럼 쓰는 방법이에요. 게다가 그 파일들을 git(버전 기록장) 으로 관리하니까, "누가 언제 뭘 바꿨는지" 이력이 공짜로 남아요.
비유: 서류 캐비닛 📁
도서관에 값비싼 컴퓨터 검색 시스템을 들이는 대신, 잘 정리된 서류 캐비닛을 쓴다고 생각해 봐요.
- 서랍(폴더) = 종류별 칸. "계약서 서랍", "거래처 서랍", "프로젝트 서랍"
- 서류 한 장(파일) = 데이터 한 개. 제목표(메타)와 내용(본문)이 같이 있어요.
- 서랍 이름표(디렉토리 규약) = 어떻게 정리할지 정해둔 약속. 이 약속이 곧 "규칙"이에요.
- 복사기 이력(git) = 서류를 고칠 때마다 옛날 버전을 자동으로 사진 찍어 보관해요.
새 종류의 서류가 생기면? 새 서랍 하나 만들고 이름표만 붙이면 끝. 시스템을 뜯어고칠 필요가 없어요.
어떻게 찾나 (읽기)
누가 "3번 프로젝트 서류 줘" 하면, 앱은 그냥 그 서랍을 열어 해당 종이를 읽어서 건네줘요.
앱은 대부분 읽기만 해요. 새로 쓰거나 고치는 일은 따로 만든 좁은 통로로만 하고, 보여주는 쪽은 손을 안 대요.
공짜로 따라오는 것 (버전·이력)
파일을 git 으로 관리하니까, 값비싼 기능들이 그냥 딸려와요.
- 되돌리기 = 실수해도 어제 버전으로 복구.
- 누가 바꿨나 = 기록장에 다 남아요.
- 눈으로 검토 = 뭐가 달라졌는지 색칠해서 보여주니, 사람이 승인하기 좋아요.
트레이드오프 (쉽게)
- 👍 서버 비용 0원. 폴더만 있으면 시작. 버전·이력이 공짜.
- 👍 서류 종류 추가가 쉬워요 (서랍 하나 더).
- 👎 여러 명이 동시에 같은 서류를 마구 고치면 엉켜요. → 작성자가 적고 천천히 쓰는 곳에 딱 맞아요.
- 👎 서류가 수십만 장이 되면 서랍 뒤지기가 느려져요. → 그땐 진짜 데이터베이스로 갈아탈 때.
똑똑한 점: 앱이 "서랍에서 꺼내줘" 라는 똑같은 부탁 방식만 쓰게 해두면, 나중에 뒤를 서류 캐비닛에서 진짜 DB 로 바꿔도 앱은 눈치채지 못해요.
핵심만 다시
- DB 서버 없이 폴더·파일을 데이터베이스처럼 써요.
- 서랍 이름표(디렉토리 규약) 가 곧 규칙. 새 종류는 새 서랍만 만들면 끝.
- git 으로 관리하니 되돌리기·이력·검토가 공짜.
- 동시에 마구 쓰는 곳엔 안 맞고, 차분히 쓰고 검토가 중요한 문서 도메인에 딱.
더 자세한 진짜 코드·설계는 옆의 개요 / Variants / Apply Recipe 탭에서 볼 수 있어요.