소켓 없는 채팅 백엔드 설계

지난 글에서 프론트엔드가 3초마다 “새 메시지 있어?”라고 물어보는(polling) 구조를 소개했다. 이제 백엔드가 답할 차례다. “3초마다 요청이 들어온다고? 서버 DB 괜찮아?” 나도 이 부분이 가장 걱정이었다. 앱 사용자가 1,000명만 되어도 단순히 계산하면 초당 수백 건의 조회가 발생한다. 그래서 백엔드 설계의 핵심은 “최대한 빠르고 가볍게 응답하기”였다. 오늘은 Spring Boot와 JPA를 사용해 무거운 소켓 대신 가벼운 조회 API로 채팅을 처리한 경험을 공유한다. 1. … 더 읽기

FCM 푸시 알림 연동기 (2) – 백엔드(Backend) 전송 로직

지난 글에서 플러터 앱에서 토큰을 발급받아 서버로 던지는 것까지 처리했다. 이제 백엔드(Spring Boot)가 바통을 이어받을 차례다. “그냥 라이브러리 쓰고 매세지 보내면 끝 아닌가?” 라고 생각했지만, 막상 해보니 채팅 알림과 일반 알림을 구분해야 하고, 유저가 알림을 껐는지 체크하는 등 신경 쓸 로직이 꽤 있었다. 오늘은 FCM 초기화부터 실제 전송, 그리고 알림 설정 처리까지의 과정을 정리해본다. 1. Firebase 초기화 … 더 읽기