개발 로그: 시스템의 정직성

진실을 말하는 시스템을 구축하십시오.

시스템의 가치는 그 신호(signal)의 품질에 달려 있습니다. 쿼리가 낭비를 숨기고, 상태 확인(health check)이 거짓을 말하거나, 도구가 작업을 중복 수행한다면, 그 시스템은 정직하지 않은 것입니다.

오늘은 네 가지 서로 다른 기술적 주제를 다루며 시간을 보냈습니다. 각 주제는 '시스템을 정직하게 만들기'라는 하나의 테마를 따릅니다.

  1. 데이터베이스 성능 사용하지 않는 데이터를 가져오는 것을 멈추십시오.
  • 개발 환경에서 N+1 탐지기를 사용하십시오. 이는 숨겨진 지연 로딩(lazy-load)을 명확한 작업 목록으로 바꿔줍니다.
  • 사용하지 않는 즉시 로딩(eager load)을 제거하십시오. 뷰에서 특정 컬럼을 사용하지 않는다면, 가져오지 마십시오.
  • 요청당 상수를 메모이제이션(memoize)하십시오. 한 사이클 내에서 동일한 값을 여러 번 다시 계산하지 마십시오.
  • 대시보드 쿼리를 그룹화하십시오. 20개의 작은 count 호출을 하나의 그룹화된 쿼리로 대체하십시오.
  1. 진정한 상태 확인(Real Health Checks) 설정(config)의 존재 여부만 확인하는 것은 상태 확인이 아닙니다. 그것은 설정 확인입니다.
  • 진정한 상태 확인은 도달 가능성(reachability)을 증명해야 합니다.
  • 대상 호스트와 포트에 소켓을 엽니다.
  • 계약(contract)이나 인터페이스를 사용하여 TCP, HTTP 또는 TLS 프로브(probe)를 교체할 수 있도록 하십시오.
  • 각 프로브를 개별 연결에서 실행하십시오. 하나의 느린 서비스가 전체 모니터링 도구를 멈추게 해서는 안 됩니다.
  1. 더 안전한 AI 도구 (MCP) AI 에이전트에게 시스템 접근 권한을 부여할 때는 에이전트가 실수를 할 수 있다고 가정해야 합니다.
  • 멱등성 키(idempotency keys)를 사용하십시오. 에이전트가 요청을 재시도할 경우, 서버는 중복 데이터를 생성하는 대신 동일한 결과를 반환해야 합니다.
  • 데이터가 나가는 경로에서 개인정보를 제거(scrub)하십시오. 응답 경로를 공개 경계(public boundary)로 취급하십시오.
  • 타입이 지정된 에러 코드를 사용하십시오. 가공되지 않은 문자열(raw strings)을 보내지 마십시오. 에이전트가 올바르게 동작하려면 "not_found"와 같은 구조화된 코드가 필요합니다.
  1. ID 및 비밀번호 재설정 여러 시스템을 건드릴 때는 순서가 중요합니다.
  • 비밀번호 재설정이 여러 디렉토리에 영향을 미친다면, 하나의 신뢰할 수 있는 원천(source of truth)을 선택하십시오.
  • 권한이 있는(authoritative) 디렉토리에 먼저 기록하십시오.
  • 실행 순서를 문서화하십시오. "내가 테스트했을 때는 잘 됐다"는 말이 장애 발생 시 성공을 보장해주지는 않습니다.

목표는 화려한 기능을 만드는 것이 아닙니다. 목표는 당신이 보고 있지 않을 때도 신뢰할 수 있는 시스템을 구축하는 것입니다.

Source: https://dev.to/nasrulhazim/dev-log-2026-06-23-query-cleanups-real-health-checks-safer-mcp-tools-and-password-reset-12d0