누가 무엇을 했는지 남기기

값이 바뀔 때마다 누가·언제·무엇을·얼마에서 얼마로 바꿨는지 따로 적어 두는 장부예요. 분쟁이 나면 기억이 아니라 이 기록만이 증거가 돼요.

쉽게 말하면

손으로 쓰는 가게 장부를 떠올려 보세요. 숫자를 잘못 적었을 때 지우개로 지우고 다시 쓰는 사장님은 없어요. 빨간 줄을 긋고 옆에 다시 적고, 날짜와 이름을 옆에 씁니다. 지운 장부는 나중에 증거가 못 되니까요. 서비스도 똑같아요. 값을 덮어쓰지 말고, 바뀔 때마다 한 줄을 더 적어 두는 것. 그게 이 문서의 전부예요.

값만 저장한 경우
주문 1024번 결제 금액: 42,000원

지금 값만 알아요. 원래 52,000원이었는지, 누가 언제 깎았는지는 어디에도 없어요.

기록을 함께 남긴 경우
주문 1024번 결제 금액: 42,000원 [기록] 8월 3일 14:22 계정 #7 · 52,000 → 42,000 사유: 손님 쿠폰 적용

3개월 뒤 카드사가 물어도 한 줄로 답해요. 되돌리는 것도 가능해요.

값만 저장하면 왜 안 되나

데이터베이스는 기본적으로 덮어쓰기로 움직여요. 재고 수량 칸에 12를 넣으면 원래 있던 8은 그 자리에서 사라져요. 지운 게 아니라, 8이 있었다는 사실 자체가 어디에도 안 남아요.

그래서 화면에 보이는 값은 언제나 마지막에 쓴 사람의 값이에요. 값만 보고는 두 경우를 구분할 수 없어요. 처음부터 12였던 것과, 8이었는데 누가 12로 바꾼 것. 앞의 것은 정상이고 뒤의 것은 사고일 수 있는데, 화면은 똑같이 12라고만 보여줘요.

여기까지는 대부분 짐작해요. 한 겹 더 내려가면 이런 게 있어요. 기록이 비는 이유는 보통 사람이 게을러서가 아니라, 값을 바꾸는 길이 여러 개라서예요.

  1. 1관리자 화면에서 바꾸기. 사장님이 직접 누르는 길이에요. 기록을 붙일 때 다들 이 길만 생각해요.
  2. 2프로그램이 자동으로 바꾸기. 새벽에 도는 정산, 예약 시간이 지나면 상태를 넘기는 처리 같은 것. 사람이 안 누르니 기록도 잘 빠져요.
  3. 3개발자가 데이터베이스에 직접 접속해서 바꾸기. 급한 수정은 대개 이렇게 해요. 화면을 안 지나가니 화면에 붙인 기록에는 흔적이 없어요. 정작 가장 위험한 변경이 여기서 나와요.

구멍은 사람이 아니라 길에서 생겨요

"기록 남기게 해 주세요"라고만 말하면 1번 길에만 붙어요. 그리고 사고는 2번과 3번에서 나요. 요구할 때 문장을 이렇게 바꾸세요. "값이 바뀌는 모든 길에서 기록이 남게 해 주세요." 이 한 문장 차이가 나중에 증거가 있느냐 없느냐를 가릅니다.

무엇을 적어야 증거가 되나

기록이 있는데도 쓸모없는 경우가 흔해요. 칸이 모자라서예요. 최소한 이 일곱 칸은 있어야 나중에 말이 통해요.

