brunch

You can make anything
by writing

C.S.Lewis

by 공대생의 심야서재 Dec 26. 2017

소 잃었으면 외양간을 튼튼히 고치면 된다.

다른 소를 잃지 않기 위하여

소 잃었으면 외양간을 튼튼히 고치면 된다.


서버 정지 사태


문제가 터졌다. 서버 개발자가 테스트하던 모듈에 문제가 생겨 앱이 정상 작동되지 않았다. 하필이면 대표님이 손님에게 모바일 앱의 작동법을 설명하는 자리에서 문제가 툭 불거졌다. 식은땀이 등짝을 타고 흘러내렸다. 결정적인 순간에 대표에게 망신을 준 것 같아 민망했다. 이것도 시연의 법칙일까. 평상시에 아무리 작동이 잘 되었어도 고객이 보는 앞에서 문제가 발생했다면 원래 안 된 것으로 간주해야 한다. 

개발자들을 긴급히 소집했다. 구차하게 변명하는 것보다 문제를 시급히 해결해야 했다. 안드로이드와 아이폰에서 공통적으로 발생한 에러인지 원인부터 진단해야 했다. 다행히 앱의 문제는 아니었다. 만약, 앱의 문제였다면 문제가 된 부분을 수정하여 플레이 스토어나 앱 스토에 반영하기까지 적어도 한나절 이상의 시간이 소요되었을 것이다. 그 생각을 하니 끔찍한 생각이 뒤통수를 때렸다.

모바일 개발자와 서버 개발자 간의 테스트가 이루어졌다. 스펙에 정의되어 있는 대로 파라미터를 정상적으로 보내고 있는지부터 확인했다. 다행히 호출하는 파라미터에는 문제가 없었다. CodeIgniter의 컨트롤러 부분과 모델 간의 인터페이스가 문제인지, 데이터베이스 쿼리에서 문제가 발생한 건지 체크하였으나 그것도 아니었다. 



문제의 원인 분석


아이폰 개발자의 의견으로는 서버 측에 사용자의 경위도 값으로 주소를 산출하는 부분이 있는데, 그 부분에서 서버 에러가 발생한 것 같다고 의견을 냈다. 네이버 맵에서 구글 맵으로 며칠 전 변경한 후, 테스트 서버에서는 문제가 없었는데 AWS(아마존)에서 문제가 일어난 것으로 최종 확인되었다. 하필이면 그 부분이 사용자 신규 가입하는 로직과 연결되어 앱 자체의 실행이 되지 않는다는 문제였다. 문제의 원인은 찾았으나 해결점은 보이지 않았다. 

서버 개발자는 테스트하던 소스 코드를 긴급히 Rollback 했으나 이미 맵 서비스를 구글로 변경한 상태라 문제는 여전히 해결되지 않았다. 깃(Git)과 같은 버전 관리 시스템을 사용하지 않아 Rollback 하는 과정에서 수작업이 동반되었다. 나는 애간장이 타기 시작했다. 옆방에서 대표이사는 문제가 해결되었냐고 연구소에 찾아왔지만, 문제는 쉽게 해결될 것 같지 않았다. 

고객에게 나쁜 인상을 심어준 것 같아서, 회사 이미지에 먹칠을 한 것 같아서 개발 책임자로서의 자존심이 상했다. 서버 개발자는 멘탈이 붕괴된 것처럼 보였다. 서버 소스를 Rollback 하고 다시 적용하는 과정에서 정신을 차리지 못하고 우왕좌왕하는 모습이 보였다. 아마도 내 얼굴이 벌겋게 달아오르고 언성이 높아지니 더 제정신을 못 차리는 것 같았다. 미봉책이지만 일단 서버에서 주소 문자열을 산출하는 부분을 로그인 프로세스에서 제거하니 로그인 기능은 정상적으로 작동하기 시작했다.


직원을 몰아세워서는 안된다.


몰아세우고 다그친다고 문제가 해결되지 않는다. 공포 분위기가 지배하는 조직에서는 직원들의 행동이 경직되어 판단을 스스로 하지 못하고 리더에게 의지하는 문화가 생긴다. 의견이 있어도 비난받을까, 무시당할까 두려워 꺼내지도 못한다. 자신감을 상실하여 스스로 해결할 수 있는 능력을 포기하여 오판이 더 자주 발생한다. 자신이 표적이 될까 두려워 새로운 기술 도입을 주저하게 되며 늘 사용하는 익숙한 방법론에만 의지하게 된다.



지금 필요한 것은 침착함이다. 그리고 한 단계씩 테스트를 진행하여 문제의 해결책을 찾는 것이 우선이다. 나는 다양한 경험을 수행한 선배 개발자가 아닌가, 모든 분야에 정통할 수는 없어도 과거 유사한 사고 상황들을 극복한 사례가 있지 않은가. 개발자에 대한 문책보다 현재의 상황에서 벗어나도록 유도하는 것이 먼저다. 

실패 상황에 대하여 누구에게 잘잘못이 있는지 문책하는 것은 중요하지 않다. 언제든 오류는 나타날 수밖에 없다. 기계가 아닌 인간이 하는 일이기에 결함은 곳곳에 내재되어있는 것이다. "아니 테스트도 제대로 안 하고 적용한 거야", "복잡한 상황에 대한 대비를 했어야지 왜 이런 오류가 나타나?", 이따위 말들은 사건을 해결할 수 없다.


소 잃어도 외양간 고치면 된다.


사건이 터진 후에 그것을 수습할 수 있는 것은 침착함이 우선이다. '소잃고 외양간 고친다'라는 속담이 있지만, 외양간을 튼튼하게 고치면 유사한 사고 발생 시 더 기민하게 대처할 수 있다. 아무것도 안 하고 방치하거나 문제 발생 원인을 진단하지 않는 것이 더 잘못이다. 에러에 대처할 수 있는 시스템의 재정비가 더 시급하다.

다행히 문제는 짧은 시간에 봉합되었다. 서버 개발자는 오늘과 같은 상황을 처음 접했다고 한숨을 돌리며 말했다. 정신이 가출해서 어떻게 해결해야 하는지 경황이 없었다고 고백했다. 나는 소스 코드 관리 체계 및 테스트와 관련하여 몇 가지 조언을 했다. 이렇게 해라 저렇게 해라 일방적으로 가르치는 것이 아니라, 현명한 방법 몇 가지를 소개해줬다. 문제는 스스로 해결하도록 해야 한다. 리더가 매일 가르치거나 모든 경우의 수에 대하여 구체적으로 설명할 수 없다. 오늘과 같은 상황을 겪어봐야 유사한 상황에서도 해결할 수 있는 힘이 자라난다. 
문제는 해결되었다.






매거진의 이전글 20년 묵은 직딩이 생각하는 '시란 무엇인가'
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari