FCM 대규모 발송: 무효 토큰은 어떻게 처리해야 하나
→ FCM(Firebase Cloud Messaging)은 구글이 제공하는 모바일 푸시 알림 서비스다. 토큰은 각 기기를 식별하기 위해 FCM이 발급하는 고유 문자열이다.
개발하면서 배운 것들을 기록합니다.
주문 수량을 무시하고 재고를 -1만 차감하던 버그를 발견한 후, PESSIMISTIC_WRITE 락·데드락 방지·트랜잭션 타임아웃·커넥션 풀 튜닝까지 한 번에 정리한 기록.
외부 API 호출에 elapsed 로깅과 병렬화를 적용하면서 마주친 선택지들. runCatching vs try/catch/finally, CompletableFuture vs 코루틴, commonPool vs Java 21 가상 스레드를 실제 코드 기준으로 비교한다.
→ 월요일 아침마다 터지는 커넥션 풀 고갈. 로그를 추적하다 보니 OSIV가 범인이었다.
→ FCM(Firebase Cloud Messaging)은 구글이 제공하는 모바일 푸시 알림 서비스다. 토큰은 각 기기를 식별하기 위해 FCM이 발급하는 고유 문자열이다.
→ `rewriteBatchedStatements`는 MySQL JDBC 드라이버 옵션으로, 여러 개의 INSERT 문을 하나의 멀티 로우 INSERT 문으로 합쳐서 보내주는 기능이다.
스케줄러가 2개 스키마(데이터베이스 안에서 테이블, 뷰 등을 논리적으로 묶어놓은 단위)의 테이블을 JOIN 해야 했다. 사용자 정보는 A 스키마, 활동 기록은 B 스키마.