어제 캠핑장으로 향하는 와중, H로부터 다급한 연락을 받았다.
비디어스 회원가입이 안 된다고 했다. 마침 입실까지 시간이 조금 남아있어서 카페로 가서 작업을 시작했다.
API 버저닝을 하지 않은 나의 부채로, 계획에 없던 v1 서버와 v2 서버가 공존하게 되었고, DB는 v2 버전으로 운영하게 되었다. v2로 넘어오면서 새로 추가된 필드가 있었는데, 당연히 기본값 설정이 되어있었으나 v1에는 해당 코드가 없다.
그래서 v1 코드로 회원가입할 때 새로 추가된 필드에 기본값 지정이 안 되면서 not-null 제약사항에 걸려 저장이 안 되는 문제였다.
현재 사용 중인 ORM 필드의 default 파라미터가 DB의 기본값을 사용하지 않는다는 것은 당연히 알고 있었다. 그런데 이번 문제는 내가 야기했다.
만약 개발 관련 시험을 보는 데, 문제에 ORM 필드의 default에 관해 설명하라는 문제가 나왔다면 기본값을 설정해 준다는 내용과 DB의 default를 사용하지 않는다고 잘 적었을 것이다. 그런데 이게 무슨 소용. 정확히 알고 전혀 상관없(다고 오해하)는 업무를 하면서도, 자연스럽게 영향을 끼칠수 있다고, 인지하지는 못했다. 결국 이런 부분은 경험으로 채워야 하는 것 같기도 하다.. 그런데 확실히 경험으로 배우기엔 비싸다는 생각도 들었다. 만약 광고를 집행하고 있는 기간이었다면.. 아찔하다.
근본적으로는 v2 서버를 공존하는 상황을 만들면 안 되었고, 만들어졌더라도 급하게 처리할 일이 아니고 시간이 걸리더라도 테스트 케이스를 다시 검수하고 QA까지 했다면 문제없었을 것이다.
이것이 바로, 가장 쉽다는 시스템을 탓하는 것이다.
사실 나의 문제도 맞았고, 시스템의 문제도 맞았다. 이번 일로 회사의 시스템도, 나도 조금 더 나아진다.