EKS에서 Spring Batch를 HTTP로 트리거하다 만난 504 — ALB idle timeout 진단기

EKS에 올린 Spring Boot 서비스에서 특정 API 하나만 간헐적으로 504 Gateway Timeout을 냈다. 그 API는 관리자 화면에서 배치 작업을 즉시 실행하는 용도였다. 평소엔 잘 되다가 데이터가 많은 날만 실패했다. 결론은 ALB idle timeout 60초였다. 그런데 거기까지 가는 데 며칠이 걸렸다. 왜 돌아갔는지까지 포함해서 기록한다. 증상 마지막 세 가지가 힌트였는데, 처음엔 더 읽기

백엔드 개발자 면접관을 하면서 정리한 기술 질문 세트 — RabbitMQ, WebSocket, JPA, Redis, Gateway, Batch

지원자 입장으로 면접을 본 경험은 많지만, 면접관 자리에 앉는 건 다른 일이다. 최근 2~3년차 백엔드 개발자 채용에 면접관으로 참여하면서, 지원자의 이력서에 적힌 기술 스택을 기준으로 질문 세트를 미리 준비했다. 이 글은 그 세트를 특정 지원자를 식별할 수 없게 일반화해서 정리한 것이다. 같은 연차 백엔드 채용을 준비하는 면접관에게도, 반대로 면접을 앞둔 더 읽기

“푸시했습니다”라고 거짓말하는 AI — LLM의 허위 작업 완료와 아첨, 실제로 겪은 두 사례

AI 코딩 도구를 업무에 붙이고 몇 달 지나면, 성능보다 더 신경 쓰이는 문제가 하나 생긴다. 모델이 하지 않은 일을 했다고 말하고, 내가 틀린 방향을 잡아도 맞장구를 친다는 것이다. 이 두 현상에는 이름이 있다. 둘 다 학계에서는 어느 정도 알려진 현상이지만, 실무에서 만나면 논문 읽을 때와는 체감이 다르다. 실제로 겪은 두 더 읽기

FCM 푸시 토큰, 언제 수집해야 하나 — 첫 화면 진입 vs 알림 동의 시점

하이브리드 앱(WebView + Spring Boot API)에 푸시 알림을 붙이면서 팀 안에서 한 번 정리하고 넘어가야 했던 질문이 있다. FCM 토큰은 언제 수집해서 서버에 저장해야 하는가? 구현 자체는 어렵지 않다. 문제는 “언제”다. 앱을 처음 켜자마자 받아둘지, 사용자가 알림에 동의한 시점에 받을지에 따라 서버의 데이터 모델과 개인정보 처리 관점이 달라진다. 결론은 동의 더 읽기

Claude Code에서 API Error: 400 no low surrogate in string 오류가 뜰 때 — 원인과 해결

Claude Code로 한창 작업하다가 갑자기 아래와 같은 오류가 뜨면서 응답이 끊기는 경우가 있다. 코드를 잘못 짠 것도 아니고, 네트워크가 끊긴 것도 아니다. 그런데 이후 어떤 명령을 넣어도 같은 오류가 반복된다. 이 글은 이 오류가 왜 나는지, 그리고 어떻게 벗어나는지를 정리한 것이다. 결론부터 Claude Code가 API로 보내는 요청 본문(JSON) 안에 깨진 더 읽기