데이터 분배 자동화의 심장은 라우팅입니다. 광고 정산 자동화에서라면 "이 계정의 지출은 어느 대행사 시트로 가는가"라는 질문에 수천 번 답하는 부분입니다. 로직 자체는 조회 한 번처럼 보이지만 실무에서는 기준 데이터를 어디에 둘지, 표기 흔들림을 어떻게 흡수할지, 조회 실패를 어떻게 다룰지가 전부 설계 결정입니다. 대행사 90여 곳의 정산을 자동 분배하는 시스템에서 정리한 계정 매핑 라우팅 설계를 공유합니다.
기준 데이터는 새로 만들지 않는다
라우팅의 기준은 "계정 → 대행사, 수수료율" 매핑입니다. 이 매핑을 어디서 관리하게 할 것인가가 첫 결정이었습니다. 시스템에 관리 화면을 만들 수도 있었지만 우리는 고객이 이미 쓰던 마스터 엑셀의 계정 정리 시트를 그대로 기준으로 읽기로 했습니다.
이유는 데이터의 생명 주기입니다. 계정과 대행사의 관계는 영업 활동에 따라 수시로 바뀌고 그 변경을 실제로 아는 사람은 마스터 파일을 관리하던 담당자입니다. 별도 관리 화면을 만들면 담당자는 엑셀과 화면 두 곳을 관리해야 하고 둘은 반드시 어긋납니다. 기준 데이터는 그것을 관리하던 사람의 손 가장 가까이에 두는 것이 원칙입니다.
계정 매핑 라우팅의 세 단계: 정규화, 조회, 폴백
라우팅 파이프라인은 세 단계로 구성했습니다.
- 정규화: 원본에서 추출한 계정 식별자와 매핑 테이블의 식별자를 같은 규칙으로 정리합니다. 공백과 특수문자 제거가 기본이고, 한글 식별자처럼 규칙이 달라야 하는 유형은 예외로 분리합니다. 라우팅 실패의 대부분은 로직이 아니라 이 표기 층위에서 생깁니다.
- 조회: 정규화된 식별자로 매핑을 조회해 대행사와 수수료율을 얻습니다. 조회는 결정론적이어야 하므로, 여기에는 어떤 추측도 넣지 않습니다.
- 퍼지 폴백: 정확 일치가 실패한 일부 케이스(시트명 표기 변형 등)에 한해 부분 일치 매칭을 시도합니다. 폴백은 편의 장치이지 기본 경로가 아니며, 폴백으로 매칭된 건은 결과에서 구분할 수 있어야 안전합니다.
정확 일치를 먼저 소진하고 애매한 매칭을 뒤로 미루는 순서는, 흔들리는 데이터를 다루는 모든 매칭에서 유효한 패턴입니다. 엑셀 헤더 매핑에서 같은 원리를 쓴 사례가 엑셀 자동 파싱과 헤더 자동 감지에 있습니다.
목적지의 함정: 모든 시트가 대행사는 아니다
라우팅의 목적지는 마스터 파일의 대행사 시트인데, 마스터 파일에는 대행사가 아닌 시트도 있습니다. 매체 통합 시트, 합계 시트, 그리고 기준 데이터인 계정 정리 시트 자체입니다. 시트 목록을 그대로 대행사 목록으로 쓰면 정산 데이터가 엉뚱한 시트로 흘러갑니다.
우리는 특수 시트의 제외 목록을 명시해 "대행사 시트"만 동적으로 추출했습니다. 반대로 말하면, 담당자가 마스터에 새 대행사 시트를 추가하면 시스템 수정 없이 라우팅 대상이 됩니다. 목적지 목록도 기준 데이터처럼 마스터 파일에서 파생시킵니다.
실패의 처리가 라우터의 품질이다
수천 행을 라우팅하면 반드시 조회 실패가 나옵니다. 새로 개설된 계정, 매핑에서 누락된 계정, 표기가 심하게 다른 계정입니다. 이 실패를 어떻게 다루는지가 라우터의 품질을 결정합니다.
우리 선택은 명시적 수집입니다. 실패한 행은 어느 시트에도 쓰지 않고 미매칭 목록으로 모아 처리 결과 화면에 계정 식별자와 함께 보여줍니다. 담당자는 목록을 보고 계정 정리 시트에 매핑을 추가한 뒤 재실행합니다. 미매칭 처리의 상세 설계는 미매칭 큐 설계에서 이어집니다.
| 설계 결정 | 선택 | 이유 |
|---|---|---|
| 기준 데이터 위치 | 고객의 기존 마스터 엑셀 | 이중 관리와 불일치 방지 |
| 매칭 순서 | 정확 일치 → 제한적 퍼지 폴백 | 결정론 우선, 애매함은 뒤로 |
| 목적지 목록 | 마스터에서 동적 추출 + 제외 목록 | 대행사 추가가 무배포 작업 |
| 조회 실패 | 미매칭 수집·리포트 | 조용한 오분류 차단 |
이 라우터가 들어간 전체 시스템은 광고비 정산 자동화 사례에서, 라우팅 앞단의 매체별 파싱은 매체별 정산서 양식 차이에서 볼 수 있습니다.
자주 묻는 질문
계정 매핑 테이블은 시스템 안에서 관리해야 하지 않나요?
관리 주체가 누구인지에 달렸습니다. 매핑 변경을 실제로 아는 담당자가 이미 엑셀로 관리하고 있다면, 시스템이 그 엑셀을 기준으로 읽는 편이 이중 관리를 없앱니다. 시스템 안 관리 화면은 그 화면이 유일한 기준이 될 수 있을 때만 가치가 있습니다.
퍼지 매칭을 기본으로 쓰면 안 되나요?
권하지 않습니다. 부분 일치는 편리해 보이지만 "비슷한 다른 계정"에 잘못 붙는 위험이 있고 정산처럼 돈이 걸린 분배에서는 잘못된 매칭이 미매칭보다 훨씬 비쌉니다. 정확 일치를 기본으로, 퍼지는 좁은 폴백으로 제한하고 폴백 매칭 건은 식별 가능하게 남기는 것이 안전합니다.
라우팅 실패(미매칭)가 계속 나오면 어떻게 하나요?
미매칭 목록을 매핑 보수의 작업 큐로 쓰면 됩니다. 실행마다 어떤 계정이 왜 못 갔는지 드러나므로, 매핑 추가는 몇 줄의 운영 작업이 됩니다. 미매칭이 줄지 않는다면 표기 정규화 규칙이 원본의 변형을 못 따라가고 있다는 신호이니 규칙을 점검해야 합니다.
대행사가 늘어나면 시스템을 수정해야 하나요?
이 설계에서는 필요 없습니다. 목적지 시트 목록을 마스터 파일에서 동적으로 추출하므로, 담당자가 새 대행사 시트를 만들고 계정 매핑을 추가하면 다음 실행부터 자동으로 분배됩니다. 확장이 배포가 아니라 데이터 작업이 되는 구조입니다.