해피 패스를 넘어서는 엔지니어링: 시간
시간은 프로그램에서 가장 익숙한 의존성처럼 보인다. now()를 호출하고 두 시각을 비교하면 예약이 만료됐는지, 세션이 유효한지, 재시도할 때가 됐는지를 알 수 있다고 생각하기 쉽다. 그러나 운영 환경에서는 머신의 시계가 서로 다르고, 시스템 시각이 보정으로 앞뒤로 움직이며, 스케줄러가 늦거나 중복 실행된다. 시간은 단순한 값이 아니라 설계해야 할 경계다. 3줄 핵심 정리 시간의 종류를 나눠야 한다: 경과 시간은 monotonic clock, 사건 기록은 wall-clock, 경쟁 순서는 버전·시퀀스, 사용자 업무 규칙은 시간대와 달력으로 다룬다. 만료 시각은 판결문이 아니다: clock skew와 늦은 worker 때문에 timestamp 비교만으로 예약·세션의 상태를 바꾸면 경쟁 조건이 발생한다. 경계 조건을 명시한다: 늦은 작업, 중복 실행, 자정·서머타임·월말 같은 상황을 테스트하고 재조정·관찰 가능성까지 설계한다. 원문: Beyond Happy Path Engineering: Time ...