Skip to content

사전과제 제출#20

Open
wlsql852 wants to merge 4 commits intohanghae-skillup:mainfrom
wlsql852:main
Open

사전과제 제출#20
wlsql852 wants to merge 4 commits intohanghae-skillup:mainfrom
wlsql852:main

Conversation

@wlsql852
Copy link

@wlsql852 wlsql852 commented Jan 6, 2025

제목(title)

주차와 함께 변경 사항을 요약하여 구성해 주세요.

ex: [1주차] 사용자 로그인 기능 구현
[사전과제] concurrent 패키지를 이용한 동시성 해결


작업 내용

이번 PR에서 진행된 주요 변경 사항을 기술해 주세요.

코드 구조, 핵심 로직 등에 대해 설명해 주시면 좋습니다. (이미지 첨부 가능)

ex: ConcurrentOrderService에 동시 주문 요청 처리 기능 추가

  • BeforeOrderServiceJava에 Concurrent 패키지의 lock과 ConcurrentHashMap을 이용해 동시 주문 요청 처리 기능 추가
  • 해당 주문 내용을 log로 출력
  • lastestOrderDatabase에 각 주문자마다 마지막 주문 내용 저장되도록 수정
  • 위의 내용을 테스트

발생했던 문제와 해결 과정을 남겨 주세요.

ex) 문제 1 - 다수의 사용자가 동시에 같은 리소스를 업데이트할 때 재고 수량이 음수로 내려가는 데이터 불일치 문제 발생

해결 방법 1 - Redis SET 명령어에 NX(Not Exists)와 PX(Expire Time) 옵션을 활용해 락을 설정했습니다. 이유는 ~

  • 문제 1

이번 주차에서 고민되었던 지점이나, 어려웠던 점을 알려 주세요.

과제를 해결하며 특히 어려웠던 점이나 고민되었던 지점이 있다면 남겨주세요.

  • lastOrderDatabase에 제대로 들어가는지 test했는데 제가 쓴 방법은 threadCount가 커서 재고가 0이 되면 test의 lastOrder에는 들어가고 service안의 lastOrderDatabase에는 안들어가는 상황이 되어 test가 실패합니다. threadCount를 줄여서 성공했는데 threadCount가 커도 test가 성공할 방법이 있었을까요?

리뷰 포인트

리뷰어가 특히 의견을 주었으면 하는 부분이 있다면 작성해 주세요.

ex) Redis 락 설정 부분의 타임아웃 값이 적절한지 의견을 여쭙고 싶습니다.

기타 질문

추가로 질문하고 싶은 내용이 있다면 남겨주세요.

ex) 테스트 환경에서 동시성 테스트를 수행하였고, 모든 케이스를 통과했습니다. 추가할 테스트 시나리오가 있을까요?

  • 추가할 테스트 시나리오가 있는지 궁금합니다.
  • 마음대로 lombok을 추가하거나 해도 괜찮나요?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant