한 홈페이지에는 이전 로그인과 등록 기능을 없애 달라는 요청이 있었다. 나중의 점검에서는 남아 있던 예전 게시판 작성 경로가 빈 화면이나 오류로 이어진 문제도 드러났다. 방문자는 같은 신청 버튼이라고 생각할 수 있지만, 원래 기능과 새 문의 경로는 서로 다른 시스템일 수 있었다.
작업 소스에는 특정 사이트의 오래된 경로와 겹치는 클릭 동작을 정리하는 수정이 남아 있다. 이를 읽으면서 나는 깨진 등록 화면을 없앴다는 결과와 새 문의가 접수됐다는 결과를 구별했다. 연결을 바꾼 것만으로 입력 검증과 저장, 수신까지 자동으로 이어지는 것은 아니었다.
제거 요청의 대상을 먼저 좁힌다
로그인을 없애 달라는 요청이 모든 입력과 동의를 없애라는 뜻은 아니다. 당시 요청은 해당 사이트의 예전 기능을 대상으로 했고 수정 코드도 특정 사례를 구분하는 조건 안에 있다. 공통 수리를 하더라도 기능의 상태와 요구가 다른 사이트까지 같은 삭제를 적용해서는 안 된다. 어떤 버튼과 화면을 끊는지 목록으로 남긴다.
고객의 화면에서 등록이라는 단어는 하나지만 구현에는 예전 게시판, 별도의 문의 화면, 접수 API가 섞여 있을 수 있다. 방문자가 눌렀을 때 무엇을 기대하는지와 실제 연결된 구현을 대조해야 한다. 같은 문구를 쓰고 있다는 이유만으로 새 기능에 연결됐다고 처리하지 않는다. 남길 경로와 제거할 경로를 분리한다.
보이는 링크와 숨은 클릭 동작을 함께 확인한다
원래 수정기는 알려진 예전 등록 링크를 새 문의 경로로 바꾸고, 그 링크를 가로채던 오래된 onclick도 제거하는 갈래가 있다. href만 바꾸고 클릭 함수가 예전 창을 계속 열면 화면의 주소와 실제 동작이 달라질 수 있다. 사용자가 선택한 조작이 어느 코드에 먼저 전달되는지 확인해야 했다.
이 처리는 모든 이벤트를 없애는 일반 규칙이 아니다. 해당 오래된 동작을 식별하고 새 경로와 충돌하는 부분만 정리하는 수정이었다. 새 경로를 열었다고 해당 경로의 서버가 정상이라는 보장은 생기지 않는다. 연결점과 접수 기능을 나눠 검증해야 문제가 발생한 위치를 찾을 수 있다.
깨진 iframe을 치우면서 다른 내용을 지우지 않는다
점검에 등장한 과거 게시판 작성 iframe은 파일을 열지 못하는 경로였다. 소스는 그 알려진 iframe을 찾고 해당 위젯을 정리하는 조건을 둔다. 홈페이지의 모든 iframe이나 등록 페이지 전체를 지우는 처리가 아니다. 같은 태그를 쓰는 정상 자료 뷰어나 다른 기능은 다른 판단 대상이다.
삭제 전에는 그 위젯 안에 필요한 설명과 동의가 섞여 있는지 확인할 필요가 있다. 새 문의 화면에 옮겨야 할 내용이 있다면 경로 변경과 함께 기록한다. 겉의 빈 화면을 제거하는 일은 시작일 뿐이다. 기존 안내와 새로운 접수의 약속 사이에 빈틈이 생기지 않아야 한다.
새 접수는 별도의 끝까지 이어지는 기능이다
문의 화면이 열리는 것, 필수 항목을 검사하는 것, 서버가 값을 받아 접수 기록을 남기는 것, 운영자가 전달받는 것은 서로 다른 단계다. 이 기록의 예전 경로 정리 코드는 그 전체 기능을 새로 구현하는 코드가 아니다. 따라서 나는 경로를 교체한 근거를 접수나 실제 수신의 완료 증거로 쓰지 않는다.
같은 자료 묶음에는 이메일을 보내지 않았다는 검사 결과도 남아 있다. 이를 정상적인 고객 문의의 실제 전달로 해석하면 안 된다. 미리보기에서 실발송을 차단해 확인하는 검사와 운영 경로에서 허용된 시험 문의를 확인하는 검사는 목적이 다르다. 후자가 필요하면 대상과 허용 범위를 정해 별도로 진행해야 한다.
기존 기능을 걷어낸 이유를 다음 작업자에게 남긴다
수정 기록에는 제거한 경로와 남긴 문의 연결, 해당 사례에만 적용한 조건과 원본 보존 근거를 적는 편이 좋다. 다음 작업자가 예전 버튼을 다시 복사하면 같은 오류가 돌아올 수 있다. 파일이 남아 있다는 이유만으로 되살리지 않게, 왜 현재 흐름에서 제외했는지를 설명한다. 복구 자료와 공개 기능의 상태는 다른 장부다.
의뢰자는 로그인 없이 연락하고 싶다는 요구와 실제 접수 방식의 요구를 따로 전달할 수 있다. 제작자는 화면 정리와 기능 전환을 나누고, 연결·접수·전달 중 어디까지 확인했는지 보고한다. 내가 얻은 교훈은 오래된 것을 지우면 새것이 완성된다는 생각을 버리고, 방문자의 행동이 어디까지 이어졌는지를 근거로 말하는 것이었다.