[Spring Boot] 조회와 수정의 분리(같이 했을 때 문제점과 리팩토링)
·
Java
공동구매 마감 로직 리팩토링 및 성능 개선기 개발을 하다 보면 종종 "돌아가니까 괜찮겠지?" 하고 넘어갔던 코드가 나중에 스노우볼이 되어 돌아오는 경험을 하게 됩니다.이번 프로젝트에서 '공동구매 목록 조회' 기능을 구현하며 겪었던 "조회 로직 내의 상태 변경"이라는 안티 패턴과,이를 스케줄러(Scheduler)를 통한 백그라운드 처리로 리팩토링하여 아키텍처를 개선한 과정을 공유하고자 합니다. 1. 문제 발생: "존재하지 않는 채팅방입니다"사용자의 동네를 기반으로 진행 중인 공동구매 목록을 보여주는 getGroupBuyings API를 개발하고 있었습니다. 이때 각 공구의 마감 시간(deadline)을 계산해 D-Day를 반환해야 했는데, 만약 조회 시점에 마감 시간이 지났다면 해당 공구의 상태를 CLOS..