관리자 로그인 페이지의 데모 계정 힌트 제거
목차
로그인 페이지에 박혀 있던 데모 계정 힌트 텍스트를 제거했다.
왜 이게 남아 있었나
개발 초기에는 늘 이런 코드가 생긴다. 팀원들이 빠르게 로그인해서 기능 확인할 수 있도록 UI에 직접 계정 정보를 적어두는 것. admin / admin1234 같은 텍스트가 입력 필드 아래 작은 글씨로 박혀 있는 그거. 처음엔 편하다. 새로 합류한 팀원도 금방 접속하고, 기획자도 직접 확인하고, QA도 별도 안내 없이 진행할 수 있다.
문제는 이게 개발 편의용으로 들어온 코드가 운영 코드로 그대로 흘러가는 패턴이라는 점이다. 이번에 src/app/admin/login/page.tsx에서 제거한 힌트도 정확히 그 케이스였다. 누군가 급하게 넣었을 거고, 그 다음 PR에서도, 그 다음 릴리즈에서도 아무도 건드리지 않은 채로 남아 있었던 것이다.
작아 보이는 변경, 하지만 짚고 넘어가야 하는 이유
변경 파일이 page.tsx 하나고 통계도 작은 수준의 수정일 가능성이 높다. 코드 자체는 몇 줄 지우면 끝이다. 그런데 이 작업을 별도 커밋으로 남긴 건 이유가 있었다.
- 관리자 로그인 페이지는 외부 노출 여부와 무관하게 접근 가능한 엔드포인트다
- 데모 계정 힌트가 UI에 남아 있다는 건, 그 계정이 실제로 살아 있을 가능성을 암시한다
- 운영 환경에서 관리자 페이지 로그인 힌트가 보인다면, 내부 감사나 보안 점검에서 바로 지적이 나온다
- 팀 외부 사람이 해당 URL에 접근했을 때 신뢰도 문제로 이어질 수 있다
이런 류의 잔존 코드는 기능 버그보다 우선순위가 낮아 보이지만, 막상 외부에서 발견되면 "이 팀 운영을 어떻게 하는 거야"라는 인상을 남긴다. 총괄 입장에서는 기능 완성도만큼 이런 위생 상태도 팀 신뢰도의 일부라고 생각한다.
이런 코드가 생기지 않으려면
솔직히 이걸 코드리뷰에서 잡았어야 했다. 처음 이 힌트가 추가된 PR에서 누군가 "이거 개발용이면 환경변수로 분기 처리하거나, 아예 .env.local에서만 렌더링하게 해야 하지 않냐"고 한마디 했으면 됐다.
// 이런 패턴이라도 썼으면 나았을 것
{process.env.NODE_ENV === 'development' && (
<p className="text-xs text-muted">
데모: admin / admin1234
</p>
)}
물론 이것도 완벽한 해결은 아니다. NODE_ENV 분기 자체가 빌드 타임에 결정되니 스테이징 환경에서 어떻게 다룰지는 별도로 고민해야 한다. 그냥 안 넣는 게 제일 낫다. 계정 정보는 팀 내부 문서나 노션에 적어두면 충분하다.
앞으로 코드리뷰 체크리스트에 "개발 편의용 하드코딩 잔존 여부" 항목을 명시적으로 넣는 걸 팀에 제안해두었다. 지금은 암묵적으로 "이런 거 넣지 말자"는 컨센서스가 있지만, 암묵적인 건 새로운 팀원한테 전달이 안 된다. 문서화하거나 체크리스트로 만들어야 실제로 동작한다.
작은 커밋 하나였지만, 왜 이게 남아 있었는지 팀 프로세스 관점에서 다시 돌아보는 계기가 됐다.
끝.
댓글 0
첫 댓글 달아줘.