2025/10 2

분산 락(distributed lock) 이란?

분산 환경(MSA)에서의 동시성 제어는 단순히 뮤텍스(Mutex) 나 세마포어(Semaphore) 만으로는 해결할 수 없다.이들은 하나의 프로세스 내에서 스레드 간 자원 공유를 제어하기 위한 기법이기 때문이다.프로세스 간에는 메모리를 공유하지 않기 때문에 서로의 락 상태를 확인하거나 제어할 수 없다.즉, 한 서버에서 설정한 락을 다른 서버가 인식할 방법이 없다.따라서 여러 대의 서버가 네트워크를 통해 동일한 공유 자원(예: 재고, 쿠폰, 포인트 등) 에 접근할 수 있는 상황에서는분산 락(Distributed Lock) 이 필요하다. 분산 락(distributed lock) 이란?분산 락은 공통 저장소에 락의 상태를 저장하고 각 프로세스가 이 상태를 읽어 락을 획득하거나 해제하는 방식으로 동작한다...

DB 2025.10.16

Spring Batch를 활용한 쿠폰발급 및 메일전송

중고물품 거래 플랫폼을 개발하면서, 마케팅 측면에서 유저가 이메일 수신을 허용하도록 유도하기 위해 생일인 유저에게 생일 쿠폰을 자동으로 발송하는 기능을 구현했다. 이 기능을 어떤 방식으로 구현할지 고민하던 중, 확장성과 유지보수성을 고려하여 Spring Batch를 도입하기로 결정했다. Spring Batch란? Spring Batch는 대용량 데이터를 효율적으로 처리하기 위한 Java 기반 배치 프레임워크다. 주로 청크(Chunk) 단위로 데이터를 나누어 처리함으로써, 상황에 따라 메모리를 유연하게 사용할 수 있다는 장점이 있다. Spring Batch의 청크 처리 구조는 다음과 같은 구성요소로 이루어진다. 1. Scheduler → 배치 실행을 트리거(JobLauncher 실행) 한다.2..

Java 2025.10.15