dev.to

Your Metric Is Not Your State

메트릭은 시스템 상태 그 자체가 아닙니다

발효 중인 포도즙을 굴절계로 측정한 경험을 바탕으로, 메트릭과 실제 시스템 상태를 구분해야 한다고 설명합니다. 원시 관측값과 해석을 따로 저장하고, 측정의 맥락과 이력을 남겨야 메트릭이 더는 상태를 제대로 나타내지 못하는 순간을 알아챌 수 있습니다.

AI 요약

발효 중인 포도즙을 굴절계(refractometer)로 측정하면 설탕이 줄어도 알코올이 빛을 굴절시켜 실제보다 당도가 높게 나옵니다. 기기는 고장 난 게 아닙니다. 신선한 과즙을 측정하도록 보정된 기기를 발효 중인 액체에 그대로 쓰면서, 숫자가 나타내는 의미가 달라진 것입니다. 저자는 이 경험을 소프트웨어 관측성(observability)의 문제와 연결합니다.

측정값과 상태를 구분해야 합니다

저자는 블랙베리 와인, 배 와인, 파이어위드 꿀술을 각각 1갤런씩 담가 발효를 추적합니다. 소량 발효에서는 시료를 자주 뽑는 일이 와인의 손실이자 산소 유입이므로, 시료를 적게 쓰는 굴절계를 선택했습니다. 블랙베리 발효 중 기록한 원시 브릭스(Brix) 값은 8월 29일 20.7에서 9월 1일 8.3까지 내려갔습니다. 하지만 발효가 진행된 뒤에는 설탕과 알코올이 함께 굴절률에 영향을 줍니다. 원시값만 보면 실제보다 발효가 덜 진행된 것처럼 보입니다.

보정값을 구하려면 효모를 넣기 전 최초 측정값이 필요합니다. 글의 표에서 8월 31일 원시값 13.2는 보정 후 8.1이 되고, 9월 1일 원시값 8.3은 0.1이 됩니다. 값 하나만으로는 발효가 어디까지 왔는지 알기 어렵고, 출발점과 보정 방식이 함께 있어야 해석할 수 있습니다.

비중계(hydrometer)도 설탕을 직접 측정하지 않습니다. 액체의 밀도를 재며, 발효가 진행되면 물보다 밀도가 낮은 알코올이 수치를 끌어내립니다. 발효가 끝난 드라이 와인의 비중이 1.000 아래로 내려가기도 합니다. 굴절계는 빛의 굴절을, 비중계는 액체의 밀도를 측정할 뿐입니다. 남은 설탕의 양이나 효모가 계속 활동하는지, 와인이 완성됐는지는 측정값을 바탕으로 추론해야 합니다.

평평한 그래프도 여러 상태를 뜻합니다

며칠 동안 측정값이 그대로면 발효가 끝났다고 판단하기 쉽지만, 발효가 멈춘 경우에도 같은 패턴이 나타납니다. 특히 꿀술은 자연적인 완충 능력이 낮아 발효 중 pH가 떨어질 수 있고, 효모가 당을 다 소모하기 전에 활동을 멈추기도 합니다. 측정값의 변화가 없다는 사실만으로 완료와 정체를 구별할 수 없습니다. 그래프가 평평해진 시점, pH 변화, 예상한 발효 양상 같은 다른 증거를 함께 살펴야 합니다.

저자는 이를 CPU 사용률, HTTP 200 응답, 상태 확인(health check), 모델 신뢰도(confidence)와 비교합니다. CPU 사용률이 낮아도 서비스가 교착 상태에 빠졌을 수 있고, 높아도 의도한 작업을 처리 중일 수 있습니다. HTTP 200은 서버가 응답했다는 뜻이지 응답 내용이 맞다는 뜻은 아닙니다. 상태 확인 엔드포인트가 응답해도 서비스 전체가 정상이라고 단정할 수 없습니다. 모델 신뢰도 역시 모델이 출력한 수치이지 진실을 보증하는 값은 아닙니다.

