2025/12/14 4

[Pinit] 도메인 이벤트로 소통하기 - gRPC

현재 시스템 구조현재 요구사항에는 일정 시작 시간에 푸쉬 알림을 보내야 한다는 요구사항이 있다. 하지만, 이미 일정을 진행중인/종료한 사람에게 해당 푸쉬알림이 발송될 경우, 이는 UX 측면에서 사용자의 집중력을 해칠 우려가 있기 때문에, 일정이 시작된 후에는 푸쉬 알림이 발송되지 않아야 한다. 내부 상태 변화(Schedule의 "시작됨" 상태 변화와 "취소됨" 상태 변화)를 외부 시스템이 알아야 하는 경우가 발생했다. 이렇다면, 일정 시작 시간에 발송되는 푸쉬 알림은 일정이 "시작되지 않음" 상태일 때에만 발송되어야 한다.즉, 일정의 "시작되지 않음" 관련 상태/상태 변화가 외부 시스템에 전달되어야 한다. 이에 대해 나는 다음과 같은 해결책을 고려했다.도메인 이벤트로 해결하기상태 변화 알리기 - 일정 시..

[Pinit] 푸시 알림 발송하기

FCM 토큰으로 푸시알림을 발행하려고 하자, FCM 토큰이 UNREGISTERED되어 있다는 응답을 받았다.공식 문서를 참고한 결과, FCM 토큰이 만료되었다는 의미라는 것을 알게 되었다. 토큰이 예상하지 못한 방식으로 만료될 수 있다는 것을 알게된 나는 토큰의 만료 관리 정책을 고려해야 한다는 걸 알 수 있었다.하지만, 일단 지금의 목표는 알림 발송이니, 알림 안오는 버그부터 해결하자.그렇게 만료된 토큰을 삭제하고 다시 시도해본 결과, 에러 메시지가 달라졌다.이번에는 Invalid Argument 문제를 마주했다. GPT에게 자주 발생하는 Invalid Argument 에러에 대해 물어보니 다음과 같이 답변해주었다.진짜 FCM 등록 토큰을 넣었나? 엉뚱한거 잘못 넣은 거 아닌가?토큰 문자열이 손상된 ..

gRPC 튜토리얼 - 기본 기능과 원리, 직접 해보기

시작하기 전 - RPC란?외부 서비스의 메소드를 프록시 객체를 통해 로컬 함수(시스템 내부 함수)에서 호출하는 것처럼 만들어주는 도구이다.gRPC는 Google에서 개발한 오픈소스 원격 프로시저 호출(RPC) 프레임워크로, HTTP/2 기반의 고성능 통신을 제공한다.본 글은 gRPC 공식 튜토리얼 예제를 따라가며 작성한 내용입니다.좀 더 자세한 내용은 해당 링크를 통해 확인하실 수 있습니다. 목차proto 파일 작성의존성 설정gRPC 서버 구현gRPC 클라이언트 구현빌드 및 실행Spring 확장0. gRPC의 주요 구성 요소.proto 파일을 작성한다 → (proto)protoc로 컴파일한다 → Protobuf 도구 체계생성된 코드가 메시지를 직렬화/역직렬화한다 → Protobuf 포맷/런타임gRPC는..

과거의 잘못과 반성

이 글은 아마도, 내 블로그를 주변 사람들이 모르기 때문에 쓸 수 있는 기록이다.동시에 “지난 2년이 더 이상 특별한 사건으로 남지 않았다”는 작은 선언에 가깝다.올해 6월 이전의 회고가 비어 있었던 이유도 여기에 있다. 100% 사실도 아니거니와, 100% 사실이라면 너무 부끄럽기 때문에, 소설처럼 읽어주길 바란다. 내가 스스로를 설명할 때 자주 쓰던 단어는 책임감과 감사였다.그런데 어느 시점부터 그 두 단어가 흐려졌고, 그 과정에서 후회와 반성을 겪었다.그리고 그걸 다시 찾아내게 된 과정을 담는다.시작친구가 어떤 프로젝트를 완수하면 받을 비용이 50만 원이었는데, “그 돈을 그대로 나에게 주겠다”는 제안을 받았다. 조금 알아보니, 내 입장에서는 난도가 과도하게 높지는 않았다. 바로 직전에 했던 학교 ..