Yeji's Tech Notes
반응형
article thumbnail
쿠폰발급 서비스 동시성 처리하기3 - (3/3) (feat.Redis)
Spring 2024. 2. 13. 09:30

요구사항 이번 글에서는 이벤트 쿠폰 발급 시 Redis를 이용해 동시성 처리를 해보겠습니다. 쿠폰 발급 서비스 동시성 처리하기 1 - (1/3) (feat. synchronized) 요구사항 멀티스레드 환경에서 쿠폰 발급 요청 시 동시성 처리하기 위한 방법으로 synchronized를 사용해보았습니다. Synchronized의 용도 멀티스레드 환경에서 여러 스레드가 하나의 공유 자원에 동 yejipro.tistory.com 쿠폰 발급 서비스 동시성 처리하기 2 - (2/3) (feat. Database Lock) 요구사항 지난 번 동시성 처리하기 방식으로 synchronized를 사용했습니다. 이번 글에서는 데이터베이스에서 제공하는 Lock을 이용해 동시성 처리를 해보겠습니다. 쿠폰 발급 서비스 동시성 ..

article thumbnail
쿠폰 발급 서비스 동시성 처리하기 2 - (2/3) (feat. Database Lock)
Spring 2024. 1. 30. 09:30

요구사항 지난 번 동시성 처리하기 방식으로 synchronized를 사용했습니다. 이번 글에서는 데이터베이스에서 제공하는 Lock을 이용해 동시성 처리를 해보겠습니다. 쿠폰 발급 서비스 동시성 처리하기 1 - (1/3) (feat. synchronized) 요구사항 멀티스레드 환경에서 쿠폰 발급 요청 시 동시성 처리하기 위한 방법으로 synchronized를 사용해보았습니다. Synchronized의 용도 멀티스레드 환경에서 여러 스레드가 하나의 공유 자원에 동 yejipro.tistory.com 데이터베이스 Lock 방식 (MYSQL 기준) Pessimistic Lock (비관적 락) 트랜잭션 충돌이 발생한다고 가정하고 우선 락을 거는 방법입니다. 트랜잭션 안에서 서비스 로직이 진행되어야 합니다. 결국..

article thumbnail
쿠폰 발급 서비스 동시성 처리하기 1 - (1/3) (feat. synchronized)
Spring 2024. 1. 15. 09:30

요구사항 멀티스레드 환경에서 쿠폰 발급 요청 시 동시성 처리하기 위한 방법으로 synchronized를 사용해보았습니다. Synchronized의 용도 멀티스레드 환경에서 여러 스레드가 하나의 공유 자원에 동시에 접근하지 못하도록 막는 것을 말합니다. 만약 여러 스레드가 하나의 공유 자원에 동시에 접근했을 경우 값을 올바르게 변경하거나 가져오지 못하는 경우를 막기위해 사용합니다. Synchronized의 사용법 메소드에 synchronized 설정 메소드 이름 앞에 synchronized를 설정하면 메소드 전체를 임계영역으로 설정할 수 있습니다. synchronized void decrease() { count--; System.out.println(count); } 코드블럭에 synchronized 설..

article thumbnail
[CountDownLatch] 동시성 처리 테스트를 위한 CountDownLatch 사용법
Spring 2024. 1. 15. 09:30

CountDownLatch의 정의 하나 이상의 스레드가 다른 스레드에서 수행 중인 작업이 완룓될 때까지 대기할 수 있는 동기화 보조 기능이라고 생각하시면 됩니다. CountDownLatch는 다양한 용도로 사용할 수 있습니다. CountDownLatch는 1개의 카운트로 초기화된 CountDownLatch는 on/off Latch 또는 게이트 역할을 해줍니다. 호출되는 모든 스레드는 countDown()을 호출하는 스레드에 의해 열릴 때까지 게이트에서 대기합니다. N으로 초기화 된 CountDownLatch는 N개의 스레드가 일부 작업을 완료하거나 일부 작업이 N번 완료될 때까지 스레드 하나를 대기시키는 데 사용할 수 있습니다. CountDownLatch의 유용한 속성은 countDown을 호출하는 스레..

article thumbnail
[Test] 의미있는 단위 테스트 Naming Convention 작성하기
Spring 2023. 6. 21. 09:30

개요 단위 테스트 작성 중 의미있는 Naming Convention에 관해 고민하다 7Popular Unit Test Naming Conventions 글을 보며 정리한 글입니다. 그 외에도 단위테스트 활용방법 글을 읽으면 단위 테스트 작성 시 도움이 될 것 같습니다. 의미있는 Naming Convention 메서드명_테스트상태_기대결과 예시) 성인인증 시 18세 이하일 경우 False void isAdult_AgeLessThan18_False() {} 만약 메소드 이름이 코드 리팩터링의 일부로 변경된다면, 이와 같이 테스트 이름도 변경되어야 하고, 그렇지 않으면 다음과 같이 변경되기가 어려워집니다 메서드명_기대결과_테스트상태 ex) 성인인증 시 18세 이하일 경우 False void isAdult_Fa..

article thumbnail
Spring에서 지연로딩 데이터 갖고오기
Spring 2023. 6. 2. 09:30

개요 "not initialize proxy - no session" Spring에서 Entity데이터를 DTO로 변환해서 가져오는 과정에서 위와 같은 문제가 발생했습니다. 이러한 문제가 생기는 원인과 해결방법에 대해서 정리해봤습니다. 문제 발생 원인 Account 테이블에서 다중 값을 가질 수 있는 Column이 존재해 fetchType.LAZY형식의 데이터로 값을 저장했습니다. 해결방법 1. FetchType.LAZY -> FetchType.EAGER 변경 2. @EntityGraph 3. Querydsl을 이용한 fetchjoin() 저는 2번째 방법을 선택해서 해결했습니다. 우선 LAZY에서 EAGER로 변경하는 것은 선호하지 않는 방법입니다. 1번째 방식으로 변경하면 불필요한 리소스가 발생하므로..

반응형