로그가 미래에서 왔다 — 시계가 만든 다섯 사건 · 경과 시간이 음수로 찍혔다 · 퀴즈
퀴즈: 경과 시간이 음수로 찍혔다
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
CLOCK_MONOTONIC 에 대해 맞는 설명은?
- 관리자가 시각을 바꾸면 그만큼 함께 점프해 벽시계와 보조를 맞춘다
- 설정할 수 없고 시각 변경에 점프하지 않지만 주파수 조정에는 영향을 받는다
- 설정할 수 없고 어떤 조정에도 영향을 받지 않는 완전한 하드웨어 시계다
- 시스템이 잠들어 있던 시간까지 포함해 실제 경과를 그대로 센다
잠금 기한을 「지금 + 30초」 라는 벽시계 절대 시각으로 잡아 둔 코드에서, 시계가 5분 뒤로 점프하면 무슨 일이 생기나?
- 기한이 이미 지난 것으로 보여 잠금이 즉시 풀린다
- 30초짜리 잠금이 5분 30초 동안 풀리지 않는다
- 잠금이 그대로 30초 뒤에 풀린다 — 점프는 기한 계산에 영향을 주지 않는다
- 기한 비교가 예외를 일으켜 잠금 획득 자체가 실패한다
응답 시간을 벽시계 뺄셈으로 재는 서비스에서 시계를 맞추는 날 지표에 벌어지는 일은?
- 그 순간의 표본만 빠지고 나머지 지표는 평소와 같다
- 지표 라이브러리가 시계 변경을 감지해 해당 구간을 자동으로 표시해 준다
- 음수나 터무니없이 큰 값이 섞여 그날의 분위수를 믿을 수 없게 된다
- 평균은 흔들리지만 분위수는 순위 기반이라 영향을 받지 않는다
기록을 남길 때 벽시계와 단조 시계를 함께 적어 두는 것이 좋은 이유는?
- 둘의 차이를 계속 지켜보면 시계 오차를 별도 측정 없이 알 수 있기 때문이다
- 단조 시계 값이 없으면 로그를 시간순으로 정렬할 수 없기 때문이다
- 두 값이 어긋나면 로그가 위조됐다는 것을 증명할 수 있기 때문이다
- 벽시계는 사람이 읽고 단조 시계는 경과 계산이 읽는 서로 다른 용도이기 때문이다
다음 중 단조 시계 위에서 계산해야 하는 것은?
- 재시도 사이의 대기 시간과 요청 시간 제한
- 인증서의 유효 구간 판정
- 감사 로그에 남길 사건 발생 시각
- 토큰의 만료 시각 비교
코드 검토에서 경과 시간 계산의 위험을 알아보는 신호는?
- 경과 시간을 부동소수점으로 담아 반올림 오차가 쌓일 수 있게 둔 코드
- 경과 시간을 밀리초 단위 정수로 담아 큰 값에서 넘칠 수 있는 코드
- 경과 시간이 음수일 수 있다는 것을 전혀 고려하지 않은 비교
- 경과 시간을 구조체에 담지 않고 지역 변수로만 쓰는 코드