최상용
@169developer9973
수강생
5,784
수강평
466
강의 평점
4.8
안녕하세요. 지식공유자 최상용입니다.
많은 오픈소스에 기여한 경험이 있는 현직 백엔드 개발자입니다.
- Spring Data Mongo Contributor
- querydsl Contributor
- grpc-kotlin Contributor
- ksp Contributor
- mybatis Contributor
강의
수강평
- 실습으로 배우는 선착순 이벤트 시스템
- 재고시스템으로 알아보는 동시성이슈 해결방법
게시글
질문&답변
주문이벤트 발행에서 이벤트 발행을 동기적으로 처리하는 이유
발그레지는개발님 안녕하세요!2가지로 나누어볼 수 있을것 같아요.afterCommit 에서 처리를 한 이유DB 의 트랜잭션과 분리하여 이벤트는 발행되고 DB 는 롤백되는 상황을 막기 위함입니다.동기로 발송한 이유kafka 에 이벤트를 발행하는것은 소요시간이 그리크지 않은 작업으로 비동기로 할 이유가 없었기때문에 동기적으로 처리하였습니다.전송 실패처리이것은 동기, 비동기 상관없이 잘 처리가 되어야 할 것 같습니다.말씀하신대로 전송 보장이 되어야 한다면 outbox pattern 을 활용하여 처리할 수 있을 것 같습니다.추가적인 질문이 있으시다면 말씀해주세요!
- 0
- 1
- 16
질문&답변
spring-retry가 spring-core 패키지로 편입되었습니다.
도등어님 안녕하세요!트러블슈팅을 한 경험을 공유해주셔서 감사드립니다. 😃
- 1
- 1
- 48
질문&답변
TCC 주문 도중 문제 발생 시 상태 해소 전략 관련 질문입니다.
도등어님 안녕하세요.말씀하신대로 reservation entity 가 맞습니다.product_reservation, point_reservation 을 의도했습니다.감사합니다.
- 0
- 1
- 37
질문&답변
TCC PointService tryReserve 구현 관련 질문입니다.
도등어님 안녕하세요.지금 다시보니 로직에 버그가 있었네요 ㅠㅠ 아래와 같이 예약된금액과 예약할 금액을 모두 빼주어야 할 듯 합니다.public void reserve(Long reserveAmount) { long reservableAmount = this.amount - reserveAmount - this.reservedAmount; if (reservableAmount 말씀해주셔서 감사합니다. 강의내용은 추후 업데이트 하도록 하겠습니다.
- 0
- 2
- 29
질문&답변
[TCC 구현하기(2) - 동시성문제 해결하기] 질문
홍승현님 안녕하세요.질문에 대한 답변이 늦어져서 죄송합니다.경합이 자주, 많이 생기는 경우에는 낙관적락보다 비관적락이 유리한것이 맞습니다.다만, 커머스의 특성상 주문이 많더라도 하나의 품목에 동시에 주문이 오는경우는 적을것이라고 생각됩니다.이러한 특성을 생각한다면 여전히 낙관적락이 유리할것 같습니다.강의에 대해 좋은말씀 해주셔서 감사합니다!
- 0
- 2
- 42
질문&답변
ApplyService와 Consumer서비스의 db공유?
차성호님 안녕하세요!말씀하신대로 consumer 와 service 에서 동일한 db 를 공유하고 있기에 가능한것입니다.감사합니다.
- 0
- 2
- 26
질문&답변
안녕하세요 강사님 질문있습니다.!!
정인호님 안녕하세요.제가 이해한게 맞다면 OrderConfirmEvent 를 발행하면 재고, 쿠폰, 적립금을 한번에 처리를 한다고 이해를 했는데요.이렇게 되면 예외를 핸들링하기가 힘들어지기때문에 순차적으로 진행을 할 것 같습니다.예를들어 OrderConfirmEvent 를 발행하면 재고를 감소시키고 재고감소에 성공하면 쿠폰을 소진시키고 주문이 정상적으로 되면 적립금을 주는식으로 개발을 할 것 같습니다.병렬로 수행하게 되면 다른작업들이 끝났는지 안끝났는지 검사를 해야하는 로직을 추가해야 하기때문에 로직이 복잡해질것 같기때문입니다.만약 병렬로 수행을 해야한다면 실패이벤트를 받았을 때 다른 이벤트들이 종료되었는가? 에 대한 체크를 해야 할 것 같습니다.쿠폰이 실패되었을 때 재고는 처리되었는지? -> 재고가 처리되어있지 않다면 기다렸다가 다시 처리 감사합니다.혹시 또 질문이 있으시다면 댓글로 남겨주세요!
- 0
- 2
- 52
질문&답변
테스트 코드
퓨퓨님 안녕하세요.어떤것을 테스트하는것이 목적인가? 를 생각해보면 좋을것 같습니다.비즈니스로직을 검증할 때 저는 카프카 발행을 했는가? 정도만 검증을 하는편입니다.컨슈머쪽은 로직에 대한 테스트를 하는편입니다.통합테스트는 별도로 진행하진 않았는데 필요하다면 진행할 수 있을것 같습니다.대부분의 경우엔 카프카 메시지 발행여부정도와 실제로 동작하는지 확인하는정도로만 했던것 같습니다.감사합니다.
- 0
- 2
- 40
질문&답변
낙관적 락을 사용할 떄 차이점
문수님 안녕하세요!강의에서는 낙관적락을 사용한다는것을 명시적으로 나타내기 위해서 삽입하였습니다!어노테이션은 필요에따라 사용하시면 될 것 같습니다!감사합니다
- 0
- 2
- 71
질문&답변
동시성 검증 코드에 관한 문의
DevelopersNan 님 안녕하세요!좋은질문 주셔서 감사드립니다.1차적으로는 코드내에 Thread.sleep 같은 코드를 일시적으로 추가해서 경합이 발생할 수 있도록 코드를 제어할 수 있을듯합니다.하지만, 이것도 완벽한 방법은 아니기 때문에 실제로 많은 환경에서의 케이스를 테스트 하고싶으시다면 부하테스트 툴을 활용할 수 있을 것같습니다.많은 트래픽을 받을 수 있도록 서버를 세팅해놓고 부하테스트 툴을 통해 많은 트래픽을 유발시킨 후, 데이터가 의도한 대로 저장이 되었는지 확인해볼 수 있을듯합니다.감사합니다.
- 0
- 2
- 50






