단상,  컴퓨터와 인터넷

프로그램 개발의 어려움

오늘 내 블로그의 RSS 링크를 Feedburner로 redirect하는 규칙을 .htaccess 파일에서 제거했다. 어차피 내 블로그를 정기 구독하는 사람도 별로 없고, 나도 열심히 업데이트하지 못하고 있기 때문에 아쉬울 것은 없었다. 게다가 결정적으로, Feedburner.com의 상술에 말려드는 듯한 느낌을 지울 수 없었기 때문이었다.

이를 위해 .htaccess 파일을 변경하면서 별로 쓸모없어 보이는 php 관련 규칙도 제거했다.

php_flag register_globals_on

오래간만에 저녁에 집에서 가사 검색을 해보려고 하니까 검색이 안 되는 것이었다. 소스코드를 확인하니 페이지끼리 form으로 주고받는 변수의 값이 제대로 넘어오지 않는 게 원인이었다. 바로 위 php 규칙을 제거했기 때문이었다.

각설하고, 이식성(portability)과 안정성(stability)를 확보하는 것은 참으로 어려운 일이라는 깨달음을 간단한 HTTP 규칙에서도 얻게 된 셈이다. 며칠 지난 후에 발견했더라면 무엇을 변경했는지 기억하지 못해 이처럼 쉽게 해결하지 못했을 것이다.

내가 회사에서 하는 일이 주로 DBMS 엔진을 개발하는 것인데, 이게 참 다양한 환경에서 사용되다보니 이식성이 중요한 이슈가 된다. 클럭 수가 높은 Linux에서 컴파일하는 게 용이해서 Linux에서 프로그래밍하고, 가장 널리 납품용으로 사용되는 Solaris에서 테스트하고, 구버전 엔진에도 똑같은 코드를 적용하는 업무 프로세스를 거치게 된다. 그러다보니 실제 프로그래밍이 차지하는 비율은 그다지 크지 않다. 버그 발생하면 동일한 환경을 구축해서 버그를 재연하고 원인 분석하고 분석 결과를 문서화하고 코드를 수정하고 수정한 내용을 CVS와 버그질라에 등록하는 게 더 많은 시간을 차지하게 된다.

이런 업무 프로세스가 정착된지 오래 되었지만 아직도 테스트가 미흡하거나 개발 시 미처 고려하지 못한 이유로 낮은 이식성과 안정성이 드러나서 동료 개발자들에게 미안한 경우가 종종 있다. 1개 환경에서 1개 시스템 모듈만을 만든다면 그다지 어려운 일이 아니지만, 3~4개의 환경을 지원하고 구 버전 엔진에도 반영되어야 한다면 경우의 수가 벌써 최소 6개는 된다. 물론 동시에 여러 환경을 고려해야 하는 경우가 매번 있는 것은 아니지만, 4개 이상의 모듈끼리 얽히고 섥히면 정말 난감하다. 게다가 예전의 수정 사항과 이번의 수정 사항이 충돌하는 경우에는 정말 머리를 쥐어뜯고 싶은 심정이다.

이게 실제로 최근 며칠 동안 내가 작업한 상황이었다.

하지만 버그가 발생하는 상황이 재연이 된다면 디버깅과 개발은 시간과의 싸움일 뿐이다. 결국 개발자가 일정 수준의 실력과 끈기만 갖추고 있으면 이기게 되어있다. 그러나 재연이 어렵거나 확률적으로 아주 낮은 빈도로 버그가 발생하기 때문에 재연이 사실상 불가능한 경우는 모래사장에서 바늘 찾는 꼴이 될 수 밖에 없다.

적성에도 맞고 경험도 어지간히 쌓았다고 생각하는데 개발은 여전히 어렵다. 자신의 깜냥이 커지면 그만큼 어려운 일이 떨어지기 마련이다. 아마 쉬운 일이 계속 떨어진다면 누구든 지겨워서 못할 것이다.

이런 연유로 탐정노릇(관련 글)도 이젠 지겹다.

답글 남기기