2017년 1월 28일 토요일

시스템 오류에 대한 원인 추적

설날 연휴에 들어서기전에 시스템 사용자 교육을 하면서 사례로 든 것을 정리하는 시간을 가졌습니다. 시간은 좀 오래 걸렸지만 예상했던 대로 답이 나와 마무리를 할 수 있다고 생각할 즈음에 복병을 하나 만났습니다. 교육하는 중에 한 분이 질문을 한 내용인데 제가 미처 확인하지 못했던 차이를 발견한 것입니다.

다른 상세보고서에서는 예산을 집행했을 때 합계가 동일한 금액으로 나왔는데 가장 신뢰가 높다고 생각한 첫화면에서의 숫자 하나가 그 금액에 못 미치는 금액으로 나온 것입니다. 처음에는 쉽게 해결될 수 있을거라고 생각했는데 그 숫자와 관련된 보고서들을 몇번이나 반복해서 보았는데 차이가 발생한 이유를 발견할 수 없었습니다.

연휴 하루가 가고, 이틀이 가려는데 여전히 이유를 발견하지 못한 채로 시간이 계속 흘렀습니다. 그러다가 우연히 그 이유를 발견하게 되었습니다. 아무런 인과관계가 없는 상황에서 우연히 발견한 차이의 원인은 "반납"에 있었습니다. 원인을 발견해 놓고도 재현해 보는 과정에서 다소 혼동이 있긴 했지만 최종적으로 제가 발견한 원인이 맞다는 확신을 갖게 되었습니다.

그리고 그 내용을 다른 사람들에게 공유하고자 프레젠테이션 파일에 정리했습니다. 아마도 공감을 얻을거라고 생각합니다. 저는 어떻게 그 원인을 발견하게 되었을까요?  그 발견과정을 다시 한번 생각해 보았습니다. 시행착오법으로 발견하는 과정은 오랜 시간이 걸렸습니다. 하지만 발견 후에 그 과정을 따라가 보니 다시 그 원인추적과정을 반복한다 해도 그 발견시간을 줄이기는 어렵다는 생각을 합니다.

우선 첫화면에 나온 숫자가 합계로 나오는 보고서를 발견할 수 없었습니다. 보통은 집계된 결과는 그 결과를 포함하고 있는 보고서를 찾을 수 있습니다만, 이경우는 아무리 관련된 보고서를 조건을 달리하여 검색을 해도 합계액과 동일한 숫자를 찾는 것이 불가능했습니다. 동일한 숫자를 만나면 그 보고서를 분석하고, 세부내용을 검토하다 보면 그 원인을 추적할 수 있습니다만, 집계액 자체를 볼 수 없으니 오류의 원인을 추적하는 출발점을 찾지 못해 제자리 걸음만 반복하는 답답한 상황이었습니다.

그러다가 오늘 아침에 금액은 다르지만 집계액이 나오는 보고서를 예산과목별로 숫자를 맞춰보는 기약없는 검증작업을 시작하게 되었습니다. 그러다가 한 숫자가 맞지 않아 무엇이 다른지 이리저리 가설을 세워 보게 되었습니다. 그러다가 문득 취소한 프로세스에 단서가 있지 않을까 하는 아이디어를 생각해 냈습니다. 분납증감관리 화면에 들어가 제가 생각한 아이디어가 과연 맞을까 하고 숫자들을 모아 보니 제가 검증하려던 그 차이 합계액이 딱 맞아떨어진다는 것을 확인하게 되었습니다.

조금 어리둥절하긴 했지만 그토록 찾고 싶었던 차이 원인을 찾게 되어 다행이라는 생각을 했습니다. 뭔가 하나 풀리지 않은 것이 있으면 찜찜하여 다른 일을 할 수 없는 성격인데, 다행히 다소 늦게나마 원인을 찾을 수 있어 머리가 개운해졌습니다. 지금 생각해 보면 지출반납한 후 새로운 지출을 일으키는 일이 거의 없는데, 교육을 하다보니 그 일이 여러건 발생하여 차이가 발생했고 시스템 오류가 명확하다는 확신을 갖게 되었습니다. 아주 복잡한 긴 프로세스인데 논리적으로 생각해 보면 풀릴 수 있는 프로세스입니다만, 현실적으로는 발생하기 어려운 프로세스인 것 같습니다. 다만, 결산을 하는 과정에서 원인행위 금액이 배정액보다 적은 이유가 무엇인지 규명하는 가운데 나타날 수 있는 사례이므로 결산에 관심을 갖는 기업이라면 발생할 가능성이 전혀 없지는 않을 것 같습니다.

교육 중에 질문한 사례가 제가 발견한 사례와 동일한지 여부는 알 수 없지만, 아주 어렵게 차이원인을 규명한 후 제가 어떻게 그 원인을 찾았는지 생각해 보았습니다. 우선 세부내용을 맞춰보기 시작한 것이 시작이었습니다. 집계액이 일치하는 보고서를 찾지 못하는 상황에서 기약없는 시행착오가 될 수도 있었지만, 세부적으로 비교 검토하는 것은 차이원인을 찾는 지름길이라는 생각이 듭니다. 둘째로 세부내역에 차이가 발생한 것을 놓고 전혀 관계가 없는 원인도 있었지만 혹시 이렇지 않을까 라고 가설을 세워 본 것이 주효했습니다. 특히 이제까지 대부분의 차이가 취소거래, 즉 발생한 거래를 수정하고 변경하는 거래에서 발생한다는 경험이 있는 상태에서 그런 쪽으로 가설을 세운 것이 결정적이었습니다.

모든 원인을 찾는 방법으로 일반화하기는 어렵지만, 사람의 생각을 담은 시스템의 오류를 찾아내는 방법은 체계적으로 접근한다면 언젠가는 그 원인을 찾을 수 있음을 확인할 수 있었습니다. 물론 우연 혹은 행운이 있으면 시간을 단축할 수 있겠지만, 그 행운이 없더라도 아마도 계속 집요하게 물고 늘어진다면 분명 원인은 밝혀지리라 생각합니다. 이제 찜찜한 부분이 없어졌으니 원래 연휴기간 동안 하려고 했던 일을 해야 되겠습니다.



댓글 없음:

댓글 쓰기