블로그로 돌아가기

데드락과 라이브락, 뭐가 다를까? 백엔드 개발자가 꼭 아는 동시성 함정 2가지

이름은 닮았는데 성격은 정반대인 두 동시성 함정. 데드락이 뭐고 언제 생기는지, 라이브락이 뭐고 언제 생기는지, 그리고 둘의 결정적 차이(멈춤 vs 헛돎)를 한 번에 정리했습니다.

에그코드
2026년 7월 11일
7 min read
#데드락#라이브락#교착상태#동시성제어#동시성#트랜잭션#데이터베이스#백엔드#MySQL#자바#데이터베이스락#스프링부트#개발자#에그코드

에그코드 기술 이야기 · 동시성 편

안녕하세요, 에그코드입니다.

저희는 자체 서비스를 직접 운영하며 웹·SaaS·MVP를 만드는 개발사입니다.

동시성을 다루다 보면 이름은 닮았는데 성격은 정반대인 두 함정을 만납니다. 바로 데드락라이브락입니다.

둘 다 "작업이 끝나지 않는" 문제처럼 보입니다. 하지만 원인도, 증상도, 잡는 법도 다릅니다.

이번 글에서 데드락과 라이브락이 각각 뭐고, 언제 생기며, 무엇이 다른지 정리해 보겠습니다.

두 트랜잭션이 서로의 락을 기다리며 멈춘 데드락 순환 대기 구조도
서로가 쥔 걸 기다리다 둘 다 멈춘다 — 데드락

데드락(교착 상태)이란

데드락은 둘 이상의 작업이 서로가 쥔 자원을 기다리며 영원히 멈추는 상태입니다. 한국어로는 교착 상태라고 부릅니다.

좁은 골목에서 마주 온 두 차가 서로 "네가 먼저 비켜"만 하며 둘 다 못 가는 상황이죠.

T1이 A행을 잠그고 B행을 기다리고, T2가 B행을 잠그고 A행을 기다립니다. 서로가 서로를 물고 있어 아무도 앞으로 못 갑니다.

데드락은 언제 생기나

데드락은 네 조건이 동시에 맞을 때만 생깁니다. 상호 배제 · 점유하며 대기 · 뺏지 못함 · 순환 대기, 이 네 가지입니다.

실무에서 가장 흔한 방아쇠는 락을 거는 순서가 코드마다 다를 때입니다.

A계좌 → B계좌 순으로 잠그는 이체와, B계좌 → A계좌 순으로 잠그는 이체가 동시에 실행되면 딱 걸립니다.

다행히 대부분의 DB는 데드락을 감지하면 한쪽 트랜잭션을 강제 롤백해 풀어 줍니다.

락 획득 순서가 엇갈려 데드락이 발생하는 케이스 도식
락을 거는 순서가 엇갈리는 순간 데드락이 생긴다

라이브락이란, 언제 생기나

라이브락은 멈추지는 않는데 진행도 안 되는 상태입니다. 작업들이 서로를 의식해 계속 상태만 바꾸며 헛도는 겁니다.

복도에서 마주친 두 사람이 동시에 같은 쪽으로 비켜서기를 반복하며 못 지나가는 상황과 같습니다.

데드락은 완전히 멈춰 CPU도 거의 안 쓰지만, 라이브락은 바쁘게 돌면서도 아무 진전이 없습니다.

주로 충돌을 피하려고 "양보하고 재시도" 로직을 넣었는데, 양쪽이 똑같이 양보·재시도해서 계속 부딪힐 때 생깁니다.

두 작업이 서로 양보만 반복하며 헛도는 라이브락 개념도
멈추지도 끝나지도 못한 채 헛도는 라이브락

그래서 데드락과 라이브락, 뭐가 다른가

한 문장으로 줄이면 이렇습니다. 데드락은 멈춤, 라이브락은 헛돎.

구분데드락 (멈춤)라이브락 (헛돎)
상태완전히 정지계속 실행 · 진전 없음
자원서로 물고 안 놓음서로 양보만 반복
CPU 사용거의 안 씀내내 씀
감지멈춰 있어 잡기 쉬움겉보기 정상 → 찾기 어려움

감지도 다릅니다. 데드락은 멈춰 있어 잡기 쉽고, 라이브락은 겉보기엔 도는 중이라 오히려 찾기 어렵습니다.

참고로 특정 작업만 계속 밀려 자원을 못 받는 기아 상태(starvation) 도 있는데, 라이브락은 그 기아가 여럿에게 동시에 일어나는 형태로 볼 수 있습니다.

데드락과 라이브락의 상태·자원·CPU·감지 난이도를 비교한 표
데드락 vs 라이브락 한눈 비교

정리하며

데드락과 라이브락은 이름은 닮았지만, 하나는 멈춤이고 하나는 헛돎입니다.

어느 쪽이든 정답은 상황마다 다릅니다. 락을 거는 순서를 코드 전체에서 하나로 맞추거나, 타임아웃을 두거나, 재시도에 무작위 대기(백오프)를 섞는 식으로 상황에 맞게 풀어야 합니다.

저희 에그코드는 자체 서비스를 운영하며, 서비스마다 맞는 동시성 전략을 골라 정합성 문제가 없도록 합니다.

데드락과 라이브락 핵심 요약 카드
한 장으로 정리하는 데드락 vs 라이브락

함께 읽어보세요 — 비관적 락 — 먼저 잠그고 시작하는 방식 · 낙관적 락 — 버전으로 충돌을 잡는 원리 · 커넥션 풀, 몇 개로 설정해야 할까

에그코드는 자체 서비스를 운영하며 웹·SaaS·MVP를 만듭니다. 서비스에 맞는 동시성·락 전략을 함께 고민합니다.

동시성·데이터 정합성이 걱정된다면 문의하기

문의하기

MVP 개발, 어디서부터 시작해야 할지 모르겠다면?

무료 MVP 견적 받기
카카오톡 문의