← 빌드 일지
빌드 로그2026-09-23·3분 읽기

라이브 시스템 화면을 만들며 정한 두 원칙: 상태의 출처는 하나, 유휴 비용은 0

노트북 한 대에서 실제로 도는 것들을 실시간으로 보여주는 상태 화면과 대화창을 만들면서, 겉모습보다 먼저 정한 두 가지가 있었다.

3줄 요약

  • 무슨 작업: 노트북 한 대에서 지금 돌아가는 것들을 녹화가 아니라 실시간으로 보여주는 상태 화면과, 거기에 말을 걸 수 있는 대화창을 만들었다.
  • 왜 중요: 화면은 예쁘게 만들면 끝이 아니다. 값이 두 군데서 갈리지 않고 아무도 안 볼 때 비용을 흘리지 않아야 계속 켜 둘 수 있다.
  • 빌더에게의 의미: 대시보드의 진짜 설계 결정은 색과 배치가 아니라 "상태의 출처를 어디에 둘 것인가"와 "아무도 안 볼 때 얼마가 드는가"다.

상태 값은 두 벌 만들지 않는다

살아 있는 화면에서 가장 먼저 정한 규칙은 같은 값을 두 곳에서 만들지 않는 것이다.

이 화면은 녹화가 아니라 실제로 도는 것들을 그린다. 노드 200여 개가 흩어졌다 하나로 뭉치는 짧은 도입 장면이 지나면, 에이전트 열 명이 1초에서 3초 사이 무작위 간격으로 켜지고, 켜진 애가 중심부로 알갱이를 올려보내고 서로 일거리를 넘긴다. 이 움직임은 전부 브라우저와 로컬 프로그램이 그리는 것이라 계속 돌아도 비용이 들지 않는다.

핵심은 숫자다. 상단 지표는 이미 다른 대시보드가 쓰고 있는 상태 값을 그대로 읽고, 점검 목록은 헬스체크가 따로 찍어 두는 상태 값을 그대로 읽는다. 화면은 자기 숫자를 새로 계산하지 않는다. 만약 화면이 제 값을 따로 셈했다면 두 개의 진실이 생기고, 프로젝트 남은 시간 내내 어느 쪽이 맞는지 쫓느라 다 썼을 것이다. 값의 집을 하나로 두면 갈라질 일이 없다.

대화창의 답은 맥락을 쥔 쪽이 먼저 잡는다

대화창에 글을 쓰면 답은 두 갈래로 흐르고, 갈림의 기준은 "지금 맥락을 쥔 세션이 살아 있느냐"다.

누가 창에 질문을 쓰면 그 글은 노트북 안의 작은 서버로 간다. 작업 중인 세션이 화면을 보고 있으면 그 세션이 이미 들고 있는 맥락으로 답한다. 세션이 없으면 혼자 도는 두뇌가 답한다. 세션이 살아 있는지 판단하는 신호는 세션이 몇 초마다 새로 찍는 심장박동 파일이다. 이 파일이 1분 반 넘게 갱신되지 않으면 자동으로 혼자 도는 쪽으로 넘어간다. 손으로 바꿀 것이 없다.

세션이 답하는 쪽이 나은 이유는 단순하다. 이미 맥락을 쥐고 있으니 그 맥락을 다시 복사할 필요도, 두 번째 비용을 낼 필요도 없다. 지표에 적용한 하나의 출처 원칙을 맥락에도 똑같이 적용한 것이다.

유휴 상태에서 새던 두 곳을 막았다

켜 두기만 해도 돈이 새던 지점이 두 곳 있었고, 둘 다 "말을 안 걸면 0"이 되도록 고쳤다.

  • 첫째, 부팅할 때마다 대화 두뇌를 미리 데워 놨다. 아무도 말을 안 걸어도 매번 얼마씩 태우고 있었다. 첫 질문이 실제로 올 때 그제야 띄우도록 게으르게 바꿨다.
  • 둘째, 대화가 끝없이 쌓였다. 질문마다 앞 대화 전체를 다시 실어 보내니 길어질수록 비용이 계속 불었다. 대화 횟수가 일정 선을 넘거나 한동안 아무도 안 물으면 두뇌를 버리고 새로 띄우게 했다.

여기에 작은 함정도 하나 있었다. 콘솔 없이 뜨는 프로세스는 표준 출력이 없어서 첫 출력에서 그대로 죽는다. 출력을 로그 파일로 돌려서 살렸다. 결과적으로 이제 말을 안 걸면 비용은 0이다. 화면 자체는 로컬이라 애초에 공짜고, 비용은 사람이 실제로 물을 때만 생긴다.

오늘 배운 것: 확정한 것에는 되돌릴 지점을 같이 만든다

하루를 관통한 판단은 살아 있는 화면의 좋고 나쁨이 겉모습이 아니라 두 질문에서 갈린다는 것이다.

  • 상태의 출처는 하나여야 한다. 지표든 맥락이든 두 곳에서 만들면 언젠가 갈라지고, 어느 쪽이 맞는지 쫓는 데 시간을 다 쓴다.
  • 유휴 비용은 0이어야 한다. 아무도 안 볼 때 조용히 새는 비용은 눈에 안 띄어서 가장 오래 방치된다.

화면을 본 형이 "이대로 잠궈"라고 한 뒤로는 배치와 색을 건드리지 않고 확정본을 따로 복사해 뒀다. 망가지면 다시 만드는 게 아니라 그 사본에서 되돌린다. 다 됐다고 본 것을 괜히 다시 손대다 망치는 게 흔한 실패라, 확정에는 되돌릴 지점을 함께 둔다.

솔직히 이 프로젝트의 어려운 부분은 화면을 예쁘게 그리는 게 아니었다. 값을 두 벌 만들지 않는 것, 그리고 아무도 안 볼 때 비용을 0으로 만드는 것이었다. 화면이 실제로 도는 걸 눈으로 보고, 말을 안 걸 때 비용이 0인 걸 확인한 게 영수증이다. Receipts not promises.

빌드 일지 구독

1인 빌더의 매일 작업 일지 — 새로 만든 것, 깨진 것, 배운 것.

이메일만 넣으면 끝. 매주 1–2회 빌드 일지만 보냅니다. 광고 없음, 언제든 해지.

Wildeconforce

매일 만들고, 매일 분석하고, 매일 기록합니다.
© 2026 wildeconforce · build-in-public

이 사이트는 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.