😐2024.07.31
일일 회고 7회차
할일 및 한일
개인 공부
Spring SSE(Server-Sent Events) 학습
경험 및 배움
회사 업무
슬로우 쿼리 해결
고객사에서 라벨 데이터가 700만 개가 존재하여 슬로우 쿼리가 발생하는 문제를 해결하기 위해 회의를 진행했다.
주기적으로 라벨 데이터를 통계낸 후에 다른 테이블에 저장하는 쿼리가 느려지면서 row에 lock이 걸리는 시간이 길어지게 되어 문제가 발생한 것이라는 결론이 도출되었다. 이를 해결하기 위해 다른 팀원이 제시한 것은 통계 데이터가 실시간성을 요구하지 않으므로 이를 해결하기 위해 주기를 10초에서 하루로 늘리는 것이였다.
팀원이 제시한 방법은 문제를 잠시나마 해결할 수 있으나 데이터를 넣는 주기가 되었을 때는 시스템을 사용하지 못하는 문제가 있는 해결방법이다. 그러므로 우선 이 방법으로 문제를 해결한 후에 주기적으로 데이터를 저장하는 것이 아닌 데이터에 변경이 발생했을 때만 데이터를 저장하도록 수정하기로 했다.
나는 추가로 고려할 사항을 건의했다. 건의한 내용은 데이터를 저장하는 주기를 서버가 실행됐을 때가 아니라 시스템을 사용하지 않는 시간대인 자정이나 새벽에 하는 것이 좋을 것 같다는 것이였다. 슬로우 쿼리 문제를 해결하기로 한 팀원은 1차로 서버가 실행됐을 때 주기를 실행하도록 수정하고 2차로 자정에 실행하도록 수정하는 것으로 진행한다고 했다. 이로써 팀원이 주기를 설정하고 해당 서버 이미지를 고객사에 배포하도록 진행됐다.
팀원이 해결한 방법이 정상 동작하는지 확인해보고 슬로우 쿼리 문제가 해결되는지 확인해보기 위해 사내 테스트 서버에 데이터 1000만 개를 넣는 작업을 진행했다.
해당 작업은 오래걸리므로 내일 완료됐는지 확인한 후에 서버 버전을 업데이트하여 테스트해 볼 예정이다.
인퍼런스 결과 저장 실패 해결
고객사에서 인퍼런스 결과 저장을 실패에 대한 에러 로그가 상세하게 나오지 않아서 디버깅하는데 어려움이 있었다. 이러한 이유로 출장자에게 원인 파악을 요청했으나 출장자에게 지금은 문제가 발생하지 않고 있다는 답변을 받아 해결 작업은 진행되지 않기로 됐다. 하지만 언젠가는 발생할 문제이므로 디버깅을 하기 쉽도록 에러 로깅을 추가하고 출장자에게 서버 업데이트 후 에러 발생시 로그를 요청드릴 예정이다.
개인 공부
Spring SSE(Server-Sent Events) 학습
개인 프로젝트에 알림 기능을 구현하기 위해 기술을 조사하던 중에 SSE를 알게 되었다. 개인 프로젝트의 알림 기능은 클라이언트가 서버에 실시간으로 보낼 요청이 없기 때문에 실시간 양방향 통신을 하는 WebSocket 보다는 단방향 통신을 하는 SSE가 적합할 것으로 판단됐다. 이러한 이유로 SSE 학습을 진행하게 됐으며 해당 내용은 다음 글에 정리해놨다.
개선 및 목표
회사 업무
슬로우 쿼리 해결
인퍼런스 결과 저장 실패 해결
백엔드 Github Actions 개선
개인 학습
AOP의 Joinpoint 분석
@Transactional 동작원리 학습
Last updated