개발 Dev/ko) 동기화 Synchronization

[통신/동기화] 1. 시간을 맞추는 방법과 원리. 시간 동기화 Time Synchronization :: 읽다 보면 알게 되는 데이터 통신과 동기화 이야기

BoBooBoo 2024. 3. 23. 18:07
반응형

이번 글을 시작으로, 데이터 통신에서의 동기화 Synchronization에 대해 읽다 보면 자연스럽게 알게 되는 것을 목표로 글을 작성해보려고 합니다. 언제까지 지속할 수 있을지는 모르겠지만 최대한 꾸준히 내용을 공유하려고 해요. 아마 이 개발자라는 직업을 계속 이어가는 한, 공부하려는 의지만 있다면 계속 작성하겠죠... 

 

첫 번째 이야기를 어떻게 시작할까 고민을 많이 했습니다. 

이 글을 클릭했다는 건 이미 관련 지식을 조금은 알고 있다는 전제가 있다고 보고...

 

자세하게 들어가기 전에, 시간 동기화에 대해 간단하게 알아보고 갑시다.

 

시간 동기화 Time Synchronization 란?

시계를 가지고 있는 두 사람 A, B가 있다고 합시다. A와 B가 서로 다른 시계를 가지고 있다면, 당연히 시간이 다를 수 있겠죠. 게다가 B는 오랜만에 장롱에서 시계를 꺼내 자신의 시계가 정확한 시간을 표시하는지 의심하고 있습니다.

 

B : 내 시계의 시간이 맞는지 모르겠어. 다시 맞춰야될 것 같아. A야, 지금 몇 시야?
A : 내 시계는 지금 3시야!
B : 고마워. 3시로 맞출게.

 

위 대화는 B 시계의 시간을 맞추는 아주 간단한 과정입니다. 

정확도가 1~2초 정도의 차이는 있을 수 있겠지만 일상적인 삶에서는 이 정도로도 충분할 겁니다.

 

조금 전문적인 말로, 이 과정은 sub-second의 정확도 (Accuracy)를 가진 시간 동기화라고 할 수 있습니다.

그런데, 가만히 보니 궁금한 것들이 생깁니다.

 

 

Q. 그나저나 A가 가진 시계가 진짜 정확한 시계가 맞을까?

  • B는 A가 가진 시계가 정확한 시계라는 것을 신뢰할 수 있을까요?
  • 그나저나 A는 도대체 어떤 시계를 보고 시간을 맞췄을까요?

 

이런 문제를 해결하기 위해서 협정 세계시 (UTC: Coordinated Universal Time)라고 해서 국제 표준으로 쓰이는 시각이 존재합니다. 모든 시간을 맞추는 장비들은 이 시간을 따르게 됩니다. 그러니까 A가 세계시에 맞추고 있다는 것만 알 수 있으면, B도 A의 시간을 신뢰할 수 있다는 것입니다.

 

실제로, 과학자와 엔지니어들의 노력 끝에, 우리는 가장 정확하다고 믿는 시계, 시간을 측정하는 시계가 이미 존재합니다. 

알게 모르게 우리 모두는 이 시계를 기준으로 시간을 맞추고 있습니다.

 

일단 이 정도만 알고 넘어갑시다.

 

 

Q. B의 시계를 더 정확하게 시간을 맞출 수는 없을까?

시간을 맞추는 과정은 근본적으로 오차를 낼 수밖에 없는 이유가 있습니다.

그중 한 가지를 아래 대화를 통해 알아봅시다.

 

B : 내 시계의 시간이 맞는지 모르겠어. 다시 맞춰야 될 것 같아. A야, 지금 몇 시야?
A : 내 시계는 지금 3시야!
(1) A가 자신의 시계를 보고
(2) 시간을 인지하고
(3) B에게 말해주면
(4) B가 A의 시간을 듣게 된다.

B : 고마워. 3시로 맞출게.
--- B는 자신의 시간을 맞춘다

 

 

A가 시간을 확인하고 나서 B에서 알려주는 데는 필연적으로 1초 이상의 시간이 필요할 겁니다. B가 들은 "3시"라는 시각은 사실 "3시 1초"를 말하는 것이죠. 이로인해 다른 모든 과정이 없다고 가정하더라도, 결국 B는 A보다 1초 느린 시계를 설정하게 됩니다.

 

더 정확한 시간을 맞추기 위해서는 이 1초를 없애는 과정이 필요할겁니다.

 

  • 이 1초를 지연 시간 (Delay)라고 합니다.
  • Delay를 줄이는 방법을 지연 보상 (Delay Compensation)이라고 합니다.

 

 

Q. B의 시계를 한 번만 조정하면 앞으로도 계속 정확할까?

우리의 경험에 의하면 당연히 아니겠죠?

"내 시계는 한 달 정도 지나면 1초가 빨라져" 같은 이야기를 들어 본 경험이 있을 겁니다.

왜 이런 일이 발생할까요...?

 

각각의 시계의 시간이 1초 지나가는 데에는 '똑딱' 하는 만큼의 시간이 필요하다고 가정해 봅시다.

A 시계의 똑딱과 B 시계의 똑닥은 완전히 같을까요? 아니겠죠. A의 똑딱이 B의 똑딱 보다 조금 빠르거나 느릴 겁니다. 그렇다면 한날한시에 같은 시간을 맞추더라도 둘의 시간은 점점 차이가 나게 될 겁니다.

 

그럼 매초마다 계속 맞추면 되잖아!

맞는 말이긴 한데, 평생 시계만 맞출 수는 없으니까 비현실적인 방법입니다. 

 

결국 시간을 정확하게 맞추려면,

  1. 한날한시에 같은 시간을 맞추고
  2. '똑딱'의 주기까지 맞춰야

한다는 말이 됩니다.

 

따라서 A는 B에게 이렇게 알려줘야 합니다.

 

내 시계는 지금 3시를 가리키고 있고
내 1초는 '똑--딱--' 이야.

 

  • 시계의 1초, '똑딱'을 주파수 (Frequency)라고 합니다.
  • 주파수를 맞추는 작업을 주파수 동기화 (Frequency Synchronization)라고 합니다.

 

 

후... 이제야 적당히 쓸만한 시계를 맞출 수 있게 되었습니다.


정리

이 글에서는 앞으로 자주 언급할 단어들에 대해 아주 간단하게 살펴봤습니다. 

  • 시간 동기화 (Time Synchronization)
  • 1초 이내의 정확도 (Sub-second Accuracy)
  • 협정 세계시 (UTC: Coordinated Universal Time)
  • 지연 시간 (Delay)
  • 지연 보상 (Delay Compensation)
  • 주파수 (Frequency)
  • 주파수 동기화 (Frequency Synchronization)

 

시계 하나 맞추는데 뭔 이런 복잡한 이야기를 하느냐...라고 할 수 있는데, 사실 아직 시작도 안 했습니다.

이런 복잡한 이야기를 통해 시계를 맞추는 것이 얼마나 복잡한 프로세스인지 깨닫게 될 겁니다.

 

이제 진짜 하나씩 하나씩 들어가 보도록 합시다.

 

끝.

 

[통신/동기화] 1. 시간을 맞추는 방법과 원리. 시간 동기화 Time Synchronization :: 읽다 보면 알게 되는 데이터 통신과 동기화 이야기 

반응형