저작권 안내: 저작권자표시 Yes 상업적이용 No 컨텐츠변경 No

스프링5 입문

JSP 2.3

JPA 입문

DDD Start

인프런 객체 지향 입문 강의

'뻘 짓'에 해당되는 글 1건

  1. 2011.04.22 최근의 뻘 짓, 고객 환경 이해하기 (2)
최근 ActiveX 및 ActiveX와 연결된 클라이언트 프로그램을 업데이트를 수행하고 있는데, 이 과정에서 엄청난 뻘짓을 두 번 했다. 이 두 번 모두 고객 환경에 대한 이해가 부족한데서 발생한 것인데, 대단한 내용은 아니지만 나 스스로에게 고객 환경 이해의 중요함을 각인하기 위해 글을 정리하기로 했다.

첫 번째 뻘 짓 원인, 신뢰 사이트

작업중인 코드는 크게 두 종류의 사이트가 자바 스크립트를 이용해서 통신을 하도록 되어 있었다.
  • 개별 사이트: 공통 기능을 필요로 하는 개별 사이트로서, 공통 기능을 이용할 때 ifrmae을 사용한다.
  • 공통 기능 제공 사이트: ActiveX를 제공하며, 개별 사이트에 숨겨진 iframe으로 삽입된다.
개별 사이트와 공통 기능 제공 사이트가 자바 스크립트로 데이터를 주고 받기 위해 두 사이트 모두 document.domain을 설정하였다. 통신 과정에서 크게 문제가 발생하진 않았다.

그런데, 두 번째 개별 사이트에 기능을 추가할 때 공통 기능을 사용하려고 버튼을 클릭하면 자바 스크립트 오류가 발생한다는 고객의 신고가 들어오기 시작했다. 정말 많은 부분을 뒤졌고, 또 뒤졌지만 원인이 쉽게 찾아지지 않았다. 결국 일부 고객의 PC 환경을 보다 자세하게 분석을 했고 그 결과 스크립트 오류가 발생하는 고객이 '개별 사이트'를 신뢰 사이트에 등록한 것을 알게 되었다.

개별 사이트만 신뢰 사이트에 등록하고 공통 기능 사이트는 신뢰 사이트에 등록되어 있지 않아, 두 사이트가 자바 스크립트로 통신할 때 접근 권한과 관련된 문제가 발생한 것이다.

'신뢰 사이트'라니!!! 웹 개발을 오래 했지만 신뢰 사이트에 추가한 경우를 거의 경험하지 못 했었다. 게임 관련 일을 하는 주변 사람들에게 물어보니, 해당 사이트의 ActiveX가 설치되지 않거나 하면 신뢰 사이트에 등록해서 해결하는 경우가 종종 있기 때문에, 게임 유저 중에는 신뢰 사이트에 등록하는 경우가 드물지만 있다는 것을 알게 되었다.

이 문제를 해결하기 위해 여러 가지 안을 찾다가, 결국 개별 사이트와 공통 기능 사이트가 통신하는 부분을 모두 제거하였다. 공통 기능에서 담당해야 할 일 중 일부가 개별 사이트로 넘어가긴 했지만 기능을 정상적으로 제공하는 것이 더 중요하기에, 일부 공통 기능을 각 개별 사이트에 중복해서 구현하는 방법을 택하게 되었다.

두 번째 뻘 짓 원인, PC방 환경

첫 번째 문제도 잡았고 ActiveX도 상당 부분 안정화 되었다. 이제 거의 모든 게 잡히는 듯 했다. 그런데, 세 번째 개별 사이트에 공통 기능을 적용하는 과정에서 고객 민원이 들어오기 시작했다. 아 뭐지? 뭐지?

그 고객들의 공통된 특징을 찾다가 PC방에서 문제가 발생한다는 것을 알게 되었다. 담당자에게 주변 PC방에서 테스트해 보라고 했다. 결과는 정상 실행된다는 것이었다. 고객들이 문제가 났다는 PC방의 위치를 확인했다. 종로5가에 있는 PC방임을 확인하고, (미안하지만) 담당자를 종로5가 PC방에 급파했다.

PC방의 PC를 조사하던 중 PC 환경이 이상한 것을 알게 되었다. 프로그램 목록에는 존재하는데, 관련 파일은 찾을 수 없고, 레지스트리 정보 일부가 삭제되어 있는 것이었다. 이건 또 뭐야? 컴퓨터에 서툰 사용자가 프로그램을 삭제할 때 해당 폴더를 그대로 지우는 건 알고 있었지만, 레지스트리를 관련된 것 전부가 아니라 일부만 지운다고?

원인은 PC방에서 사용하는 '보안관'류의 프로그램이었다. '보안관'류 프로그램들은 일정 시점 이후 추가된 파일과 레지스트리를 삭제하는 기능을 제공하고 있다. 그런데, 이 프로그램이 파일은 잘 지워놓고 레지스트리는 일부만 삭제한 것이었다.

아쉽게도 일부 레지스트리 정보가 없는 경우에 대한 방어 코드가 없었고 (방어 코드를 넣긴 넣었으나 그 코드를 비켜가는 경우가 발생했다) 그 덕(?)에 실행 오류가 발생하고 말았다.

담당자들과 논의하여 긴급하게 레지스트리가 비정상적인 경우에 대한 방어코드를 추가해 패치를 진행을 했다.

뻘 짓을 왜?

앞의 두 가지 사건은 "고객의 실제 환경"에 대한 이해가 얼마나 중요한 지 알려주는 계기가 되었다. 책에서 고객을 이해하는 것이 중요하다는 문장을 많이 봐왔지만, 이렇게 피부로 느낄 수 있었던 경우는 거의 없었던 것 같다. 신뢰 사이트에 직접 서비스 사이트를 등록하는 사용자가 있음에 놀랐고, PC방에서 비정상적으로 데이터를 삭제하는 경우가 있다는 점에 한 번 더 놀랐다. 생각해보면 날 비롯한 담당자들은 정상적으로만 PC를 이용하는 유저여서 실제 고객들의 다양한 환경을 충분히 고려하지 못했던 것이었다.

지금의 경험은 나에겐 매우 중요한 경험으로 남을 것 같다. 앞으로 조금 더 고객 관점에서 생각해 볼 수 있는 계기가 되었고, 비정상적인 상황에 대한 고려가 중요함을 다시 한 번 느끼게 되었다.

앞으로 뻘 짓을 하는 회수가 줄어들기를 내 스스로에게 바라며....
Posted by 최범균 madvirus

댓글을 달아 주세요

  1. 달려라네오 2011.05.23 13:12 신고  댓글주소  수정/삭제  댓글쓰기

    뻘짓?! 하지만 누군가의 불편을 해결해주고 감동을 주는 서비스..
    여전이 만들고 또 전파하고 계시는군요 ^^
    잔잔한 IT 감동을 배웁니다. (건강하시죠?!)