Blog

개발하면서 배운 것들을 기록합니다.

백엔드#MySQL#트러블슈팅#DB

MySQL 크로스 DB JOIN에서 터지는 두 가지 폭탄

스케줄러가 2개 스키마(데이터베이스 안에서 테이블, 뷰 등을 논리적으로 묶어놓은 단위)의 테이블을 JOIN 해야 했다. 사용자 정보는 A 스키마, 활동 기록은 B 스키마.

11
백엔드#Spring#필터#트러블슈팅

필터 순서가 데이터를 삼켜버린 날

알림센터에 알림이 안 들어간다는 리포트가 왔다. 푸시는 받은 사용자가 있는데, 알림센터에는 아무것도 없는 사용자가 있다고.

6
백엔드#비동기#Spring#트러블슈팅

@Async + CompletableFuture.runAsync = 이중 비동기의 함정

에러 핸들러가 이상하게 동작했다. FCM 발송 실패 시 텔레그램으로 알림을 보내는 로직인데, 가끔 알림이 안 왔다.

8
백엔드#FCM#버그#트러블슈팅

pushkey가 없으면 알림함도 안 보인다고?

푸시 알림 서비스에는 두 가지 기능이 있다.

6
백엔드#Spring#AOP#트러블슈팅

Spring @Transactional이 무시되는 순간 — Self-Invocation 함정

대량 푸시 발송 서비스에서 진행률 업데이트가 안 되는 버그가 있었다.

6
백엔드#Spring#HikariCP#트러블슈팅

HikariCP auto-commit:false, 데이터가 조용히 사라지는 날

FCM(Firebase Cloud Messaging, 구글에서 제공하는 모바일 푸시 알림 서비스) 발송 실패한 토큰을 DB에서 비활성 처리하는 기능을 배포했다. 로직은 단순했다.

7