"live 가격은 세입자가 아니라 손님이야. 15분 머물고 나면 durable close 가 제 의자를 되찾아 가."
live 는 overlay 지 교체가 아니야
스트리밍이 켜져 있으면 live tick 이 가장 따끈한 가격을 물어다 줘. 근데 Keep 는 그 live 값이 진실 자체가 되게 두질 않아. durable close 위에 잠깐 덧칠한 overlay 일 뿐이고, 만료 시간이 있어. LIVE_TTL_SECONDS, 그러니까 15분이 지나면 live tick 은 만료되고 '현재 값' 의 소유권은 저장된 completed close 로 돌아가. durable close 가 이 집의 주인이고, live tick 은 타이머를 든 손님인 거지.
만료가 왜 그렇게 중요한데
만료가 없다고 상상해 봐. Keep 를 열고 스트리밍이 한참 돌다가, 노트북이 잠들거나 네트워크가 끊기거나 네가 자리를 떠. 마지막 live tick 은 이제 화면에 얼어붙어 있어. 한 시간 전, 어쩌면 어제의 가격이, 방금 온 값과 똑같이 당당한 얼굴로 앉아 있는 거야. 이 얼어붙은 tick 이 낡은 데이터 중에서도 최악이야. live 처럼 보이는데 live 가 아니거든. TTL 이 이 실패 모드를 끝장내. 새 tick 없이 15분이 지나면 Keep 는 옛 tick 을 그만 믿고 durable close 로 내려가. 적어도 그 값은 제 날짜를 정직하게 달고 있으니까. 정체를 아는 종가가 거짓말하는 tick 보다 나아.
레이어를 명시적으로 쌓았어
어느 종목이든 Keep 의 현재 값은 작은 스택이야. 바닥엔 durable completed close 가 깔려 있어. 항상 존재하고 항상 날짜가 붙어 있지. 그 위에 live tick 이 신선한 동안에만 덧칠돼. 읽기는 위에서 아래로 내려가되 TTL 을 존중해. 유효 시간 안의 live tick 은 이기고, 만료된 tick 은 애초에 없었던 것처럼 무시돼. 이 구조 덕분에 다음 레슨의 'pause' 가 안전해지는 거야. pause 는 새 tick 을 끊을 뿐이고, 이미 있던 overlay 는 알아서 나이 들어 물러나면서 정직한 durable close 한테 자리를 넘겨줘.