최근 아파트주민들의 투표 기능을 만들기 위해서
배치 스케줄러를 사용 했는데,
해당 배치 프로그램은
투표 시작과 종료는 30분 단위로만 설정 할 수 있어
배치서버에서 메인서버로 특정 API를 30분마다 반복해 전송,
메인서버에서 시작/종료 하는 투표의 상태를 변경 해주는 것이었는데
회의를 하다가 문득 "상태" 컬럼이 왜 필요한가? 라는 주제가 나오게 됐다.
사실 로직에서도
시작 시간과 종료 시간만 컬럼에 저장해놓는다면,
상태 라는 개념은 필요가 없는 것이 아니냐 였는데
나는 있어야한다 를 주장하고 있었는데도 불구하고,
코드의 가독성을 제외하고는 사실 필요가 없나? 라고 의문이 들기 시작했다.
로직에서도 대기 / 진행 / 종료 라는 개념만 있으면 되는데
해당하는건 서버 현재시간이 시작시간전 / 시작시간과 종료시간 내 / 종료시간 후
면 그냥 해결이 되는것 아니냐는 문제 였다.
이런문제야 어느 관점으로 보냐의 차이겠지만,
내 입장에서는 상태 컬럼이 존재하는 것이 더 명확하고 추후 유지보수 시
새로운 개발자가 봤을때도 더 직관적이고 빠르게 이해 할 수 있지 않나?
라는 의견
반대의 의견은
개발자의 편의를 위해서 성능에 영향이 갈 수 있는데
데이터베이스의 한 컬럼을 소비 하는 것이
괜찮은 것이냐? 라는 의견이었다.
내가봐도 상태 컬럼이 없다고 해서 문제가 생길만한 기능이 아니어서
어느정도 납득은 됐다.
그래서 결론은
일단 이미 코딩이 어느정도 진행중이었기때문에
추후에 상태 컬럼을 없애는쪽으로 진행..
정답은 없는 거라지만,
참 애매모호 한 문제 인 것 같아 작성 하게 됐다.