Today I Learned

날짜별 업무 및 학습 회고입니다. 매일 무엇을 했고, 무엇을 배웠는지 기록합니다.

2026년 9월

2026-09-18

잠금으로 한 줄씩만 처리하는 서버 앞에는 큐보다 워커 안의 지터 재시도가 먼저다

동시에 제출된 폼 몇 건이 '지금 바쁨'으로 실패하던 문제를 큐와 워커로 분리하면서, 큐 재배달만으로는 경합이 안 풀리고 예외를 ack하면 조용히 유실된다는 걸 확인한 기록

  • 상대가 잠금으로 한 줄씩만 처리하면 큐의 재배달만으로는 경합이 안 풀린다. 재배달도 같은 시각에 몰려 다시 충돌하므로, 워커 안의 무작위 지터 재시도가 먼저고 큐의 백오프는 장애용이다
  • 이미 '접수 완료'라고 답한 뒤에는 워커가 예상 못 한 예외를 ack하면 안 된다. ack는 곧 조용한 유실이다

2026년 7월

2026-07-14

개발 환경 정비에서 만난 범용 개념들: 셸 인용·모노레포 배포·CI 러너·가드 설계

도구·인프라를 정비하며 마주친 셸 단어 분리, workspace 배포 재작성, CI 러너 불일치, fail-open 가드를 범용 개념으로 정리한 TIL

  • 셸 변수에 담긴 경로는 공백이 있으면 인용 없이 쓸 때 여러 인자로 쪼개져 명령이 조용히 깨진다
  • 모노레포 내부 의존은 workspace 프로토콜로 링크하고 배포 시 실제 버전으로 치환하는 매니저로 올려야 한다