Kafka 재시도가 정상 파티션까지 멈출 때
재시도해도 고쳐지지 않는 입력을 작업 등록 전에 격리하고, 실행 중인 작업과 완료했지만 커밋하지 못한 기록을 구분한 경험.
Engineering notes
엔지니어링 노트
The notebook
백엔드 개발과 시스템 설계에서 배운 것을 정리합니다.
재시도해도 고쳐지지 않는 입력을 작업 등록 전에 격리하고, 실행 중인 작업과 완료했지만 커밋하지 못한 기록을 구분한 경험.
멤버십과 사용자 역할이 어긋난 문제에서 트랜잭션, 쓰기 잠금, 캐시 읽기 차단이 각각 무엇을 보장하는지 살펴본다.
비동기 작업 취소 뒤에도 살아 있는 스레드와 자식 프로세스가 임시파일, 처리 슬롯, 완료 판정을 어떻게 붙잡아야 하는지 살펴본다.
백업 파일을 확인한 시점과 실제 상태를 바꾸는 시점을 나누어 보면, 복구 도구의 통과 메시지가 어디까지 유효한지 드러난다.
MinIO SDK의 PartSize를 생략한 크기 미상 업로드가 528 MiB 버퍼를 할당했다. OOM·502 조사에서 버퍼 제한과 본문 수신 전 대기까지 이어진 과정을 정리한다.
요청 진단에서 값과 수집 상태를 함께 남기고, 사용자가 보낸 식별자와 서버가 확인한 객체를 구분한 경험을 정리한다.
파일 정리 로직을 모듈로 옮기면서 기존 CLI 계약과 소유권 재검사를 유지하고, 예전 계층으로 로직이 돌아오지 않게 검증한 경험을 정리한다.
asyncio.to_thread, Tokio spawn_blocking, Kotlin coroutine과 MCP 요청을 취소할 때 실제로 멈추는 것과 계속 실행되는 것을 구분한다.