SR(Software Requirement) 과정을 마치고 본격적으로 코딩을 하기 시작했습니다. 회원가입을 위해 데이터베이스를 만들고 서버 로직을 만들어가기 시작했는데요.
이름과 별명, 이메일 주소, 비밀번호를 입력받아 별명과 이메일 주소의 중복 여부를 판단하고, 중복되는 항목이 있다면 중복 여부를 메시지에 담아 리턴하기로 했습니다. 만약 중복이 없다면 그대로 가입이 진행되고 데이터베이스에 기록이 남게 되겠죠.
간단한 작업이 이렇게나 오래 걸릴 줄은 몰랐습니다. 심지어 결국 어떻게든 해결을 보긴 했는데 그렇게나 외면하고 싶었던 콜백 헬이 만들어졌네요.
고생했던 걸 다 나열하기에는 너무 긴 시간들이었으니 간단하게 어떤 어려움이 있었는지만 정리해보려고 합니다.
mysql 모듈을 사용하는 과정에서 데이터베이스의 port 를 설정해주어야 하는데 이 부분을 놓친 나머지 시간이 매우 오래 걸렸습니다. 참고로 mysql 모듈을 사용할 때 port 를 설정하지 않았을 경우 default 값은 3306
이라고 합니다.
mysql 모듈을 사용해 쿼리를 날릴 때, 모든 쿼리들은 비동기로 실행됩니다. 하나의 http 요청에서 여러 개의 쿼리를 날리도록 구성할 경우 각각의 쿼리가 비동기적으로 실행되기 때문에 원하는대로 순차적인 응답을 얻을 수 없습니다.
당장은 콜백 헬을 만들어 해결했습니다. mysql 쿼리를 날려서 응답을 기다리고, 응답 여부에 따라 그 안에서 다시 새로운 쿼리를 날리는 식입니다. 작성자인 저야 어떻게든 알아본다지만 좋은 코드는 아니니 어떻게든 해결 방법을 찾아내야 겠습니다.
프로젝트를 시작하면서 대체 그동안 뭘 했던거지 싶을 때가 생기곤 합니다. 이해하고 넘어갔다고 생각한 부분들이 전혀 기억나지 않는다거나, 사실은 전혀 이해하지 못했던 경우들을 발견하게 되기 때문이죠.
그럼에도 불구하고 긍정적으로 생각할 수 있는 점은, 최소한 무엇을 검색해야 하는지를 알게 되었다는 겁니다. 오늘의 문제도 어떻게든 엉덩이를 붙이고 앉아 구글링과 공식 문서를 탐험한 끝에 어떻게든 일단 기능 구현을 시킬 수는 있었거든요.
오히려 부담이 적은 지금이야말로 실패를 경험하기 좋은 때일지도 모릅니다. 실패하는 경험을 통해 성장할 수 있으니까요. 이런 과정을 거치면서 조금씩이나마 성실하게 나아질 수 있었으면 좋겠습니다.