Epoch 타임스탬프(Unix 시간)란 무엇이며 왜 사용되나요?
Unix 시간의 기원
Unix 시간, POSIX 시간 또는 간단히 Epoch라 불리는 타임스탬프를 이해하려면 1970년대 초 Unix 운영체제의 기원으로 돌아가야 합니다. Unix 시간은 시간을 누적 초 수로 추적하는 시스템입니다. 구체적으로 1970년 1월 1일 목요일 00:00:00 협정 세계시(UTC)인 Unix Epoch 이후 경과한 초 수를 나타냅니다.
Ken Thompson과 Dennis Ritchie가 Bell Labs에서 Unix의 첫 번째 버전을 개발할 때, 컴퓨터가 날짜와 시간을 표현하고 저장할 수 있는 간단하고 효율적인 방법이 필요했습니다. 사람이 읽을 수 있는 날짜(예: '2026년 7월 29일')는 월별 일수의 불규칙성, 윤년, 시간대, 서머타임 변환 등으로 인해 컴퓨터가 처리하기에 매우 복잡합니다. 시간을 하나의 연속적인 정수로 표현함으로써 Unix 개발자들은 쉽게 저장하고 비교하며 연산할 수 있는 보편적이고 명확한 시간 표준을 만들었습니다.
오늘날 개발자들이 Epoch 타임스탬프를 사용하는 이유
수십 년이 지난 지금도 Epoch 시간은 현대 컴퓨팅 인프라의 핵심으로 남아 있습니다. 전 세계적으로 채택된 이유는 다음과 같습니다:
- 단순성과 효율성: 32비트 또는 64비트 정수를 저장하는 것은 포맷된 날짜 문자열을 저장하는 것보다 디스크 공간과 메모리를 훨씬 적게 차지합니다. 수십억 개의 레코드가 있는 데이터베이스에서 행당 몇 바이트를 절약하면 저장 비용이 크게 절감되고 인덱스 성능이 향상됩니다.
- 시간대 독립성: Epoch 타임스탬프는 본질적으로 UTC에 고정되어 있습니다. 사용자의 물리적 위치와 상관없이 도쿄의 서버가 뉴욕의 클라이언트와 통신할 때 Epoch 정수를 전송하면 시간대 혼란을 방지할 수 있습니다. 클라이언트는 수신 시 해당 정수를 현지 시간대로 변환하기만 하면 됩니다.
- 쉬운 수학적 연산: 두 사건 사이의 시간을 계산하는 것은 한 타임스탬프에서 다른 타임스탬프를 빼는 것만큼 간단합니다. 로그 항목 사이의 경과 초 수를 알고 싶다면
timestamp2 - timestamp1로 복잡한 날짜 파싱 없이 즉시 정확한 답을 얻을 수 있습니다. - 데이터베이스 정렬: 정수 컬럼을 기준으로 레코드를 시간순으로 정렬하는 것이 텍스트 기반 날짜 문자열을 파싱하여 정렬하는 것보다 데이터베이스 엔진 처리 속도가 훨씬 빠릅니다.
윤초의 영향
Unix 시간의 기술적 세부사항 중 하나는 윤초 처리 방식입니다. 윤초는 UTC를 평균 태양시와 가깝게 유지하기 위해 가끔 적용되는 1초 조정입니다. 흥미롭게도 Unix 시간은 윤초를 고려하지 않습니다. Unix 시간 시스템에서는 모든 날을 정확히 86,400초로 취급합니다. 윤초가 발생하면 Unix 시계는 동일한 초를 두 번 반복합니다. 이러한 설계 선택은 타임스탬프가 예측 불가능해지는 것을 방지합니다.