무엇을 적나빠지면 어떻게 되나
누가사람 이름이 아니라 계정 번호. 이름은 바뀌지만 번호는 그대로예요"관리자가 바꿨다"까지만 남아요. 관리자가 세 명이면 아무 소용이 없어요
언제초 단위까지. 저장은 세계 표준시로 하고, 보여줄 때만 한국 시간으로 바꿔요서버 위치나 시간대 설정이 다르면 순서가 뒤집혀요. 순서가 틀리면 인과가 틀려요
무엇을어떤 표의 어떤 줄의 어떤 칸인지(주문 1024번의 결제 금액)"금액이 바뀌었다"만 남아 어느 주문인지 못 찾아요
이전 값바뀌기 전의 값되돌릴 수 없고, 얼마가 깎였는지도 몰라요. 가장 자주 빠지는 칸이에요
이후 값바뀐 뒤의 값기록과 현재 값이 어긋날 때 어디서 틀어졌는지 못 짚어요
어디서접속 주소와 기기 종류안에서 난 실수와 밖에서 들어온 침입을 구분할 수 없어요
사유 한 줄(손님 요청·오입력 정정·이벤트 적용)숫자만 남아서 반년 뒤엔 본인도 이유를 기억 못 해요

시계를 먼저 맞춰요

기록의 힘은 순서에서 나와요. "환불이 먼저였나, 재고 차감이 먼저였나"를 따질 때 시각이 근거가 되니까요. 그런데 기계마다 시계가 조금씩 달라요. 그래서 시각은 각자 적지 말고 한 곳(데이터베이스)에서 받아 적게 해 달라고 요구하세요. 한국 시간으로 저장하는 것도 피하세요. 나라를 늘릴 때 전부 다시 계산해야 해요.

방식은 세 가지, 대가도 세 가지

"기록을 남긴다"는 한 가지 방법이 아니에요. 세 가지가 있고, 셋 다 무언가를 내놓아야 얻어요. 만들기 전에 어느 쪽인지 정하는 게 좋아요. 나중에 바꾸면 그전 기록과 모양이 달라져서 합쳐 보기 어려워져요.

방식어떻게 하나얻는 것치르는 대가
기록표를 따로 두기값을 바꾸는 곳마다 "기록 한 줄 추가"를 같이 실행해요만들기 쉽고 조회가 빨라요. 사유도 담을 수 있어요빠뜨리면 안 남아요. 구멍이 가장 잘 생기는 방식이에요
이력을 전부 쌓기고치지 않고 새 줄을 계속 쌓아요. 현재 값은 "마지막 줄"이에요흐름이 통째로 남고 되돌리기가 쉬워요저장 공간이 빨리 늘고, 화면 만드는 코드가 복잡해져요
데이터베이스에 맡기기값이 바뀌면 자동으로 기록되게 데이터베이스 쪽에 장치를 걸어 둬요코드에서 빼먹을 수가 없어요. 3번 길(직접 수정)까지 잡혀요"왜 바꿨는지" 같은 사람의 사유를 담기 어려워요. 다른 데이터베이스로 이사하면 다시 만들어야 해요

실무에서 많이 쓰는 답은 섞는 거예요. 돈과 개인정보가 걸린 표는 세 번째 방식으로 빠짐없이 잡고, 사장님이 보는 기록 화면은 첫 번째 방식으로 사유까지 담아요. 둘을 같은 화면에서 나란히 보여주면 됩니다.

남기면 안 되는 것도 있어요

기록은 많이 남길수록 좋다고 생각하기 쉬운데, 여기서 사고가 나요. 기록은 오래 남고 지우기 어렵게 만드는 게 목적이에요. 그래서 한번 들어간 것은 빼기가 아주 힘들어요.

  1. 1비밀번호·카드번호 전체·주민번호는 절대 넣지 않아요. 본 데이터는 조심하는데 기록에는 그대로 복사하는 경우가 정말 많아요. 창고는 잠갔는데 창고 일지에 금고 비밀번호를 적어 둔 셈이에요.
  2. 2사람은 이름 대신 번호로 적어요. 회원 번호만 적어 두면 손님 정보를 지워도 흐름은 남고, 기록만 봐서는 누구인지 알 수 없어요. 지워 달라는 요청과 기록 보존이 부딪히지 않는 지점이에요.
  3. 3읽기까지 전부 남기지 않아요. 남길 것은 바뀐 것이에요. 조회를 다 남기면 양이 수십 배가 돼요. 예외는 딱 하나, 민감한 정보를 누가 열어 봤는지 봐야 하는 화면이에요.
  4. 4손님의 사소한 행동은 기록이 아니라 통계로 봐요. 장바구니에 담았다 뺐다 하는 것은 통계 도구가 볼 일이에요. 증거용 장부에 섞으면 정작 필요한 줄을 못 찾아요.

