💡 최상용님의 재고시스템으로 알아보는 동시성이슈 해결방법 강의를 듣고 정리한 내용입니다.배경지난 동시성이슈 해결방법 (2/3) - 데이터베이스 락(Lock)으로 해결하기에 이어 이번에는 레디스(Redis)를 활용하여 동시성 문제를 해결해 본다. 동시성 문제를 해결하기 위해서 레디스에서는 대표적으로 Lettuce와 Redisson을 활용한다. (레디스에 대한 설명은 이번 글에서는 생략한다.) 동시성을 제어하기 위해선 DataBase 또는 Redis에서 제공하는 Lock를 활용하여 데이터의 동시성 접근을 제어하는 방법을 이용해야 한다. DataBase Lock를 이용할 경우 추가적인 인프라 구성요소 없이 동시성을 해결할 수 있다는 장점이 있으나 Lock 획득을 위해 Waiting되는 DataBase Con..
Spring/락
💡 최상용님의 재고시스템으로 알아보는 동시성이슈 해결방법 강의를 듣고 정리한 내용입니다.배경지난 동시성이슈 해결방법 (1/3) - 동시성 이슈와 Application Level로 해결하기 글에서 멀티 스레드 환경에서 개발할 때 발생할 수 있는 경합 상태(Race condition)를 비롯한 동시성 이슈를 알아보았다. 이를 해결하기 위해서는 공유 데이터에 접근할 때 한 번에 한 스레드만 접근하고 작업할 수 있도록 제어를 해야 한다는 사실을 알았고 자바의 synchronized 키워드를 먼저 적용하여 해결하였다. 하지만 자바의 synchronized 키워드는 한 프로세스 내에서만 스레드 안전성을 제공하며 스프링의 @Transactional 어노테이션과 함께 사용하기에 한계가 있었다. 결국 동시성 이슈를 해..
💡 최상용님의 재고시스템으로 알아보는 동시성이슈 해결방법 강의를 듣고 정리한 내용입니다. 어떤 작업이 오래 걸려 서비스 응답 속도에 영향을 주는 경우, 애플리케이션의 성능 향상을 위해 멀티 스레드 환경을 고려할 수 있다. 멀티 스레드를 통해 여러 작업 스레드가 동시에 실행되어 응답 속도와 처리량을 개선할 수 있다. 그러나, 여러 스레드가 동시에 동일한 데이터에 접근하고 수정할 경우 데이터 일관성이 깨지거나 레이스 컨디션(Race Condition)과 같은 문제가 발생할 수 있다. 이는 작업이 의도한 대로 처리되지 않게 만들어, 데이터 무결성을 손상시킬 위험이 있다. 강의에서는 상품 재고를 관리하는 간단한 재고 시스템을 구현하여 멀티 스레드 환경에서 발생하는 동시성 문제를 마주하고 발생 원인을 분석한다...