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

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

September 30, 2026 · 4 분

alembic upgrade head가 CI에서만 SIGSEGV로 터진다

로컬에서는 멀쩡히 돌아가는 alembic upgrade head가 GitHub Actions CI에서만 SIGSEGV로 죽는다. 12번의 시도 끝에 greenlet C 확장과 Python 3.12 계열 런타임 조합을 의심했고, subprocess 호출을 in-process Alembic API로 바꿔 우회했다.

September 23, 2026 · 5 분

KIS API Rate Limit이 아침 배치의 대장주를 조용히 비웠다

morning_batch가 정상 완료됐는데 leader_groups는 항상 0개였다. KIS paper API rate limit이 비동기 일괄 요청 28개 중 22개를 조용히 거부하고 있었다. 에러는 있었다. 배치는 멈추지 않았다. 결과만 빈 채로 아침을 맞이했다.

September 16, 2026 · 5 분