본문 바로가기

트러블슈팅3

좋아요에서 발생하는 동시성 이슈 좋아요 기능을 구현하면서 생긴 동시성 문제 해결 과정을작성한 글입니다. 문제 상황2명이 동시에 좋아요을 누르게 된 경우, 2명의 좋아요가 전부 반영되지 않는 상황  좋아요 기능을 구현한 코드public Long like(Long postId) { Post post = postRepository.findById(postId).orElseThrow(() -> new PostNotFound()); post.addLikeCnt(); postRepository.save(post); return postId;}게시물 조회 후, 좋아요 갯수 증가 Service 계층 로직입니다. breakPoint를 Thread기반으로 해서, 2개의 요청이 Thread애 동시에 접근할 수 있는 환경을 만들어줍니다.. 2024. 10. 14.
Redis사용시, 발생하는 데이터 정합성 문제 Redis를 사용하면서 겪은 데이터 정합성 문제 해결 과정을작성한 글입니다.  문제 상황게시물을 새로 등록을 하고, 조회를 한뒤 기존 게시물을 업데이트하고,다시 조회를 해보니 업데이트된 게시물이 조회되는 것이 아닌, 업데이트 이전 게시물이 조회가 되는 상황 문제 원인게시물이 업데이트되었을 때, Redis에 저장된 데이터는 동기화되지 않으므로, 데이터 정합성 문제가 발생할 수 있다. 데이터베이스의 게시물 내용이 변경되었지만, Redis는 여전히 이전 데이터를 반환할 수 있어 최신 상태가 유지되지 않는다. 문제 해결 방법게시물을 업데이트할 때, 해당 게시물과 관련된 Redis에 저장된 캐시 데이터를 삭제하여, 다음 조회 시 최신 데이터가 반영되도록 한다. @CacheEvict(value = "getPosts.. 2024. 10. 1.
당행 이체시 발생하는 이중 이체 문제(Double Spend Issue) 🚀 Double Spend Issue - 이중 이체 문제두 개의 트랜잭션이 동시에 동일한 계좌에서 동일한 금액을 이체하려고 할 때, 충분한 잔액이 없는 상황에서 각각의 트랜잭션이 잔액을 충분하다고 판단 함으로 인해 계좌 잔액이 부족한데도 이체가 완료되는 상황 👿 세부 상황A계좌에서 B계좌로 만원, C계좌로 만원을 이체하려고 한다. 순차적으로 A계좌에서 B계좌로, B계좌에서 C계좌로 이체하는 것이 아닌 동시에 두 이체가 이루어지는 상황 📄 @Test 코드@Test@DisplayName("A계좌 이중이체 발생 문제")void A계좌_이중이체_발생_문제() throws Exception{ TransferRequest requestToAccountB = new TransferRequest("12345.. 2024. 7. 17.