내가 짜놓은 핵심로직의 불완전성이 언제나 불안한 나머지 나는 매일 하루3번씩 프로그램의 전체 재고 파악 및 정상여부를 돌린다.
그리고 그런 군데군데 위험성이 있는 로직들을 '핵지뢰'라고 명명하고 작게 터지면 바로 로직을 수정하고 복구하는 등 팀장과 동료들에게 알리지 않은 작업을 은밀하게 해오고 있었다.
대부분의 오류나 데이터 문제는 내 손안에서 처리가 가능한 상황이기 때문에 그렇게 잘 버텨오고 있었는데....
어제 대 비상상황이 발생하고야 말았다.
문제의 발생은 오후 3시경.
그날도 평소처럼 각 창고별 데이터가 이상이 없음을 확인하고 다음 창고의 데이터로 넘어가는 찰나, 재고에 대량의 마이너스 품목이 발생한 것을 파악했다.
사실 그 발생한 창고는 평소에 잘 안보던 창고였고, 지난 마이너스 총 집계 및 추적때도 빠뜨린 것 같아서 난 속으로 웃으면서 '아 이런 빠뜨린게 있었네? ㅋ' 하고 일하는 틈틈히 그 데이터를 복원했다.
그리고 다음 창고에도 그런게 있길래 복원했다. 그렇게 한게 대략 5시.
이제 마이너스도 잡았겠다. 전체가 깨끗한지 보려고 다시 처음 보던 창고로 돌아갔다.
동시에 난 기겁을 할 수 밖에 없었다.
분명히 3시경에 봤을땐 모두 정상이던 재고가 대량으로 마이너스가 발생했던 것!!!
'내가 헛것을보나? 이게 뭐지? 대체 이게 뭐야?!?!?!'
결코 프로그램이 거짓말을 하는 경우는 없으니 이성으로는 '이건 현실이다' 라고 파악하면서도 마음은 그렇지 못해서 몇번이고 다시 조회버튼을 눌러보고 DB로 찾아본 끝에 파악을 끝마쳤다.
[드디어 핵지뢰가 터졌다............]
이미 전 창고에 마이너스가 나타나고 있었고, 그 분량은 내가 은밀히 혹은 개인적으로 처리할 수 있는 범위를 벗어난 양이었다.
결국 신입사원을 불러 정중히 부탁. 내가 사용하는 복구 로직을 알려주며 함께 처리해나가도록 지시를 했는데, 이걸 팀장님이 보고마셨다............
팀장님
-울프씨. 지금 뭐하는거야?
나
-.........(정황설명)
팀장님
-울프씨. 마이너스 났다고 고치는게 중요한게 아니야
-원인을 파악해야지.
나
-원인을 파악해도 파악할 수가 없어서..... 일단 복구를 시키고 몇가지 샘플을 채취해서 DB복원한다음에 테스트 해보려고 했습니다;;;
팀장님
-혼자 생각해선 안될때가있어.
-P대리,신입씨
P대리
-넴
신입
-네. 네?
팀장님
-개발자 전원 비상회의야 모두 들어오세요.
그래서 4명이서 각각 DB를 뜯어보고 히스토리 내역과 트리거를 분석하며 가능성 체크를 했다.
그런데 이 체크들이 다 핵지뢰가 터졌다고 판단한 이후에 즉시 내가 체크한 것과 다를게 없어서, 결국 결론은 '원인불명'
마이너스를 야기하는 테이블의 데이터가 삭제되려면 트리거 로직상 특정 테이블 수량이 변경되거나 기타 조건을 만족해야하는데, 그 조건 테이블의 변동내역이 전혀없었던 것이었다.
게다가 내가 만든 복구 로직으로 전부 고쳐질 만큼, 지워진 패턴이 동일해서 '정말 한가한 누군가가 의도적으로 날리려고 마음을 먹고' 하지 않는 이상 대량으로 동시다발적으로 지워질리는 없는 것인 상황이었다.
그래서 그간 작업한 내역들을 각자가 보고하고 데이터에 영향을 미칠 상황도 조사했지만 역시나 없고.......
결국 해당 테이블에 지워지지 못하도록 안전장치를 거는 것으로 회의를 마감했다.
그리고 팀장님 왈 '봤지 울프씨. 수정하는게 능사가 아니야. 대책을 마련해야지'
그래서 어제 회의때문에 2시간을 소모해서 신입사원과 내가 데이터를 복구하는데 밤 12시까지 일했다.
아.................. 내잘못이 아니면 누군가의 테러인가........................
뭘까 정말............... |