본문 바로가기
C.W.K.
Stream
Lesson 05 of 05 · published

말다툼 없이 적용되는 규칙

~11 min · policy, data-sources, governance, provenance

Level 0원석
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"게이지는 아래 자기 행에 적힌 키 없는 공개 소스를 쓸 수 있다. 새 키나 로그인이나 약관 위반 스크래핑이 필요한 건 명단에 못 들어온다."

안 맞기 시작한 규칙을 다시 쓰기

제품은 단단한 예산으로 시작했어. 새 API 키 없음. 제공자 셋, 그게 할당량 전부. 좋은 규칙이야. 키 하나하나가 발급하고 교체하고 지키다가 결국 유출되는 자격 증명이거든.

그러다 게이지 스펙이 사실 하나에 부딪혔어. 지수 수준 가치 데이터가 그 셋으로는 온전히 안 닿고, 그중 일부는 키 없는 공개 통계 소스에 살아. 발표된 CSV, 일간 공표 수치. 거시 제공자 자신이랑 같은 부류.

스펙이 그다음에 한 게 재밌는 부분이야. 조용히 예외를 두지도 않았고, 원래 규칙을 붙들고 더 나쁜 제품을 내지도 않았어. 규칙을 다시 썼어. 제공자 예산을 정직하게 다시 진술한다고 대놓고 제목 붙인 절에서.

새 판이 더 센 이유

새 규칙은 흐릿한 판에 없던 성질 넷을 갖고 있고, 하나하나가 일을 해.

진짜 걱정에 이름을 대. 걱정은 애초에 "외부 데이터" 가 아니라 자격 증명이랑 접근 계약이었어. 키 없는 공개 데이터셋은 둘 다 없으니까 애초에 그 규칙이 막으려던 게 아니었지.

확인 가능한 선을 그어. 이건 키가 필요해, 로그인이 필요해, 관문 넘는 스크래핑이 필요해? 예/아니오 질문 셋. 어떤 소스가 "충분히 공식적인가" 를 두고 누가 판정을 내릴 필요가 없어.

전역이 아니라 게이지별이야. 허용된 소스는 자기 게이지 행에 적혀. 소스가 제품 전체에 일괄 승인되는 게 아니라, 그걸 정당화한 그 측정에 대해 승인되는 거야.

출처 기록을 여전히 의무로 둬. 저장되는 모든 값이 어쨌든 자기 출처 문자열을 실어. 어떤 소스가 허용되는지를 푼다고 어떤 소스가 각 숫자를 만들었는지 기록하는 요구까지 풀리진 않아.

규칙이 애초에 막으려던 게 아닌 걸 막고 있으면, 예외를 파지 말고 다시 써. 예외는 틀린 규칙을 그대로 세워둔 채 특수 케이스를 하나 더해. 그러면 다음 비슷한 상황에서 그 논쟁이 통째로 다시 열려. 다시 쓰기는 규칙을 뿌리에서 고치고, 다시 써야 했다는 사실 자체가 기록할 값어치가 있어. 안 그러면 원래 문구가 네 앞에 인용될 테니까.

닫힌 채로 남은 관문

이게 사후 합리화가 아니라 진짜 규칙이라는 제일 센 증거는 뭔가를 거절했다는 거야. 한 시장 섹터 집계를 조사할 때 한 경로는 세션이 필요했고 하나는 봇 차단벽 뒤에 있었고, 둘 다 이 스펙 자기 규칙을 인용해서 닫혔어. 관문 넘는 스크래핑 없음.

들여보내기만 하는 완화는 규칙이 아니라 나중에 발견된 선호야. 이건 한 방향으로 풀고 다른 방향으로 붙들었고, 기록이 둘 다 보여줘.

허용하는 시점에 소스마다 회복 자세를 정해줘. 키 없는 소스는 전부 같은 조건으로 들어와. 마지막 정상값을 캐시하고, 신선도 표시를 띄우고, 절대 서빙의 단단한 의존이 되지 않기. 뒤에 계약이 없는 공개 데이터셋은 언젠가 옮겨가거나 이름이 바뀌거나 조용해져. 허용 시점에 그걸 대비하는 게 그런 아침에 발견하는 것보다 훨씬 싸.

Code

규칙, 그리고 그걸 적용하는 질문 셋·text
ADMISSIBLE:
  keyless public statistical sources, listed per gauge
  (published CSV / XLS, published daily figures --
   the same class of thing the macro provider itself is)

NOT ADMISSIBLE:
  needs a NEW KEY        -> out
  needs a LOGIN          -> out
  needs SCRAPING past a
    terms-of-service gate-> out

UNCHANGED BY THE LOOSENING:
  every stored value carries its source string
  every admitted source gets a resilience posture:
    cache last-good + staleness chip,
    never a hard dependency for serving

APPLIED IN PRACTICE -- three sector paths, one market:
  official endpoint   -> session-gated       -> REFUSED
  archive route       -> bot wall            -> REFUSED
  local sector ETFs   -> no fundamentals     -> unavailable

# A rule that has never refused anything is not a rule.

External links

Exercise

팀에서 사람들이 자주 우회하는 규칙을 하나 찾아봐. 그게 뭐라고 적혀 있는지 쓰고, 실제로 뭘 막으려던 건지 써. 둘이 다르면 다시 쓰기를 초안 잡아. 누구든 위로 올리지 않고 적용할 수 있는 확인 가능한 질문 셋도 같이 넣고. 그다음 다시 쓴 규칙이 여전히 뭔가를 거절할 경우를 찾아봐. 못 찾으면 규칙이 아니라 선호를 쓴 거야.
Hint
우회당하는 규칙은 보통 대리 지표야. '유지보수 안 되는 코드 금지' 대신 '새 의존성 금지', '새 온콜 표면 금지' 대신 '새 서비스 금지', '관리할 자격 증명 추가 금지' 대신 '새 키 금지'. 진짜 걱정에 이름을 대면 거의 항상 더 허용적이면서 동시에 더 정밀한 규칙이 나와.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.