보관 기간은 직접 확인해서 정하세요

"영원히 보관"이 안전해 보이지만 아니에요. 손님 정보를 오래 갖고 있는 것 자체가 위험이라서요. 반대로 너무 짧으면 분쟁 때 자료가 없어요. 업종에 따라 보관해야 하는 기간이 법으로 따로 정해진 것이 있으니, 기간은 짐작하지 말고 세무 담당이나 개인정보보호위원회 안내로 확인해서 정하세요. 이 문서가 숫자를 정해 드릴 수는 없어요.

언제 무너지는가

기록은 처음엔 아무 문제가 없어요. 문제는 늘 나중에, 그리고 늘 같은 네 자리에서 터져요. 미리 알고 만들면 대비가 한 줄이면 되고, 모르고 만들면 나중에 전부 다시 해야 해요.

언제무슨 일이 나나미리 해 둘 일
기록이 본문보다 빨리 쌓일 때주문 한 건에 상태가 다섯 번 바뀌면 기록은 주문의 다섯 배 속도로 늘어요. 몇 달 만에 가장 큰 표가 돼요오래된 기록을 값싼 저장소로 옮기는 방법을 처음에 정해 둬요. 지우는 게 아니라 옮기는 거예요
줄 수가 수십만을 넘길 때"이 손님 이력만 보기"가 느려져요. 대상과 날짜로 찾는 색인이 없으면 목록이 아예 안 열려요대상·날짜 두 가지로 바로 찾을 수 있게 해 달라고 만들 때 요구해요
같은 시간에 손님이 몰릴 때쓰기가 기록표 한 곳에 몰려서 원래 기능까지 같이 느려져요몰리는 시간대에 기록 화면을 열어 보는 것부터 조심해요. 조회가 무거우면 서비스가 흔들려요
삭제와 함께 지워지게 만들었을 때손님이 탈퇴하거나 주문이 지워질 때 기록도 같이 사라져요. 분쟁은 지워진 다음에 오는데 그때 아무것도 없어요"본문이 지워져도 기록은 남나요?"를 만든 사람에게 반드시 물어봐요

여기서 한 가지를 정해야 해요

기록 남기기가 실패하면 원래 작업도 실패시켜야 할까요? 정답은 하나가 아니에요. 돈이 오가는 일은 같이 실패시키는 게 맞아요. 기록 없는 결제는 나중에 소명할 수 없으니 아예 안 하는 게 나아요. 반대로 로그인 이력처럼 사후 참고용이면, 기록이 안 됐다고 손님 로그인을 막으면 안 되죠. 이 판단을 만들기 전에 표별로 정해 두세요. 나중에 정하면 이미 한쪽으로 만들어져 있어요.

사장님이 실제로 겪는 장면

장면 1 · 외주 개발자가 말했다

기록 남기는 건 급하지 않으니 오픈하고 나서 붙이죠. 일단 열어야 하니까요.

다른 기능은 나중에 붙여도 그때부터 잘 돌아가요. 기록은 달라요. 붙이기 전 기간은 영원히 비어 있어요. 지난달 분쟁은 지난달 기록으로만 증명하니까요. 미루는 순간 그만큼의 증거를 포기하는 거예요. 기록은 소급이 안 되는 드문 기능이라, 오픈 전에 넣어야 하는 몇 가지 중 하나예요.

