본문 바로가기

개발일지/TIL

(89)
[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..
[230812] 성능 테스트 툴 선정 성능 테스트 툴 선정 💬 성능 테스트 툴을 정하기 위해 우리에게 필요한 기준을 정했다. ➡ GUI가 제공이 되는가? 이유 : 테스트하는 것이 직관적이고 이해하기 쉽기 때문이다. ➡ 우리가 사용한 프로토콜(HTTP, WebSocket)을 지원하는가? ➡ 간단하게 설정을 할 수 있으며, 러닝 커브는 낮은가? 이유 : 주어진 시간이 많지 않은 상황에서 성능 향상에 많은 시간을 투자하기 위해 빠른 성능 테스트가 필요하다고 판단했다. ➡ 참고할 수 있는 레퍼런스가 많은가? 이유 : 트러블이나 설정 등에 대한 참고할만한 문서가 많다면 문제 발생 시 빠르게 해결할 수 있다. ➡ 비용이 들지 않는가? 이유 : 서버 비용으로 많은 돈이 지출될 것이기 때문에 성능 테스트 도구에 투자할 여유가 없다고 판단했다. ➡ 애플리케..
[230811] Java Faker로 더미 데이터 생성 데이터 생성 방법 고민 💬 MVP 기능을 모두 구현한 이후에 성능 테스트를 진행하기로 했다. 성능 테스트를 위해서 먼저 데이터를 모으기로 했다. 💢 아이디어 경매 데이터를 모으는 것은 어려웠다. 찾아보니 부동산, 법원 경매 등을 데이터 밖에 없었다. 💬 실제 서비스를 하기 위해서 만들어진 프로젝트가 아니라는 점이 다른 관점에서 접근하도록 만들었다. 연관이 없더라도 DB 스키마에 맞추어서 대량의 데이터를 넣어 성능을 테스트 해 볼 수 있겠다고 판단했다. 💢 더미 데이터를 만들어주는 사이트가 있어 사용하려고 했다. 하지만 유료가 아니면 만들 수 있는 건수는 1,000건 밖에 되지 않았다. 그 이상의 데이터가 필요한데 말이다. ✅ 찾아보니 Java로 더미 데이터를 만들 수 있는 Java Faker가 있다는 것..
[230810] 2개 이상의 기능을 1개의 SSE로 처리할 때 문제 SSE 구조 문제 ✔ 문제 1 💢 알림을 보내야 할 주체를 특정하기가 어렵다. ➡ 어떤 유저에게 알림을 보내줄 것인가? ➡ 포스트를 보고 있는 사람을 어떻게 특정할 것인가? ✅ 유저와 포스트를 특정할 수 있도록 ID를 부여하도록 했다. Ssemitter와 묶기 위해 객체를 하나 만들었다. ✔ ID와 Ssemitter가 묶인 클래스 public record CustomSseEmitter ( Long id, SseEmitter sseEmitter ) {} ✔ 문제 2 💢 알림과 실시간 입찰 가격 조회를 하나의 SSE를 사용할 경우 문제가 발생한다는 것을 알았다. ➡ 필요하지 않은 이벤트 전송이 일어난다. [ 경매를 참여하지 않은 클라이언트에게도 이벤트가 날아가는 경우가 생김 ] 💬 유저와 데이터가 많아질수록..