메트릭은 특정 조건에서 시스템 상태를 대신 나타내는 지표로 쓰입니다. 시스템이 바뀌거나 새로운 장애 유형이 생기면 그 지표가 더는 상태를 제대로 대변하지 못할 수 있습니다. 그래도 대시보드는 같은 숫자를 이전과 똑같이 보여줍니다. 오류율이 안정적이어도 서비스가 건강한 것일 수 있고, 한 시간 전부터 요청이 들어오지 않은 것일 수도 있습니다. 실패는 메트릭을 수집하는 데 있지 않습니다. 메트릭을 상태 그 자체로 취급하는 데 있습니다.

관측값의 이력과 측정 비용을 기록합니다

저자는 관측값과 해석값을 나란히 보관합니다. 원시값을 남겨 두면 보정식이 잘못됐거나 더 나은 공식이 발견됐을 때 다시 계산할 수 있습니다. 보정값만 저장하면 그 값의 근거는 사라집니다. 어떤 기기로 측정했는지, 어떤 조건과 보정 가정을 적용했는지, 비교 기준이 무엇인지, 당시 시스템 상태를 어떻게 판단했는지 기록해야 나중에도 값을 해석할 수 있습니다. 상태는 여러 관측값에서 도출하는 주장으로 다루고, 그 근거를 추적할 수 있어야 합니다.

측정 행위가 시스템 자체를 바꿀 수도 있습니다. 비중계는 더 많은 시료가 필요하고, 소량 발효에서는 시료 손실과 산소 유입이 부담이 됩니다. 소프트웨어에서도 추적(trace)이 오버헤드를 만들고, 프로브가 지연 시간을 늘리며, 샘플링이 실행 타이밍을 바꿀 수 있습니다. 얼마나 자주 측정할지는 비용과 관측 효과를 고려해 정해야 합니다. 저자는 블랙베리 와인은 과실 뚜껑을 하루 두 번 눌러 주는 과정에 맞춰 두 번 측정하고, 배 와인과 꿀술은 며칠 간격으로 측정합니다.

글의 제안은 다섯 가지로 정리됩니다. 관측한 사실과 결론을 분리하고, 원시 측정값을 보존하며, 값의 의미를 정하는 조건과 기준선을 기록합니다. 시스템 상태는 여러 증거에서 도출하고, 기존 메트릭이 더는 유효한 대리 지표가 아닌 순간을 살펴야 합니다. 숫자는 측정 이력 없이 의미를 유지하지 못합니다.

dev.to 반응

  • @indiainfranotes — 잠깐만요. 초록색 정산 타일은 서명된 홉 팁(signed hop tip)이 아닙니다. 한 가지 묻겠습니다. 차지백 주간이 시작되면 공급업체 UI가 바뀐 뒤에도 누구나 조회 가능한 팁을 가져올 수 있나요, 아니면 대시보드의 봉인 표시만 또 보게 되나요? 영수증이 봉인보다 낫습니다. marker0929h2128-dt
    • @kenwalger — 말씀하신 구분을 이해한 것 같습니다. 초록색 정산 상태는 해석된 상태이고, 오래 보존하며 조회할 수 있는 영수증은 그 상태를 뒷받침하는 증거를 남긴다는 뜻인가요? 그렇다면 관측값과 결론을 분리하자는 제 주장과 잘 맞습니다. 다만 말씀하신 시스템에서 ‘서명된 홉 팁’이나 ‘대시보드 봉인’이 무엇을 뜻하는지는 잘 모르겠습니다. 설명해 주시겠어요?
  • @kyisaiah47 — 오류율이 조용한 경우, 평평한 선을 정상 상태의 증거로 보기 전에 요청량도 함께 확인하시겠어요?
  • @hannune — 저도 엔터티 해석(entity resolution)에서 비슷한 일을 겪었습니다. 신중하게 조정한 유사도 점수가 데이터 공급업체를 바꾼 뒤에도 확신에 찬 값을 계속 냈습니다. 중복 데이터에 관해 하위 분석가가 문제를 제기하기 전까지 병합 품질은 몇 주 동안 조용히 나빠지고 있었습니다. 로그를 되짚어 보니 메트릭은 전부 멀쩡해 보였습니다. 점수가 틀린 건 아니었습니다. 제가 실제로 보장하려던 것의 대리 지표 역할을 더는 하지 못했을 뿐입니다.

원문: dev.to / 번역·요약: Trawling