장면 2 · 손님이 카드사에 이의제기를 걸었다

결제한 금액과 청구된 금액이 다르다고 하는데, 저는 쿠폰을 적용한 것뿐이에요.

카드사 이의제기는 사장님이 자료를 내서 소명하는 절차예요. 언제 어느 계정이 금액을 얼마에서 얼마로, 왜 바꿨는지 한 줄로 남아 있으면 이건 5분 걸리는 일이에요. 없으면 기억으로 다투게 되는데, 기억은 자료가 아니에요. 기록이 있는 가게와 없는 가게는 같은 분쟁에서 결과가 갈려요.

장면 3 · 직원이 그만둔 뒤 재고가 안 맞는다

숫자가 계속 어긋나는데 누가 만졌는지 아무도 몰라요. 계정은 같이 쓰고 있었어요.

여러 사람이 계정 하나를 같이 쓰면 기록이 있어도 쓸모가 없어요. 모든 줄에 같은 이름이 적히니까요. 기록의 절반은 사람마다 다른 계정이 만들어요. 계정을 나누는 일이 기록을 남기는 일보다 먼저예요. 그만둔 사람의 계정을 끊는 것도 같은 이유로 중요해요.

남에게 맡길 때 요구할 것과 확인할 것

외주든 AI든, 말하지 않으면 기록은 대개 안 들어가요. 화면에 보이지 않는 기능이라 주문서에 없으면 빠져요. 요구는 이 네 문장이면 충분해요.

  1. 1"값이 바뀌는 모든 길에서 기록이 남게 해 주세요." 화면·자동 처리·직접 수정 세 가지를 말로 짚어 주세요.
  2. 2"이전 값과 이후 값을 둘 다 남겨 주세요." 이 한 문장이 되돌리기와 소명을 가능하게 해요.
  3. 3"관리자도 기록을 고치거나 지울 수 없게 해 주세요." 지울 수 있는 기록은 증거가 아니에요. 불리한 줄만 지운 게 아니라는 걸 증명할 방법이 없거든요.
  4. 4"본문이 지워져도 기록은 남게 해 주세요." 탈퇴·주문 삭제와 함께 기록이 따라 지워지는 설계가 흔해요.

확인은 말로 받지 말고 손으로 하세요. 순서가 있어요. 먼저 관리자 화면에서 값 하나를 일부러 바꿔 보고, 기록에 이전 값·이후 값·시각·계정이 다 뜨는지 눈으로 봐요. 그다음 개발자에게 데이터베이스에서 직접 값을 하나 바꿔 달라고 부탁하고, 그때도 기록이 남는지 봐요. 두 번째 시험을 통과하는 곳이 생각보다 드물어요. 통과한다면 제대로 만든 겁니다.

자주 묻는 것

Q. 혼자 하는 가게인데도 필요해요?
필요해요. 사람이 여럿이라 남기는 게 아니라, 반년 전의 내 기억을 못 믿어서 남기는 거예요. 그리고 분쟁 상대는 직원이 아니라 손님이나 카드사예요. 혼자여도 상대는 있어요.
Q. 백업이 있으면 되지 않나요?
백업은 어제 찍은 사진이에요. 어제와 오늘이 다르다는 건 알려 주지만, 그 사이에 누가 왜 바꿨는지는 안 알려 줘요. 백업은 되살리는 도구, 기록은 설명하는 도구예요. 서로 대신할 수 없어요.
Q. 기록이 쌓이면 요금이 오르지 않나요?
올라요. 그래서 오래된 기록은 값싼 저장소로 옮겨 두는 방식을 써요. 다만 옮기기 전에 지우면 안 되니, 옮기는 방법을 정해 두고 시작하세요. 나중에 급해서 지우는 게 최악이에요.
Q. 손님이 정보를 지워 달라고 하면 기록도 지워야 하나요?
법과 업종이 걸려서 한 줄로 답하기 어려워요. 실무에서 흔한 방식은 기록에서 사람을 특정하는 부분만 지우고 흐름은 남기는 거예요. 판단은 개인정보 처리 기준과 개인정보보호위원회 안내를 확인해서 정하세요.
Q. AI에게 만들라고 하면 알아서 넣어 주나요?
말하지 않으면 대개 안 넣어요. 화면에 안 보이는 기능이라 주문에 없으면 생략돼요. 대신 한 문장으로 요구하면 잘 넣어 줘요. 처음 만들 때 넣는 게 나중에 붙이는 것보다 훨씬 쉬워요.
Q. 기록 화면은 누구에게 보여줘야 하나요?
기록 화면 자체가 손님 정보 창고예요. 그래서 아무나 못 보게 해야 해요. 직원에게는 자기가 담당하는 범위만 보이게 하는 게 정석이에요.

