Project/대용량 트래픽 프로젝트 6

[프로젝트] Windows 환경에서 JMeter 설치 및 부하 테스트 하기

부하 테스트를 위해 JMeter 설치가 필요했던 나 ,, 윈도우에서 JMeter 설치를 비롯해 테스트를 해야 하는 분들이 이 포스팅 하나만 읽어도 쉽게 가능했으면 하는 마음으로 포스팅한다. 설치1. JMeter를 아래 링크에 가서 설치해주자.https://jmeter.apache.org/ Apache JMeter - Apache JMeter™Apache JMeter™ The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing ..

[프로젝트] QueryDSL 사용 시 페이징 응답 JSON 데이터 최적화 하기

문제 상황spring 3.3.4 버전, QueryDSL로 검색 기능을 구현하다, API 테스트 과정에서 처음 보는 WARN 로그를 발견했다.2024-10-06T20:38:53.327+09:00 WARN 36852 --- [user-service] [io-19093-exec-1] ration$PageModule$WarningLoggingModifier : Serializing PageImpl instances as-is is not supported, meaning that there is no guarantee about the stability of the resulting JSON structure!For a stable JSON structure, please use Spring Data's Pa..

[프로젝트] Redis 분산락으로 재고 감소 동시성 이슈 해결하기 1 - 기술적 의사결정

필자는 MSA 기반 이커머스 프로젝트에서 상품/재고/예약구매 도메인을 맡아 진행중이다. 지난 프로젝트에서 쿠폰 도메인을 맡아 개발했을 때 Race condition 문제를 예상치 못하게 겪고 (..) 이번 프로젝트에서 상품/재고 도메인을 맡았을 땐 어느 정도 동시성 이슈가 생기리라고 예상을 했었다. 그래서 이번 포스팅에선 해당 이슈가 왜 발생하는지 원인을 분석하고, 문제를 해결하기 위한 방법과 그에 따른 기술적 의사결정 과정을 적어보려 한다.  문제 상황 바로 테스트 코드를 작성해보자.동시에 100개의 요청이 들어올 때의 테스트 코드를 작성하고 돌려보니 역시나 실패다.  실패하는 이유는 역시나 위에 언급해 둔 Race condition 문제 때문이다. 💡Race Condition 이란?두 개 이상의 스..

[프로젝트/기술적 의사결정] Kafka vs RabbitMQ, 대규모 트래픽 상황에 맞는 메세징 시스템 선택

요구 사항사용자들이 주문 api 요청을 할 때, 사용자 트래픽이 몰리는 상황에서도 안정적인 주문 처리가 필요했다. 주문이 완료되면 재고를 차감하는 기능이 필요했고, 이때 효율적으로 주문을 처리하고 트래픽을 관리하기 위해 메시징 시스템을 도입하기로 결정했다. 기술 선택지RabbitMQKafka 선택한 기술 및 근거두 가지 기술 선택지 중, 어떤 시스템이 더 적절한지 검토할 때 아래와 같은 상황을 고려했다.▪️트래픽 처리 능력 : 높은 동시 요청 상황에서의 안정성이 필요하다. ▪️메세지 전달 보장 : 주문이 실패 없이 처리되어야 하며, 중복 주문이나 데이터 손실을 방지해야 한다. ▪️재고 관리 : 주문이 완료되었을 때 재고를 정확히 차감해야 한다. 이제 각 기술 선택지를 비교해보면서 결론을 내려보자.  1...

[프로젝트] MSA 기반 대용량 트래픽 프로젝트 설계 및 S.A 문서

MSA 기반 대규모 트래픽 처리 팀 프로젝트에 들어가면서, 초반 요구사항을 정리하고 ERD를 설계하는 동안 들었던 고민들과 그 결과를 정리해두려 한다.이번 프로젝트는 요구사항이 미리 정해진 게 아닌, 팀원들과 함께 상의해서 요구사항을 정하는 프로젝트였으므로 요구사항과 도메인 구성 등등을 정하기 위한 회의를 진행했다. 🔹요구 사항요구사항의 경우, 팀원들 모두가 개발 시 공통적으로 지켜야 할 요구 사항과 도메인 별 요구 사항으로 나누어 토론하고 결정했다. 🔗전체 요구사항 보러가기 요구 사항 정리 | Notion필수 구현 사항teamsparta.notion.site 🔹테이블 명세서 및 ERD🔗테이블 명세서 보러가기 테이블 명세서 | Notion유저(p_users)teamsparta.notion.site..