
군대에서도 회사에서도 '내부 고객'은 비슷했다. 같은 소대의 지시를 이행하며 돌아오건, 같은 부서의 업무를 처리하며 돌아오건 결과는 느꼈다. 작거나 큰 것이나, 오는 것은 없었다. 당연한 것으로 여겼고, 당연한 것으로 받아들였다. 군대에서 소대장이 "너 청소해"라고 하면, 그걸로 끝이었다. 회사에서 팀장이 "너 이거 해"라고 하면, 그걸로 끝이었다. 이것이 Internal Service Level Agreement(SLA)의 기본 항목이었다. 하지만 Incentive는 없었다.
반면 '외부 고객'은 달랐다. 타 소대와 사역을 할 땐, 내가 그들을 위해 무언가를 해주면 그들도 나에게 무엇인가 했다. 군복지시설에서 타소대원들은 내게 무언가를 제공해주었다. 이게 바로 Cross-functional Stakeholder Management의 기본 원리였다. 주고받는 게 있으니, 관계가 유지됐다.
서비스 기획도 마찬가지였다. 유관부서를 통해 간식이나 식사 자리가 생길 때가 있었다. 하지만 그들은 나에게 무언가를 바랐다. 다른 기획자가 "못 해준다"고 한 걸, 나를 통해 이루려 했다. 이것이 바로 SQL 인젝션과 같았다.
어떻게 SQL 인젝션과 비슷한가? 그들은 정규화된 요청(Normalized Request)에 비정규화된 의도(Denormalized Intent)를 담아서 보냈다. 나는 그걸 필터링하지 못하고 그대로 개발자에게 전달했다. 개발자는 "왜 실적 데이터까지 넘기는 거요?"라고 물었고, 나는 대답하지 못했다. 그날 나는 방화벽(Firewall)이 아니라 그냥 프록시(Proxy)였다. 그들의 의도를 검증(Validation)하지 않고 그대로 흘려보냈다.
대가 없는 호의는 없었다. 유관부서는 나에게 점심을 사주고, 나는 그들의 숨은 요구사항을 기획서에 심었다. 하지만 그게 밝혀졌을 때, 욕을 먹은 건 나였다. 팀장은 "왜 유관부서 요구사항을 필터링하지 못했냐"고 했다. 유관부서는 "왜 그걸 못해줬냐"고 따졌다. 나는 Transactional Relationship의 중간에서 양쪽으로부터 Rollback을 당했다.
군대와 달랐던 점은 바로 이 '위계'였다. 군대에선 계급이 명확했다. 하지만 기업에선 '팀장'과 '파트장'과 'PM'과 '유관부서 팀장'의 관계가 복잡하게 얽혔다. 누가 누구에게 Incentive를 주고받는지, 누가 누구에게 Accountability를 지는지가 불명확했다. 그래서 나는 항상 SQL 인젝션의 대상이 되었다. 누군가의 숨은 의도를 내 몸으로 막아내야 했는데, 그걸 못하니까 나를 통해 그 의도가 그대로 흘러들어갔다.
사주로 풀이하자면, 이건 '관성(Ingress)'에 해당했다. 외부의 기운이 내부로 침범하는 것. 하지만 기술적으로는 'SQL 인젝션'이 더 정확했다. 나는 방어적 프로그래밍(Defensive Programming)을 하지 못한 취약한 API였다.
'지푸라기 > 웹서비스기획자의 일상' 카테고리의 다른 글
| 자동화 기능 하나에 인생을 거는 사람들 (0) | 2026.01.03 |
|---|---|
| 공급망의 채찍효과, 그리고 기획 부채의 복리 (0) | 2026.01.03 |
| [기획자 인사이트] 당신의 프로젝트가 6개월째 표류하는 이유: '책임 회피의 늪'에서 탈출하기 (0) | 2026.01.01 |
| 개발자의 도메인 지식, 그리고 기획자의 브릿지 ROI (0) | 2025.12.31 |
| 세 개의 서버, 그리고 파편화된 스토리보드의 대가 (0) | 2025.12.29 |
댓글