spring boot 사이드 프로젝트 : 테스트 시나리오를 세우고 jmeter를 통해 부하 테스트 해보기

프로젝트를 배포, 운영해보면서 내 프로젝트에 어디서 병목 현상이 발생하는지, 트래픽은 어느 정도까지 감당할 수 있는지 확인이 필요한 경우를 공부한 과정입니다. 테스트하는 프로젝트는 sns 사이드 프로젝트로, 간단히 포스팅을 쓰고, 댓글 및 좋아요가 가능한 기본적인 커뮤니티입니다. 테스트는 다음과 같이 시나리오를 설정하고, 진행했습니다. 테스트 시나리오 구성 근거 실제로 클라우드에 배포하는 건 돈 때문에ㅜㅜ 제 컴퓨터 스펙의 서버를 기준으로 잡고 일단 테스트 기준을 세웠습니다. 1. 서버 스펙 제 컴퓨터 스펙은 다음과 같습니다. cpu : AMD Ryzen 5 3500X 6-Core Processor 3.59 GHz (6코어 입니다.)메모리 : 16GBdisk : sdd 500GB 2. ..

개인 프로젝트 2025.02.20 0

spring boot 사이드 프로젝트[4] : 도메인 엔티티, DTO 설계 및 특별한 패키지 구조

데이터베이스를 설계하기 위해 E-R다이어그램을 기반한 도메인 설계를 시작했다. 보통 스프링 부트 프로젝트들을 보면 service , controller, repository 이렇게 패키지를 나눠서 진행하는 경우가 많은데, 우리는 조금 다른 방식으로 진행했다. domain에 속하는 user, comment, post, profile을 먼저 만들고, 그 안에 controller, service , repository등을 만드는 것이다. 이 패턴의 장점은 각 엔티티와 연관된 레이어를 찾는 것이 굉장히 쉽다는 점이다. 단점은 필요 이상으로 패키지 개수가 늘어날 수 있다는 점인데, 나는 이 패턴을 통해 파일을 찾는 것이 더 유용하다 판단해서 이 방법을 선택했다. 도메인은 크게 User, profile, post,..

9uin 2023.05.22 0

concurrentHashMap가 어떻게 thread safety하게 동작하는가?

기업에서 요구했던 사항들 중 하나는 멀티 쓰레드로 운용되는 서비스에서 thread safety한 자료구조를 사용하는 것이었습니다. key value 형식으로 데이터를 저장할 때 java에서는 주로 HashMap을 많이 사용하게 되는데, 이 자료구조는 멀티 쓰레드 환경에서는 동시성 문제(concurrency issues) 가 발생할 수 있습니다.   실제로 java.util에 있는 HashMap으로 찾아가보면 위와 같은 주석 내용을 발견할 수 있습니다. 바로 해석할 수 있듯 synchronized가 되어있지 않기에, 멀티 쓰레드 환경에서 이 HashMap에 동시에 다수 쓰레드가 access하면 문제가 생길 수 있다는 내용입니다.   동시성 문제란? 동시성 문제는 여러 쓰레드가 동시에 같은 자원에 접근할 때..

Java 2024.09.10 0

spring boot 사이드 프로젝트 : authenticate에서 발생하는 '자격 증명에 실패하였습니다' 오류 해결

프로젝트 중 로그인 관련해서 마주친 오류에 대한 내용 정리입니다.   마주친 오류는 다음과 같습니다.     해당 오류가 발생한 원인 발생한 원인은 로그인 로직 수정 때문이었습니다.  수정 전 로그인 방식- 이메일, 비밀번호 입력해서 로그인  수정 후 로그인 방식- 아이디, 비밀번호 입력해서 로그인      오류 발생 위치   기존 로그인 과정 코드에서, 이슈가 발생한 부분은 다음과 같습니다. Authentication authentication = authenticationManagerBuilder.getObject().authenticate(usernamePasswordAuthenticationToken);   UsernamePasswordAuthenticationToken으로 생성한 토큰을 넘겨 권..

9uin 2024.04.02 0

[프로그래머스 lv 2] 두 큐 합 같게 만들기(C++)

문제 풀이 문제에도 언급했듯, 총합을 구하고 반 나눈 수가 각 큐 안에 든 수들의 합이 되도록 해야한다. 두 큐에 든 숫자들의 합이 30이면, 각 큐의 합은 각 각 15가 되도록 맞추는 것이다. 그렇다면 언제 -1이 나오게 되는가? 1. 두 큐의 합이 홀수면 반으로 나눌 수 없으니, 어떻게 해도 두 큐의 합이 같도록 할 수 없다. 2. queue 사이즈 만큼의 횟수를 두 번 이상 반복하면, 각 큐에 들어있던 수가 서로 뒤바뀐다. 즉, 그 이상 반복하면 의미가 없다. int answer = 0; long long sum1 = 0; long long sum2 = 0; long long sum; queue q1; queue q2; for(int i = 0 ; i < queue1.size(); i++){ sum..

프로그래머스 2023.11.28 0