본문 바로가기

개발일지

(101)
[ 230820 ] 36주차 회고 일주일 간 진행한 내용 1. 성능 테스트 기준 선정 2. 서버에서 성능 테스트 성능 테스트 기준 선정 [진행] 기능 구현이 끝나고 나서 성능 테스트를 하기 위해서 기준을 선정해야 했다. 우리가 넣어놓은 데이터의 숫자를 기준으로 하기로 했다. 일반적인 트래픽, 인기 있고 자주 사용되는 기능의 트래픽을 분리하기로 했다. 일반적인 트래픽은 유저 10만 건을 기준으로 1분에 활성 유저를 2~5%(2,000~5,000명) 정도로 잡았다. 인기 있고 자주 사용되는 기능의 트래픽의 경우 일반적인 트래픽 10배(20,000~50,000명)으로 했다. 급격하게 몰릴 경우 배수로 급증하는 것을 고려해봐야 할 것 같아서다. 우리가 이뤄보고 싶은 목표가 담겨 있기도 했다. [생각] 성능 테스트 기준을 정하는 것은 쉽지 않았..
[230819] Jmeter SSE 테스트 데이터 전송 받지 못하는 문제 테스트 시 SSE 데이터 전송받지 못하는 문제 💬 Jmeter에서 SSE 테스트 스크립트가 정상적으로 데이터를 받지 못하는 문제가 발생했습니다. 테스트를 진행하기 위해 이 문제를 해결해야 했습니다. ✔ 원인 분석 💬 원인을 알아보기 위해 연결, 종료, 데이터를 전송받을 때 메시지를 출력해 봤습니다. 어느 지점에서 문제가 일어나는지 확인하기 위해서였습니다. ➡ 연결이 정상적으로 이루어지는 메시지 출력 ( O ) ➡ 연결 완료되었을 때 전송되는 메시지 출력 ( O ) ➡ 연결이 종료되었을 때 전송되는 메시지 출력 ( O ) 💬 모든 메시지가 정상적으로 출력이 되는 것을 확인했습니다. 그런데 이걸 확인하는 과정에서 이상한 패턴이 확인할 수 있었습니다. 연결, 연결 메시지, 종료 이 과정에 4~5초 안에 이루어..
[230818] Jmeter SSE 테스트 Jmeter SSE 테스트 💬 서비스에서 가장 핵심이 되는 경매 입찰 기능이 SSE로 구현되어 있습니다. Jmeter에서 SSE 테스트 환경을 구성을 해야 합니다. ✔ 스크립트 작성 💬 Jmeter에서 SSE 테스트 환경을 구성하기 위해서는 JSR223 Sampler에 Groovy 언어로 스크립트를 작성을 해야 합니다. 스크립트에 EventSource 라이브러리를 사용해 SSE 테스트 기능을 작성했습니다. import com.launchdarkly.eventsource.EventSource import com.launchdarkly.eventsource.EventHandler import com.launchdarkly.eventsource.MessageEvent import java.net.URI imp..
[230817] Header에서 Authorization 추출이 안되는 안되는 문제 Header에 담겨있는 토큰이 추출 안 되는 문제 💬 Front에서 Header에 담겨 있는 토큰 값을 추출할 수 없다고 했습니다. 요청에 대한 응답에는 담겨 있었지만, React에서 추출하려고 하면 문제가 되는 것이었습니다. ✔ 원인 💬 Front에서 Cookies, Authorization headers, TLS Client Certificates 같은 자격증명을 위해 사용하는 withCredential 옵션을 True 사용해서 요청을 보내고 있었습니다. 이 옵션이 활성화되어 있는 경우 Access-Control-Allow-Origin에는 와일드 카드(*)을 사용하지 못합니다. ✔ 해결 💬 해결 방법은 두 가지라고 MDN에서 설명을 해주고 있었습니다. 첫 번째는 Front에서 withCredentia..
[230816] Jmeter 아이디어 업데이트 성능 테스트 수정 테스트 💬 성능 테스트 기준이 되는 트래픽과 지표를 가지고 수정 기능을 Jmeter를 통해서 테스트 해보기로 했습니다. ✔ multipart/form-data 적용 💬 수정 기능에는 이미지 파일도 같이 전송이 되어야 했기 때문에 multipart/form-data을 사용했습니다. ➡ HTTP Request에서 Use multipart/form-data 체크 ➡ Parameters에 Json으로 전달할 데이터 입력 ➡ File Upload에 전송할 파일 정보 입력 1. Use multipart/fomr-data 체크 & Json 데이터 입력 2. 전송 파일 정보 입력 ✔ 아이디어 ID와 권한 있는 JWT 토큰 적용 💬 아이디어 ID와 권한 있는 JWT 토큰 데이터는 삭제 테스트를 할 때 만들어진 CS..
[230815] Jmeter 아이디어 삭제 기능 테스트 삭제 테스트 💬 성능 테스트 기준이 되는 트래픽과 지표를 가지고 삭제 기능을 Jmeter를 통해서 테스트 해보기로 했습니다. ✔ 랜덤 아이디 부여 💢 삭제 테스트의 경우 하나의 아이디어를 지우면 다음 요청부터 아이디어가 존재하지 않는 문제가 발생합니다. ✅ Jmeter에서 제공하는 Random Variable을 사용했습니다. 정해진 범위 안에서 랜덤 한 값을 제공해 주기 때문에 요건에 충족했습니다. ✔ 유저 부여 💢 랜덤 하게 정해진 아이디어를 사용할 경우, 하나의 유저만 사용하면 아이디어의 권한이 없는 요청을 하는 문제가 발생합니다. 💬 유저 정보는 JWT 토큰에 담겨있기 때문에 각 아이디어 삭제 권한이 있는 JWT 토큰을 제공하면 됩니다. ✅ 아이디어 권한이 있는 유저 정보와 JWT 토큰을 만드는 부..
[230814] 성능 테스트 어떻게 진행할것인가? 성능 테스트 진행 방식 💬 성능 테스트를 할 수 있는 방법이 여러 가지 있지만, 프로젝트에 적용할 수 있는 것은 성능, 부하 테스트라고 판단했다. ✔ 성능테스트 💬 성능 테스트는 소프트웨어의 애플리케이션의 속도, 응답 시간, 안정성, 확장성 및 리소스 사용량을 테스트하는 데 사용됩니다. 주목적은 애플리케이션의 성능상 문제가 되는 곳을 확인하고 향상하는 것입니다. ✔ 성능테스트 기준 - 트래픽 💬 일반적인 트래픽과 한 순간에 몰리는 트래픽을 구분하기로 했습니다. 일반적인 트래픽은 전체적인 API가 서비스 운영에 있어 성능적인 문제가 없는지 확인하기 위해서입니다.. 한 순간에 몰리는 트래픽은 프로젝트의 주 콘텐츠인 경매이기에 성능을 확인하고 그러한 상황을 대비하기 위해 테스트를 하는 것입니다. 1. 일반적인..
[230813] Jmeter 설치 및 사용해보기 Jmeter 💬 성능 테스를 하기 이전에 Jmeter를 설치를 하고 익숙해지는 시간을 가져보기로 했다. ✔ Jmeter 설치하기 brew install jmeter ✔ Jmeter 실행하기 open /opt/homebrew/bin/Jmeter ✔ Jmeter Plugin Manager 설치하기 1. plugin-manager.jar 설치 ➡ https://jmeter-plugins.org/install/Install/ 2. 설치 파일 bin 폴더 열고 넣기 ➡ open /opt/homebrew/bin ✔ Jmeter Plugin 설치 💬 유용하다는 Plugin 몇 가지 설치 ➡ 3 Basic Graphs ➡ Composite Timeline Graph ➡ jpgc - Standard Set ✔ Jmete..