가장 위험한 버그는 크래시를 일으키지 않는 버그다
발행: (2026년 1월 18일 오전 07:14 GMT+9)
1 min read
원문: Dev.to
Source: Dev.to

문제
앱을 크래시시키는 버그는 눈에 쉽게 띕니다.
위험한 버그는 조용히 계속 실행됩니다… 테스트, 타입, 리뷰를 통과하지만 여전히 로직을 손상시킵니다.
예시
order.status = "paid";
order.invoiceId = null;
크래시도 없고 오류도 없습니다. 완전히 깨진 상태입니다.
런타임 불변성을 이용한 해결책
invariant("order.status === 'paid' -> order.invoiceId != null");
논리가 깨지는 즉시—즉시—실패합니다. 며칠 뒤가 아니라, 프로덕션에서도 바로 실패합니다.