승인하는 사람과,
돈을 실제로 만지는 사람을 갈랐다
1편에서 "권한은 결국 책임이 누구에게 있느냐의 문제"라고 했죠. 이번 편은 그걸 한 발 더 들어가요. 돈을 '승인하는 사람'과 '실제로 움직이는 사람'을, 일부러 두 사람으로 갈라놓은 이야기입니다.
처음엔 권한을 단순하게 봤어요. "이 사람이 이 화면을 볼 수 있나 없나" 정도로요. 그런데 돈이 오가는 자리에선 질문이 달라집니다.
그리고 돈을 움직이는 일엔, 이런 원칙이 있다고 해요. 한 사람이 처음부터 끝까지 혼자 처리하면 안 된다는 거예요.
시스템을 들여다보니, 자금 처리가 이렇게 돌고 있었어요. 담당자가 "이 자금 처리 승인" 버튼을 누르면 — 시스템이 그 즉시 "처리 완료"로 장부에 기록했습니다. 문제가 둘이었어요.
- ① 장부가 실물보다 먼저 움직였어요. 실제 돈은 아직 안 나갔는데 시스템엔 "줬다"고 적히니, 잔액·미수금이 거짓으로 갱신됐어요. 장부가 현실과 어긋나는 거죠.
- ② 한 사람이 승인부터 처리까지 다 했어요. 승인한 사람이 그대로 "처리 완료"까지 누를 수 있으니, 중간에 걸러줄 사람이 없었습니다.
제가 현장을 보며 안 건, 실제로는 '승인하는 사람(관리)'과 '돈을 실제 처리하는 사람(재무)'이 다른 사람이라는 거였어요. 그런데 시스템은 그 둘을 한 단계로 뭉쳐 놓고 있었던 거죠.
그래서 한 단계였던 걸, 두 사람의 두 단계로 쪼갰어요.
- 승인(관리) = "이 돈, 처리해도 됩니다"라는 의사결정만. 여기선 장부에 아무것도 안 적혀요.
- 재무 확정(재무) = 실제로 돈을 처리하고 "재무 확정"을 마킹. 이때 비로소 장부에 기록돼요.
효과가 두 개예요. 시스템 기록 시점 = 실제 돈이 움직인 시점이 되어 장부가 현실과 일치하고(①번 해결), 승인한 사람과 처리한 사람이 달라져 서로가 서로를 견제하게 됩니다(②번 해결). 이렇게 직무를 나누는 걸 '직무 분리(SoD)'라고 부르더라고요. 회계·내부통제에서 오래 쓰여온 개념이라고 들었어요.
여기서 AI 팀이 중요한 구멍들을 짚어줬어요. 단계만 나눈다고 끝이 아니었거든요.
- self-confirm 차단 — 분리해놨는데 한 사람이 승인도 하고 본인이 재무 확정도 하면 도로아미타불이에요. 그래서 "승인한 사람은 그 건의 재무 확정을 못 하게" 막았어요.
- 권한 구멍 메우기 — 알고 보니 일부 권한이 승인·재무 양쪽에 다 닿아 있었어요. 그 통로를 따로 막았습니다.
- 시차 재검증 — 승인하고 재무가 확정하기까지 시간이 떠요. 그 사이 금액이 바뀌었으면? 확정 시점에 다시 한번 검증하게 했어요.
- 원자성(다 되거나, 다 안 되거나) — 처리가 반쯤 되다 멈추면 장부가 꼬여요. 그래서 관련 기록이 전부 함께 성공하거나 전부 취소되도록 묶었어요.
돈이 오가는 기능을 만들 때, 권한을 이렇게 점검했어요.
🤝 self-confirm — 허용할까, 금지할까
핵심 한 줄 요약 — 권한 분리 편
Tags
'비개발자의 개발 일지_Episode' 카테고리의 다른 글
| 시즌2 6편 — AI가 '배포해도 된다'고 했다, 그리고 스스로 말을 뒤집었다 (0) | 2026.06.27 |
|---|---|
| 시즌2 5편 — AI를 여섯으로 쪼개, 회의를 시켰다 (0) | 2026.06.23 |
| 시즌2 3편 — 배포 직전에 멈췄다, 주민번호가 '맨몸'으로 있었다 (0) | 2026.06.20 |
| 시즌2 2편 — 회사는 카톡과 엑셀, '한 사람의 손'으로 굴러가고 있었다 (0) | 2026.06.19 |
| 시즌2 1편 — 머릿속으로만 그리던 CRM이, 수출 현장에서 진짜가 됐다 (0) | 2026.06.16 |
왕진 블로그

댓글