메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

좀더 자세한 에러 메시지를 보여주는데 시간과 노력을 투자해야 할 때

한빛미디어

|

2003-04-21

|

by HANBIT

8,511

저자: 에릭 M. 버크(Eric M. Burke), 역 김대곤

며칠 전, 필자의 동료가 서버 소스 코드에 있는 문제점을 수정하고 있는데 그걸 좀 도와달라고 한 적이 있다. 그 친구는 에러가 발생한 곳을 찾기 위해 이미 몇 시간이나 그 일에 매달려 있었던 것 같았고, 나와 함께 문제점을 해결하는 데만도 적어도 30분 이상이 걸렸다. 그런데 그 소스 코드가 가진 문제점은 의외로 간단했다. 우리가 정해진 컬럼의 길이보다 큰 데이터를 입력을 시도했다는 것이었는데, 그때 우리가 확인할 수 있는 것은 데이터베이스의 모호한 에러 메시지가 전부였다. 정확히 기억이 나진 않지만 아래와 같은 식이었던 걸로 기억된다.
ERROR : Data exceeds column size.
물론 무엇이 문제인지 분명하게 보여주고는 있지만 여러 개의 테이블과 수많은 컬럼으로 이루어진 복잡한 SQL문장에서 에러가 발생한 정확한 위치를 찾는 것은 결코 쉬운 일이 아니다. 우리는 각 컬럼이 저장하려는 데이터의 크기의 수용여부를 확인하는 지루하고 힘든 작업을 하기위해 각종 로그 정보들을 출력해 보았다. 그래서 결국 username 컬럼이 character 3자리로 정의되어 있는 것과, 3자리 이상의 데이터를 username에 입력하려고 할 때 에러를 발생시킨다는 사실을 알게 되었다. (우리는 테스트 username을 ‘sys’로 사용하였으므로, 실제 사용자가 등록하기 전에는 그 문제를 알지 못했다.)

이 시점에서 필자가 말하고 싶은 것은 “왜 데이터베이스를 만든 개발자들이 사용자들에게 좀 더 자세한 에러 메시지를 보여줄 생각을 하지 않는가?”하는 점이다. 조금만 수고를 들이면 위에서와 같은 시간 낭비는 하지 않아도 되었을 텐데 말이다. 예를 들어,
ERROR : Data for ‘username’ column exceeds column size of 3 characters.
????

사실, 데이터베이스 프로그래머들이 위와 같은 세부적인 정보를 정확하게 보여주는 에러 메시지를 작성하는 데에는 몇 초 밖에 걸리지 않을 것이다. 그리고 위와 같은 자세한 메시지를 받았다면 우리는 디버깅 시간을 상당히 절약할 수 있었을 것이다. 다른 수 많은 프로그래머들도 모호한 에러 메시지로 인해 이와 똑같은 경험을 분명히 해보았을 것이라고 필자는 확신한다.

특정 데이터베이스 에러 메시지를 예로 들었지만, 필자의 경험에 따르면 JNDI나 CLASSPATH도 마찬가지이다. JNDI나 CLASSPATH에서도 문제가 발생한 경우 그 원인을 진단할 수 있는 자세한 메시지를 안보여준다는 점에서 정말 사용하기 힘든 기술이다. NoClassDefFoundError이라는 메시지 대신 CLASSPATH에 등록된 위치, 즉, Class Loader가 클래스들을 찾기 위해 검색한 위치를 사용자들에게 보여준다면 얼마나 좋겠는가!

어쨌든, 요점은 간단하다. 프레임워크 소프트웨어 개발자들은 에러가 왜 발생했으며, 어떻게 조치해야 하는지를 알려주는 실제적이고 구체적인 에러 메시지를 보여주는데 좀 더 많은 시간을 투자해야 한다는 것이다! 그리고 이와 같은 실제적인 에러 메시지가 제공된다면 생산성은 분명 증가할 것이고 그 결과 매년 수백만 달러를 절약할 수 있을 것이다. (이 수치는 필자가 만들어낸 것이다. 그러나 결코 부풀어졌다고 생각하지는 않는다.)
에릭 M. 버크(Eric M. Burke)는 『Java Extreme Programming Cookbook』 저자이자, 세인트 루이스에 있는 Object Computing사의 수적 소프트웨어 엔지니어이다.
TAG :
댓글 입력
자료실

최근 본 상품0