DNS 순간 장애가 WebSocket을 종일 죽인 이유: 자동 복구 경로가 없었다

새벽 5시 DNS 순간 장애로 KIS WebSocket이 재연결 5회를 소진하고 영구 차단됐다. DNS가 복구된 후에도 WebSocket은 살아나지 않았다. 자동 복구 경로가 설계에 없었기 때문이다.

October 14, 2026 · 5 분

SQLModel timezone=True 한 줄이 만든 9거래일 체결 0건

Phase 124에서 DB 컬럼을 TIMESTAMP → TIMESTAMPTZ로 올렸는데, 대응하는 SQLModel 필드에 timezone=True를 빠뜨렸다. asyncpg가 매도 체결 저장을 거부하면서 9거래일간 체결이 한 건도 기록되지 않았다. /health는 계속 200이었다.

October 7, 2026 · 4 분

헬스체크는 200을 반환했다, 그런데 내 서버는 없었다

uvicorn을 네이티브로 띄웠다고 생각했는데 헬스체크가 200을 반환한다. 서버가 잘 떴다고 믿고 계속 개발했다. 알고 보니 OrbStack의 Docker 컨테이너가 같은 포트를 점유하고 있었고, 내가 수정한 코드는 실행 중이 아니었다.

September 30, 2026 · 4 분