JMDevLog

캐시를 사용한 조회 성능 개선기

서비스의 사용자가 늘어나면 트래픽의 총량이 늘어나고 DB에 저장되는 데이터의 양도 늘어납니다. 개발자 입장에서는 서비스가 잘 운영된다는 지표이므로 기쁜 일이지만, 그동안 발견하지 못했던 성능 문제들이 하나씩 발견되기도 합니다. 조회 성능을 향상시키는 방법에는 여러가지가 있습니다. 비효율적인 쿼리 개선, JPA 사용시 N+1문제 해결 그리고 인덱스 적...

동시성 이슈를 해결하기 위한 JPA 낙관적 락 사용

서비스의 사용자가 증가하면 예상치 못한 여러 문제들이 발생할 수 있습니다. 오늘은 그중 분산 서버에서 특정 기능에 동시 접근했을때 발생할 수 있는 동시성 이슈를 알아보고 이를 해결하는 과정을 공유하고자 합니다. 문제 상황 Melly 서비스는 소규모 그룹 간의 추억 공유를 중시하기 때문에 그룹의 최대 인원 수를 10명으로 제한해놨습니다. 만약 현...

Github actions를 통한 PR Assignee & Reviewers 자동 할당

오랜만에 글을 작성하는 것 같습니다. 오늘은 Pull Request 과정에서 번거로움을 느꼈던 작업들을 자동화하는 방법에 대해 살펴볼까 합니다. PR 작업시 항상 마주하는 부분입니다. 우리는 PR을 진행할때 누구에게 리뷰를 받을지, PR의 담당자는 누구인지 그리고 어떤 라벨에 해당하는지를 설정합니다. 이 과정에서 별도의 설정이 없다면 수동으로 인...

중첩 클래스 스프링 빈 등록에 대한 분석

토비님의 유튜브 영상을 보던 중 내부 클래스를 스프링 컨테이너에 등록 가능한지 확인해보는 컨텐츠가 있었다. 제목을 읽고 확실히 답을 해볼 수 없었기에 영상을 기반으로 정리를 해보고자 한다. 내부 클래스 vs 정적 중첩 클래스 분석에 앞서, 기존에 헷갈렸던 개념에 대해 한번 정리를 하고자 한다. @Configuration public class Ne...