Spring
[Spring] 서버 스펙에 따른 쓰레드 수 조정
[Spring] 서버 스펙에 따른 쓰레드 수 조정
2025.08.11최근 프로젝트를 하고 GCP(Google Cloud Platform)에 배포하여 운영 서버를 가동시켰다. 비용문제로 인해 낮은 스펙을 사용할 수 밖에 없었지만 아직 테스트 사용자만 있는 지금 상황에서는 충분한 스펙이라고 생각한다.하지만 그럼에도 만족하지 못할 성능이 나오는 경우가 있다.이번에는 이를 위해 서버 스펙에 맞춰 스레스 수를 조정한 과정을 공유하고자 한다. 그럼 스펙이 낮은 서버를 가동했을 때 Spring에서 고려해봐야 하는 것이 무엇일까? 톰캣 스레드먼저 우리가 Spring 서버를 배포 할 때는 보통 Tomcat이라는 WAS를 통해 배포하게 된다. Spring은 외부에 Tomcat을 가동한 상태에서 배포할 수도 있고, Spring Boot 내부에 내장되어 있는 Tomcat을 사용해서 배포할 ..
[Spring] 좋아요 기능에 대한 동시성 문제
[Spring] 좋아요 기능에 대한 동시성 문제
2025.08.03현재 진행하는 프로젝트에서 뉴스피드의 좋아요 기능에 대한 동시성 문제 해결 과정을 공유하고자 한다. 현재 프로젝트의 좋아요 기능현재 프로젝트의 좋아요 기능은 여타의 서비스들의 좋아요 기능(유튜브, 인스타그램 등)과 유사하다. 여기서 유사하다는 의미는, 좋아요 버튼을 토글 방식(한 버튼을 통해 좋아요와 좋아요 취소를 하는 것)으로 구현한 점이 비슷하다는 것을 의미한다.즉, 좋아요를 안한 상태에서는 좋아요 버튼으로 활성화되고 좋아요를 한 상태에서는 좋아요 취소 버튼으로 활성화되는 것이다. 이렇게 구현하다보니 작은 이슈들이 생겼는데, 이제부터 그 내용을 얘기하고자 한다.(물론 이 방식이 아니라 다른 방식으로 구현해도 생길 수 있는 이슈들이다) 좋아요 중복 클릭 문제(feat. 좋아요 레코드 중복 삽입)흔히 따..
[JPA] N+1 문제
[JPA] N+1 문제
2023.04.03N+1 문제? N+1 문제란 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 개수(n) 만큼 연관관계의 조회 쿼리가 추가로 발생하는 현상을 말한다. 예를 들어, Member와 여러 Member를 가지는 MemberGroup의 관계가 있다고 하자. Member와 MemberGroup Entity는 다음과 같이 구성되어 있다. @Getter @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @ManyToOne @JoinColumn(name ..