세로는 업무 도메인, 가로는 그것을 떠받치는 공통 기반입니다. 가로는 모든 칸을 관통합니다.
가로를 먼저 세우면 세로 도메인이 늘어도 각 칸이 자동으로 채워지고, 늦게 세우면 이미 만든 모든 칸을 되돌려 고쳐야 합니다. 그리고 CMS의 직접 고객은 시청자가 아니라 내부 운영자입니다. 그들이 쓰는 화폐는 시간입니다.
원장이 없으면 CMS를 고치는 동안 돈이 새도 아무도 모르고, 감사로그가 없으면 누가 무엇을 바꿨는지 사고가 난 뒤에야 압니다. 둘 다 기존 시스템을 건드리지 않고 병렬로 기록만 하면 되므로 싸고 안전합니다. 기간은 현행을 본 뒤에 말씀드립니다. 지금 드릴 수 있는 것은 순서와 넘어가는 조건입니다.
10년 전 제가 팀과 함께 만든 시스템은 그 사이 계속 진화했을 겁니다. 다만 초기 설계의 의도와 제약을 아는 사람은 현재 구조와 운영 부채를 가장 빠르게 읽어냅니다.
속도 지표에는 반드시 품질 짝지표를 붙이고, 조작 가능한 지표는 쓰지 않습니다. 그런데 이 지표들은 처음엔 존재하지 않습니다. 그래서 첫 일은 성과를 내는 것이 아니라 성공을 잴 자를 만드는 것입니다.
| 문제 | 왜 아픈가 | 설계 답 |
|---|---|---|
| 저장소 두 벌 | 정확성과 검색 속도가 서로 다른 것을 요구한다 | 원본 · 조회 분리 후 변경분만 실시간 복사 |
| 바깥 시스템 실패 | 변환 · 저작권 보호 · 전송망은 자주 실패한다 | 작업 흐름 엔진이 진행 상태와 재시도를 책임진다 |
| 대량 입력 | 콘텐츠가 늘 때마다 입력할 사람도 늘어야 하면 무너진다 | AI가 초안, 최종 승인은 사람(HITL) |
| 편성과 노출 | 시간 축과 자리 축을 한 테이블로 합치면 급한 변경에서 터진다 | 두 축을 분리해 모델링 |
| 다국어 | 언어를 표의 칸으로 두면 나라 추가가 시스템 공사가 된다 | 공통 원본 + 덧씌우기, 나라 추가를 데이터 입력으로 |
| 권리(계약) | 엑셀로 관리하면 만료 콘텐츠가 노출된다 — 사고가 나야 발견된다 | 권리 윈도우를 모델에 넣고 만료를 자동 알림 |
전환은 빅뱅이 아니라 저위험 도메인부터 감싸며 교체합니다. 수급과 편성은 하루도 멈출 수 없습니다.
그래서 원장 없이 결제를 바꾸면, 바꾼 것이 맞는지 검증할 기준이 없습니다. 결제 수단은 어댑터로 격리하고, 같은 요청이 두 번 와도 한 번만 처리되도록 멱등키를 겁니다.
운영자가 개발팀을 기다리지 않고 요금제와 편성을 직접 다룰 수 있어야 사업 속도가 납니다.
효율만 좇으면 권한이 헐거워지고, 통제만 좇으면 아무도 일을 못 합니다. 이 긴장을 설계로 풉니다.
| 가장 큰 구멍 | 왜 위험한가 | 조치 |
|---|---|---|
| 운영 DB 직접 접속 | 화면 권한을 아무리 잘 걸어도 우회 경로가 있으면 통제는 없는 것과 같다 | 상시 접속을 없애고, 필요할 때 사유와 함께 2시간짜리로 받는다 |
| 권한 안에서의 이상 행위 | 권한 있는 사람의 대량 조회는 권한 검사를 통과한다 | 절대 건수가 아니라 개인별 평소 패턴 대비 이탈로 탐지 |
| 지울 수 있는 기록 | 관리자가 지울 수 있으면 감사로그가 아니다 | 본인도 못 지우는 별도 저장소에 추가만 가능하게 보관 |
가르는 기준은 되돌릴 수 있는가입니다. 되돌릴 수 있는 일은 즉시 처리하고, 되돌릴 수 없는 일에만 승인과 기록을 겁니다.