
AI 에이전트에게는 중복 실행이 유실보다 비쌉니다 — exactly-once 대신 '모른다'를 상태로
at-least-once 로 보내고 수신자를 멱등하게 만드는 공식에는 수신자를 멱등하게 만들 수 있다는 전제가 깔려 있습니다. 수신자가 AI 에이전트면 같은 요청을 두 번 받고 PR 을 두 번 엽니다. 그래서 exactly-once 대신 "실행됐는지 모른다"를 상태로 올렸습니다.

at-least-once 로 보내고 수신자를 멱등하게 만드는 공식에는 수신자를 멱등하게 만들 수 있다는 전제가 깔려 있습니다. 수신자가 AI 에이전트면 같은 요청을 두 번 받고 PR 을 두 번 엽니다. 그래서 exactly-once 대신 "실행됐는지 모른다"를 상태로 올렸습니다.
S3 presigned URL 에 만료 1시간을 줘도 서명한 임시 자격증명이 먼저 만료되면 URL 도 끝납니다. 로컬 재현에서 SDK 는 이 어긋남을 막지 않고 서명했습니다. 발급 시점, CORS, 한글 파일명, 없는 파일의 403 까지 공식 문서와 재현으로 나눠 정리했습니다.
CREATE TABLE 에 collation 을 적지 않으면 MySQL UNIQUE 의 중복 기준은 서버 설정을 따라갑니다. collation 만 다른 MySQL 8.4 두 대로 재현한 차이와 RDS 파라미터 그룹·information_schema 로 확인하고 막는 법을 정리했습니다.
MySQL 에서 JSON 컬럼을 ORDER BY 하다 Out of sort memory 가 나면 메시지는 sort_buffer_size 를 늘리라고 합니다. 재현해 보니 8MB 로 올리자 통과는 했지만 버퍼를 꽉 채웠고, 정렬을 없애는 인덱스는 옵티마이저가 고르지 않았습니다.
Amazon SES 는 모든 AWS 리전에 있지 않습니다. 앱 리전에 SES 가 없어 다른 리전을 부르면 샌드박스·프로덕션 액세스·DKIM·억제 목록이 전부 발송 리전 기준으로 따로 쌓이고, 반송 알림은 기본으로 이메일로 가지만 앱은 그 사실을 모릅니다.
RDS for MySQL 8.0 의 표준 지원은 2026년 7월 31일에 끝났지만 CLI 로는 지금도 만들어집니다. CLI·API 기본값은 Extended Support 자동 가입이고 콘솔은 해제가 기본이며, 그 요금은 인스턴스 단가표에 없는 vCPU-시간 단위로 따로 붙습니다.
SSM 포트포워딩은 대상 인스턴스에 인바운드 규칙도, 배스천도 없이 프라이빗 RDS 에 로컬 포트로 붙게 해 줍니다. 다만 IAM 은 목적지 host 를 조건으로 묻지 못해, 세션을 열 권한이 곧 그 인스턴스가 네트워크에서 닿는 모든 곳에 대한 접근이 됩니다.
Claude Code 답변에 줄표와 이모지가 늘 붙어 있던 이유는 제가 직접 쓴 CLAUDE.md 였습니다. 압축 문체가 답변으로 새는 것을 output style로 막은 기록입니다. 기본 말투 지침 실측, 내장 스타일 다섯 가지, frontmatter 세 필드, 직접 만든 규칙 일곱 절을 정리했습니다.
9개월 전 그누보드5 위에 직접 얹은 트랜잭션과 FOR UPDATE 를, 이력서 한 줄을 검증하려다 다시 열었습니다. 락은 제대로 걸려 있었습니다. 다만 MyISAM 혼용과 일관 읽기 시점 두 군데가 우연히 안전했고, 그 우연은 상식적인 수정 하나로 걷힐 수 있었습니다.