B2B 스타트업 · 사례
"왜 멀티테넌시를 row-level로 했어요?" — 결정한 사람이 퇴사한 뒤에도 회의록에서 그 결정의 원문과 개정 이력을 찾는다
이걸로 되는 일"멀티테넌시 관련 결정 전부, 최신 순으로"라고 물으면 결정 6건이 말한 사람과 "아키텍처 회의 (2021-11).md · 14번째 줄" 인용, 뒤집힌 결정의 "대체됨" 배지와 함께 나온다.
새로 온 시니어 백엔드 엔지니어가 입사 나흘째에 슬랙 DM을 보냈다. "왜 멀티테넌시를 row-level로 했어요? 테넌트당 스키마가 아니라?" CTO는 대략적인 이유만 안다. 정확한 근거는 모른다. 그 결정을 밀어붙인 사람은 작년 가을에 퇴사했다. 슬랙에서 '멀티테넌시'를 검색하면 메시지 400여 개가 나오고, 그중 어느 것이 결정이고 어느 것이 지나가는 말인지는 표시되지 않는다. 18개월 전에도 같은 질문을 받았고, 그때는 답을 찾는 데 사흘이 걸렸다.
이 사람은 30인 규모 B2B SaaS의 CTO다. 2021년부터 쌓인 주간 회의록 마크다운 200여 장, 아키텍처 결정 문서 30여 장, 슬랙에서 옮겨 붙인 논의 발췌 노트 60여 장이 손에 있다. 문서는 다 있지만 어느 문장이 결정인지 표시된 곳이 없다. 이 글은 그 자료를 Consilience 워크스페이스에 넣고 결정 단위로 되묻는 과정을 따라간다. 실제 고객 사례가 아니라 가정해 본 가상 시나리오다.
무엇이 쌓여 있나
5년치가 마크다운으로 다 남아 있고, 검색도 된다. 검색이 돌려주는 것은 '멀티테넌시'라는 글자가 들어간 줄의 목록이다. 그중 어느 줄이 결정이고 어느 줄이 의견인지는 목록에 적혀 있지 않다.
- 주간 엔지니어링 회의록 200여 장 — 2021년 3월부터 매주 한 장. 대부분 첫 줄에 날짜가 적혀 있다.
- 아키텍처 결정 문서 30여 장 —
docs/adr/아래. 배경·선택지·결정·결과 순서로 쓰다가 2023년쯤부터 형식이 흐트러졌다. - 슬랙 논의 발췌 60여 장 — 스레드를 통째로 복사해 붙인 노트. 대화 날짜가 안 적힌 것이 30여 장이다.
- 워크스페이스 전체 마크다운 4,000여 장 — 위 세 종류 말고도 온보딩 문서, 회고, 스펙 초안이 섞여 있다.
- 퇴사자 3명의 문장 — 결정을 실제로 내린 사람들의 말이 회의록 본문에 그대로 남아 있다.
지금은 이렇게 한다
CTO의 현재 절차는 이렇다. 슬랙에서 '멀티테넌시'를 검색하고, 결과 400여 개를 위에서부터 훑으며 결정처럼 보이는 메시지를 찾는다. 그다음 docs/adr/를 열어 관련 있어 보이는 문서를 연다. 이름이 adr-011-tenancy.md인데 2021년에 쓰였고, 그 뒤에 이 결정이 바뀌었는지는 그 문서 안에 적혀 있지 않다.
깨지는 지점은 두 곳이다. 첫째, 검색 결과에서 "스키마 분리가 나을 것 같은데"와 "결정: row-level로 간다"가 같은 무게로 나온다. 둘째, 2023년 6월 회의에서 엔터프라이즈 고객 3개사만 별도 스키마로 빼기로 한 예외가 회의록 어딘가에 있는데, 2021년 ADR 문서에는 그 흔적이 없다. 그래서 새 엔지니어는 폐기된 결정을 최신인 줄 알고 읽는다.
18개월 전에도 같은 질문을 받았어요. 그때 사흘 걸려 찾아낸 답을 어디에 적어 뒀는지가 지금 또 기억이 안 나고요.
이렇게 준비한다
새로 쓸 문서는 없다. 이미 있는 마크다운 290여 장을 넣고, 이 팀이 쓰는 용어를 한 번 가르친다.
회의록 5년치를 결정 단위로 세우기
폴더 세 개를 끌어다 놓기
사이드바 → "소스 추출하기"(Cmd+Shift+I).
meetings/,docs/adr/,slack-notes/를 끌어다 놓고 "가져오기". 다섯 단계가 "파일 읽는 중" → "주제 파악 중" → "지식그래프 추출 중" → "관련 항목 연결 중" → "테마로 정리 중" 순으로 지나간다. 원본 마크다운은 바뀌지 않는다.이 팀 용어 가르치기
왼쪽 레일 → "도메인 어휘" → "내 분야 가르치기". "주제 파악 중"이 뽑아 둔 초안에 이 팀이 실제로 쓰는 말을 손본다. 저장한 뒤 추출 패널의 "전체 재추출"을 한 번 돌려야 이미 들어간 290여 장이 새 어휘로 다시 읽힌다.
같은 것의 다른 이름 정리하기
"관련 항목 연결 중"이
row-level tenancy,RLS,행 단위 격리를 같은 것으로 제안한다. 왼쪽 레일 → "동의어"에서 확인한다. 자동으로 적용되는 것은 없다."개정" 패널에서 계보 확인하기
지식그래프 뷰 → 왼쪽 레일 → "개정". 나중 회의록이 이전 결정을 대체하는 짝이 "신규" / "개정"으로 줄줄이 제안된다. 2023-06 회의가 2021-11 결정을 대체하는 짝을 찾아 "확인"을 누른다. 신뢰도가 높은 짝은 "적용됨"으로 이미 적용되어 있고, 그 옆에 "실행 취소"가 있다.
이렇게 묻는다
"멀티테넌시 관련해서 우리가 내린 결정 다 찾아줘. 최신 순으로."
→ 결정 6건. 2025-03 "엔터프라이즈 3개사는 별도 스키마로 뺀다"부터
2021-11 "테넌트 분리는 row-level로 간다"까지.
각 줄에 말한 사람과 해당 회의록으로 가는 링크.
"그중에 나중에 뒤집힌 거 있어?"
→ 2건. 2021-11 결정은 취소선에 "대체됨" 배지,
"아키텍처 회의 (2023-06)에서 대체됨" 링크가 그 회의록을 연다.
2022-08 "커넥션 풀은 테넌트당 하나" 결정도 2024-01에 대체됨.
"row-level로 가면서 우리가 포기한 게 뭐라고 적혀 있어?"
→ 주장 4건, 입장 2건. "격리 감사 요구가 들어오면 못 버틴다" — 재호,
반대 배지. "마이그레이션 비용이 스키마 분리의 1/5" — 지훈, 찬성 배지.이 답이 가능한 이유는 두 가지다. 하나, 추출이 회의록을 읽을 때 저자의 문장 자체를 붙잡아 둔다. row-level 테넌시 엔티티 페이지의 "당신의 표현으로" 섹션에 결정·질문·주장·인용이 종류별로 모여 있다. 퇴사한 재호의 말에는 재호가 한 말이라는 출처가, 입장에는 찬성/반대 배지가 붙어 있다.
둘, 근거를 바로 확인할 수 있다. 엔티티 페이지에서 연결 칩에 마우스를 올리면 그 사실을 말한 원문 문장이 "아키텍처 회의 (2023-06).md · 14번째 줄" 형식으로 인용된다. 답에 붙은 노트 링크를 누르면 원본 회의록이 열린다. 새 엔지니어가 읽는 것은 CTO가 다시 쓴 요약이 아니라 2021년 회의록에 재호가 실제로 친 문장이다.
무엇이 달라지나
| 예전 | 지금 |
|---|---|
| 슬랙 검색 '멀티테넌시' → 메시지 400여 개, 결정과 잡담이 뒤섞임 | 결정 6건이 최신순으로, 말한 사람과 노트 줄 번호가 붙어서 |
| 왜 그렇게 정했는지는 퇴사자 머릿속에 있었음 | "당신의 표현으로"에 그 사람의 결정·주장·입장이 원문 그대로 |
| 2021년 ADR 문서가 최신인지 폐기됐는지 알 수 없음 | 취소선과 "대체됨" 배지, "아키텍처 회의 (2023-06)에서 대체됨" 링크 |
| 슬랙 발췌 노트 30여 장은 날짜가 없어 순서를 못 맞춤 | 첫 줄에 대화 날짜를 적은 노트는 "개정" 순서에 들어옴 |