들어가며PG사 결제 API를 연동하면서 가장 먼저 마주친 질문은 이거였다."결제 요청을 보냈는데 응답이 안 오면, 실패로 처리하면 되지 않나?"직관적으로 맞는 것 같았다. 타임아웃이 나면 실패인 거고, 실패면 롤백하면 된다고 생각했다.틀렸다.타임아웃은 실패가 아니다. "모른다"는 뜻이다. 이 한 줄을 이해하는 데 설계 전체가 바뀌었고, 그 과정에서 내가 세운 원칙이 하나 있다.응답을 받았으면 결과를 안다. 못 받았으면 모른다. 모르면 행동하지 말고, 알아낸 다음에 행동한다.이 글은 이 원칙을 발견하기까지의 과정이다.1. 왜 타임아웃이 실패가 아닌가DB와 PG는 근본적으로 다르다. DB 트랜잭션은 하나의 프로세스 안에서 ACID를 보장하지만, PG 연동은 네트워크를 사이에 둔 분산 트랜잭션(distribu..