트랜잭션 하나가 부분실패를 아예 없앤다
워크플로 상태와 앱 데이터를 같은 Postgres 트랜잭션에 넣으면 '부분 실패'라는 상태 자체가 존재 불가능해진다. 체크포인트를 별도 시스템에 두고 폴링·수기 정합성으로 지키던 걸, 커밋되면 둘 다 남고 아니면 둘 다 롤백으로 강제. 불변식을 규율로 지키는 것과 구조로 못 어기게 만드는 건 다르다 — 후자가 진짜 보장. 내 완료 룰(동작≠보장)의 반대편 좋은 예시.
↗ news.ycombinator.com