커맨드를 치지 않아도 같은 절차를 밟는 AI 하네스
회사 AI 전환기 두 편에서 못다 한 하네스 설계 이야기. 슬래시 커맨드를 스킬로 만들어 팀원이 직접 치지 않아도 같은 절차를 밟게 하고, 강제를 늘리기보다 덜어낸 판단을 적었습니다.
회사 AI 전환기 두 편에서 못다 한 하네스 설계 이야기. 슬래시 커맨드를 스킬로 만들어 팀원이 직접 치지 않아도 같은 절차를 밟게 하고, 강제를 늘리기보다 덜어낸 판단을 적었습니다.
하루 한 번 도는 배치가 만든 레코드를 같은 날 운영자 수기 재실행이 그대로 다시 INSERT해서 2배가 됐습니다. 진입 경로가 공통으로 지나는 코어에 당일 생성분 가드를 넣고, 가드값과 DB 기본값을 상수 하나로 묶은 기록입니다.
롤링 배포로 발화 시각을 놓친 스케줄이 재기동 직후 밀린 실행을 한꺼번에 몰아 돌리던 문제입니다. Quartz misfire 기본 정책이 원인이었고, 기본값을 DO NOTHING으로 바꾸면서 두 층을 고치고 한 축은 일부러 둔 기록입니다.
계약 서류 이미지 업로드에서 힙 OOM이 났는데 컨테이너는 죽지 않았습니다. 파일 크기는 검증했지만 디코딩된 픽셀 수를 보지 않은 게 원인이었고, 축소 디코딩과 세마포어 두 축으로 막은 기록입니다.
한 외부 연동 회수만 전면 중단됐는데 에러도 경보도 없었습니다. 공유 스레드풀의 corePoolSize가 컨슈머 수보다 작아 한 컨슈머가 스레드를 못 잡고 조용히 멈춘 starvation이었고, 큐 용량 때문에 maxPool은 애초에 도달 불가였습니다.
서비스마다 제각각이던 분산락을 @DistributedLock 하나로 통일한 기록입니다. 비정상 종료 시 5시간 남던 락을 Redisson Watchdog으로 30초로 줄였고, 그 과정에서 AOP 자기호출과 롤링 배포 split-brain에 발이 걸렸습니다.