더북(TheBook)

3. 근본 원인을 조사해서 해결한다.

오전 8시부터 11시까지 방문객 수를 3배로 세고 있다는 걸 발견한다. 여러분은 웹 서버가 그 시간 동안 오래된 파일을 지우느라 어떤 이유에서든지 히트 카운터에 오류를 일으켜 그런 문제가 발생한다는 걸 알아낸다.

이 시점에서 쓸 수 있는 임시방편이 있다. 즉, 삭제 프로세스를 없애거나 삭제 작업을 자주 하지 못하게 만드는 등의 해결책이 있다. 하지만 이런 해결책으로는 근본 원인을 제대로 알아내지 못한다. 이때 던져야 하는 질문은 “기계에서 다른 작업이 일어나고 있다고 해서 수치를 잘못 계산하는 이유가 무엇인가?”이다.

조사를 더 진행해보니, 프로그램이 방해를 받아 중단되었다가 재시작하면 마지막 방문객 수를 다시 계산에 넣는다는 걸 알게 된다. 파일 삭제 프로세스가 너무 많은 자원을 쓰기 때문에 8시에서 11시 사이의 방문객 수를 집계하는 동안 카운터를 두 번 방해하는 게 원인이다. 그래서 그 시간 동안 방문객 수가 3배로 기록된 것이다. 하지만 실제로 버그 때문에 기계에 어느 정도의 부하가 걸리느냐에 따라 무한히 많은, 아니면 적어도 예측 불가능한 수가 더 집계될 수도 있는 상태다.

그래서 방해를 받아 프로그램이 중단되더라도 방문객 수를 정확하게 집계하도록 카운터를 다시 설계하자 문제가 사라진다.

 

세 가지 중 올바른 선택지는 당연히 근본 원인을 알아내어 해결하는 것이다. 그래야 문제가 완전히 사라진다. 개발자 대부분은 이 정도면 자신의 임무를 완수했다고 생각한다. 그러나 다시는 신경 쓸 일이 없게 하려면 해야 할 일이 아직 더 남아 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.