동시성 (Concurrency)

    [Spring] Redisson 라이브러리를 이용한 Distribute Lock 동시성 처리 (2/2)

    [Spring] Redisson 라이브러리를 이용한 Distribute Lock 동시성 처리 (2/2)

    이 글은 컬리 기술 블로그에 발행한 글과 동일한 글입니다. 예제 및 테스트 코드는 github 에서 확인 가능합니다. Redisson 라이브러리를 이용한 Distribute Lock 동시성 처리 (2) 이번엔 앞에서 만들어놓은 @DistributeLock 어노테이션을 이용해 동시성을 처리하는 예제코드, 테스트 코드를 작성해보겠습니다. 동시성에 대한 테스트 코드는 멀티스레드를 이용해 작성 하겠습니다. 앞선 글을 아직 읽지 안았다면 아래의 글을 먼저 보고오시는것을 추천드립니다. 2022.10.04 - [동시성 (Concurrency)] - [Spring] Redisson 라이브러리를 이용한 Distribute Lock 동시성 처리 (1) Case1 - 쿠폰 차감 서비스 여러명의 사용자가 쿠폰을 동시에 발급받..

    [Spring] Redisson 라이브러리를 이용한 Distribute Lock 동시성 처리 (1/2)

    [Spring] Redisson 라이브러리를 이용한 Distribute Lock 동시성 처리 (1/2)

    이 글은 컬리 기술 블로그에 발행한 글과 동일한 글입니다. 예제 및 테스트 코드는 github 에서 확인 가능합니다. Redisson 라이브러리를 이용한 Distribute Lock 동시성 처리(1) Redis를 통한 분산락을 이용해 동시성을 해결하는 방법에 대해 알아보고 이를 적용한 방법에 대해 예제코드를 함께 공유드리려 합니다. 분산 락(Distribute Lock) ? Lock: DB의 트랜잭션의 순차적 처리를 보장하기 위한 방법 여러 서버에서 동기화된 처리를 하기 위해 Database, Redis와 같은 공통된 저장소를 이용한 방법 (공통된 저장소를 사용해 여러 서버에 대한 동기화된 처리가 가능함) Redisson 사용 이유 Spring에서 제공하는 대표적인 redis 라이브러리로는 Lettuce..

    JPA 에서 낙관적 락(Optimistic-Lock)을 이용해 동시성 처리하기

    JPA 에서 낙관적 락(Optimistic-Lock)을 이용해 동시성 처리하기

    예제 및 테스트 코드는 github 에서 확인 가능합니다. 낙관적 락과 비관적 락의 차이점 이번엔 낙관적 락(Optimistic Lock) 을 이용해 동시성 처리를 하는 방법에 대해 알아보려 합니다. 그전에 낙관적 락(Optimistic Lock) 과 비관적 락(Pessimistic Lock) 의 간략한 차이점에 대해 먼저 설명드리겠습니다 낙관적 락(Optimistic Lock) 충돌이 발생하지 않을 것이라 가정하고 Lock을 거는 방식 트랜잭션을 commit 하는 시점에 충돌을 알 수 있음 DB Level 에서 동시성을 처리하는것이 아닌 Application Level 에서 처리 비관적 락(Pessimistic Lock) 충돌이 발생할것이라 가정하고 우선 DB에 Lock을 거는 방식 (select fo..