동시성 문제를 공부하다 보면 race condition 다음으로 자주 만나는 개념이 데드락입니다.데드락은 단순히 프로그램이 느려지는 문제가 아니라, 여러 작업이 서로를 기다리다가 아무도 앞으로 나아가지 못하는 상태입니다.운영체제, 멀티스레드 프로그래밍, DB 트랜잭션, 서버 장애 분석에서 모두 등장하는 개념이라 면접에서도 자주 묻습니다. 데드락은 자원을 가진 작업들이 서로 다른 자원을 기다리면서 무한 대기 상태에 빠지는 문제입니다. 이번 글에서는 데드락이 발생하는 조건, 실제 코드와 DB 상황에서 어떻게 나타나는지, 실무에서는 어떻게 예방하고 추적하는지 정리해보겠습니다. 1. 데드락은 무엇인가?데드락은 여러 실행 주체가 서로 자원을 기다리면서 더 이상 진행하지 못하는 상태입니다.여기서 실행 주체는 프로세..