자기 입맛에 맞는 NestJS 초기 세팅하기
"NestJS boilerplate" NestJS를 처음 시작한 사람들은 한 번씩 검색해봤을 법한 키워드일 것이다. 근데 막상 코드를 확인해보면 뭐가 뭔지, 다 필요한 건지 헷갈린다.

"NestJS boilerplate" NestJS를 처음 시작한 사람들은 한 번씩 검색해봤을 법한 키워드일 것이다. 근데 막상 코드를 확인해보면 뭐가 뭔지, 다 필요한 건지 헷갈린다.

이 글에서는 Spring AOP를 활용해 분산 락 처리 코드를 비즈니스 로직에서 완전히 분리하는 방법을 소개한다. 동시성을 제어를 위해 Lock 인터페이스를 사용할 때, try-finally 블록과 락 관리 코드가 비즈니스 로직을 압도하는 문제를 겪게 된다. Spring의 @Transactional이 트랜잭션…

이전 글인 "좋아요 기능으로 알아보는 비관적 락"에서 이어지는 글이다. "Lettuce는 SpinLock만 지원한다"는 잘못된 정보를 바로잡고, Spring RedisLockRegistry의 PubSub Lock 설정으로 Redisson 없이도 효율적인 분산 락을 구현하는 방법을 소개한다. 구글에 "Redis 분산…

이 글에서는 좋아요 기능을 구현하면서 발생하는 동시성 문제를 DB 락으로 해결하는 과정을 다룬다. 비관적 락의 동작 원리와 함께, 넥스트 키 락(Next-Key Lock)으로 인한 성능 저하 문제까지 살펴본다. 리뷰에 좋아요를 눌렀는지 여부를 판단하기 위해 ReviewLike 엔티티를 설계해보자. 좋아요를 추가할…

이 글에서는 synchronized 키워드의 JVM 모니터 락이 실제로 어떻게 동작하는지 살펴보고, ReentrantLock이 제공하는 동시성 처리 기능을 알아본 뒤, 동시성 프로그래밍을 할 때 발생할 수 있는 생산자-소비자 문제를 해결해본다. 그리고 사용자별 키 값을 활용한 락 분리 전략으로 성능을 개선하는…