확인해 보세요

재고 수량이 잘못돼 있어요. 되돌리려면 기록에 반드시 있어야 하는 것은?

하나 더

다음 중 증거가 될 수 없는 기록은?

직접 해보기

스튜디오에서 기록을 주문해 보세요

만들 때 한 문장을 더 얹으면 돼요. "값을 바꿀 때마다 누가·언제·이전 값·이후 값·사유를 남기고, 그걸 볼 수 있는 관리자 화면도 넣어 주세요." 지금 만들고 있는 것에 붙여도 되고, 새로 시작할 때 처음부터 넣어도 돼요.

스튜디오 열기

더 깊이 (안 읽어도 괜찮아요)

쌓기만 되는 표로 만드는 법 · "지우지 않기로 약속했어요"는 안전장치가 아니에요. 사람은 급하면 약속을 깨요. 방법은 권한을 좁히는 거예요. 기록표에는 줄을 넣는 것만 되고 고치기·지우기는 아예 안 되게 데이터베이스 권한을 설정해요. 약속이 아니라 구조로 막는 것. 이게 증거로 인정받는 기록의 조건이에요.

한 묶음으로 남기기 · 한 번의 작업이 여러 값을 바꿀 때가 있어요. "주문 확정" 한 번에 주문 상태·재고·정산 예정액 세 개가 같이 바뀌죠. 이때 세 줄에 같은 작업 번호를 달아 두면 나중에 "그 작업 하나"를 통째로 되돌릴 수 있어요. 번호가 없으면 세 줄이 남남이라, 하나만 되돌리고 나머지를 놓치는 일이 생겨요.

기록을 본 사람도 기록해요 · 민감한 정보를 다루는 곳은 "누가 이 손님 정보를 열어 봤는지"까지 남겨요. 값을 바꾸지 않아도 들여다본 것 자체가 문제가 될 수 있으니까요. 병원이나 금융처럼 규제가 있는 업종에서 흔한 방식이고, 일반 가게에는 과할 수 있어요. 다루는 정보가 민감할 때만 생각하세요.

비유가 어디부터 다른가 · 종이 장부 비유는 대부분 맞지만 한 가지가 달라요. 종이는 물리적으로 남지만 데이터는 지우면 감쪽같아요. 그래서 종이 장부에는 없던 장치가 필요해요. 줄마다 앞줄과 이어지는 표시를 넣어서, 중간 한 줄을 몰래 빼면 표시가 어긋나 들통나게 만드는 방식이에요. 큰 금액을 다루는 곳에서 씁니다.

이것만 기억하세요

  • ·장부는 지우지 않아요. 바뀔 때마다 한 줄을 더 적어요
  • ·이전 값이 없는 기록은 되돌릴 수도, 소명할 수도 없어요
  • ·기록은 소급이 안 돼요. 붙이기 전 기간은 영원히 비어 있어요
  • ·관리자도 못 지우게, 본문이 지워져도 남게 만들어요
  • ·비밀번호·카드번호·주민번호는 기록에 넣지 않아요
VibeCampusNew build