replace(tzinfo=None)이 만든 무증상 500 에러: timezone aware/naive 혼용의 함정

코드 마이그레이션 후 특정 엔드포인트에서 간헐적 500 에러가 발생했다. 원인은 마이그레이션 중 일부 코드가 timezone-aware datetime을 naive로 변환해서 빼려고 했던 것. TypeError 한 줄이 모니터링을 통과한 이유까지 정리했다.

September 9, 2026 · 3 분

KIS API가 '체결됐다'고 해도 믿지 마라: phantom-fill과 KIS-truth 재검증

매도 주문 API가 성공 응답을 반환했다. 그런데 실제 체결이 되지 않았고, 시스템은 이미 체결로 기록했다. KIS API 응답과 실제 체결 사이의 간극, 그리고 이를 방어하는 KIS-truth 재검증 패턴을 정리했다.

September 2, 2026 · 3 분

연결 타임아웃 60초가 만든 요청 적체: httpx와 KIS API의 함정

KIS API 클라이언트에 connect timeout을 60초로 설정했더니, 연결이 느려지는 순간 요청이 수십 개 쌓였다. 타임아웃을 길게 잡을수록 안전하다는 착각이 만든 사고다.

August 26, 2026 · 3 분