본문 바로가기

카테고리 없음

[spring] 시스템, 사람, 코드를 믿어야 할까?

회원가입을 구현하고 있었다. 회원은 class Member로 구현한 상태.

class Member

MemberRepositroy에서 findMemberByLoginId()를 구현하는 도중 의문점이 생겼다.

프로그램의 규모가 커짐에 따라 복잡성은 늘어나고 하나를 수정하면 다른 곳이 터지거나 유기적으로 연결된 부분에서 예상하지 못한 곳에서 문제가 생기는 경험을 많이 했다. 

우린 대부분의 웹사이트가 그러하듯이 아이디를 중복허용하지 않았다. 이때 시스템이 커지면 어떤 경로로든 중복검사를 뚫고 들어올 수도 있지 않을까 생각했다.

그래서 생각한 나의 방법.

findMemberByLoginId()를 구현할 때 다음과 같이 구현하는 것. 즉 탐색할 때 마다 list로 모두 가져오고 중복된 아이디가 있는지 없는지 검사하는 것이다. 사실상 findByLoginId()기능은 로그인할 때, 회원가입 할 때 말고는 사용되지 않는다.

로그인 할 때 모든 사용자에 대해서 아이디가 혹시 2개 들어있는 것은 아닌지 검사할 수 있으므로 시스템이 혹여 중복검사를 하지 않거나 뚫렸을 때 바로 감지할 수 있다. 53번줄에서 DuplicatedLoginIDException이 발생하게 했다.  

findByLoginId()

나의 노파심에 이렇게 짜기는 했지만 아마 대부분이 너무 과도한 걱정이라고 할 것 같다. 다른 사람들의 의견이 궁금하다.

테스트코드가 있기 때문에 괜찮다고 말하는 사람도 있을 것이고... 모르겠다.

실제 서비스에서는 어떻게 구현하는지 궁금하다.

 

결과

난 바보다. DB에서 unique설정하면 되잖아..

협업하면서 DB, repository 구현을 완전히 다른 사람에게 넘겨서 생각을 못했다..