맥미니 한 대로 세 서비스를 매일 자동 갱신하는 법 (개요)
heymingky의 소개 페이지에는 이런 문장이 있습니다.
맥미니 한 대가 매일 정해진 시각에 데이터를 모으고 계산해 사이트를 다시 만들어 올립니다. 사람이 손대는 부분은 규칙을 설계하는 단계뿐이고, 그 뒤로는 사람 판단이 들어가지 않습니다.
짧은 문장이지만 이게 세 서비스(오늘의 ETF·오늘야구·밍슈의 분석노트)를 혼자 운영할 수 있는 이유이기도 합니다. 이 글은 그 구조를 개요 수준으로 풀어 씁니다. (구체적인 스크립트나 서버 설정은 다루지 않습니다 — 그건 보안·안정성 문제와 직결돼서 공개할 이유가 없습니다.)
왜 "자동"이 아니면 셋을 못 만든다
서비스가 하나면 사람이 매일 들여다봐도 됩니다. 셋이 되는 순간 얘기가 달라집니다. ETF 889종을 매일 다시 계산하고, KBO 경기를 매일 채점하고, 청약 공고를 매일 확인하는 일을 사람이 손으로 하면 그 자체가 일이 됩니다. 그리고 사람이 매일 손으로 하는 일은 언젠가 빠뜨리는 날이 생깁니다 — 야근한 날, 아픈 날, 그냥 깜빡한 날.
그래서 heymingky의 세 서비스는 전부 같은 방식을 씁니다. 데이터 수집 → 계산 → 화면 생성까지의 파이프라인을 코드로 만들어 두고, 정해진 시각에 자동으로 돕니다. 오늘의 ETF는 "매일 자동 갱신"이라고, 오늘야구는 "매일 12시 갱신"이라고 각 서비스 화면에 이미 적혀 있는 게 이 파이프라인이 실제로 도는 결과입니다.
사람이 하는 일과 안 하는 일
소개 페이지 문장을 그대로 가르는 기준이 있습니다 — 규칙을 설계하는 단계와 그 규칙을 매일 실행하는 단계는 완전히 다른 일이라는 것입니다.
- 사람이 하는 것: 어떤 데이터를 볼지, 어떻게 계산할지, 무엇을 기준선으로 삼을지 정하는 것. 오늘의 ETF가 "지수를 이겼는지"로 채점하기로 정한 것, 오늘야구가 "같은 경기에서 홈팀만 골랐을 때의 승률"을 기준선으로 삼기로 정한 것 — 이런 결정은 전부 사람이 미리 합니다.
- 사람이 안 하는 것: 오늘 어떤 종목이 뽑혔는지, 오늘 경기 예측이 맞았는지를 보고 화면에 올릴지 말지 고르는 것. 규칙이 한 번 정해지면 결과가 좋든 나쁘든 그대로 올라갑니다. 예측을 채점한다는 것에서 다룬 "진 결과도 그대로 싣는다"는 원칙이 가능한 이유가 여기 있습니다 —애초에 사람이 오늘 결과를 보고 올릴지 판단하는 단계 자체가 없기 때문입니다.
이게 왜 신뢰의 근거가 되는가
자동화를 강조하는 건 "편해서"가 아닙니다. 사람이 매일 결과를 보고 화면에 올릴지 판단하는 구조라면, 그 판단에 유혹이 낄 자리가 생깁니다 — 오늘따라 결과가 안 좋으니 내일 올리자, 이번 예측은 애매하니 빼자. 파이프라인이 사람 개입 없이 매일 같은 규칙으로 돌면 그 유혹이 낄 자리 자체가 없어집니다.
물론 이것도 완벽하지 않습니다. 규칙을 설계하는 단계에 사람의 판단이 들어가는 건 피할 수 없고, 그 설계가 잘못되면 자동화는 잘못된 결과를 그대로, 더 꾸준히 냅니다. 그래서 각 서비스의 '방법' 페이지에 계산 방식과 한계를 같이 적어 둔 것이고, 사주로 이름·재물운을 보는 것과, 사주로 백테스트를 하는 것의 차이에서 다룬 것처럼 자동으로 계산된 결과라고 해서 검증까지 자동으로 되는 건 아닙니다. 자동화는 정해진 작업을 반복하는 방식입니다. 실행됐다는 사실만으로 계산이 맞거나 새 결과가 사이트에 올라갔다고 보장할 수는 없습니다. 아래 실패가 그 차이를 보여 줍니다.
실제로 갱신이 멈춘 경우 — 특정 결과를 기대한 검사
2026년 9월 28일부터 루트 사이트의 빌드 로그에 같은 오류가 남았습니다. "합격 전략이 바뀜: []"였고, 빌드 실패 때문에 배포하지 않는다는 기록이 뒤따랐습니다. 사이트를 만드는 코드가 "최종 합격 전략은 배당 규칙 하나"라는 결과를 기대했던 것입니다. 실험에서 최종 합격이 없어지자 ETF 문장뿐 아니라 소식과 다른 서비스의 숫자도 함께 갱신되지 않았습니다. 정해진 시각에 작업이 시작돼도 공개 화면은 며칠 전 상태에 머물 수 있었습니다.
이 경우에는 기대한 전략이 나오는지 검사하는 대신, 원자료의 필수 항목과 판정 형식을 확인합니다. 합격이 0개면 없다고, 1개나 여러 개면 그 수와 이름을 적도록 문장을 바꿉니다. 현재 원자료는 2026-10-12 17:59에 생성됐고, 414개 설정 중 409개가 셀 단위에서 탈락했습니다. 최종 판정을 통과한 전략·시장 묶음은 없었습니다. 셀의 합격과 최종 전략 묶음의 합격은 다른 단계입니다.
자료가 비거나 판정 형식이 잘못되면 여전히 빌드를 멈춥니다. 잘못된 숫자를 올리지 않기 위한 검사와 정상적인 결과 변화는 구분해야 합니다. 운영자는 실행 로그의 성공 여부와 공개 화면의 최종 갱신 시점을 함께 확인해야 하고, 자동화가 이 확인까지 대신해 주지는 않습니다.