Skip to content

마일스톤 2

Hun, 태훈 edited this page Dec 8, 2022 · 12 revisions

진행 사항

익셉션 핸들링

json으로 매핑할때 발생하는 익셉션을 어떻게 처리할까 하다가 구현한 기능이다.

spring에는 ControllerAdvice, Exception Handler 이렇게 2가지가 있는데, 우리는 그냥 핸들러만 구현했다.

(애초에 컨트롤러가 MessageController 하나뿐이니...)

추가로 저 두개 사이에는 적용 우선순위가 있는데, Handler 이후에 Advice가 적용된다.

이슈

RestTemplate retry

요청이 fail 된다면, 이를 어떻게 처리할지 고민했었어요.

외부 서버의 문제는 해당 서버에 큰 문제가 발생했거나, 사소한 문제가 생긴 2가지 상황이 있을 수 있는데요.

사소한 문제 상황을 해결하기 위해 재요청하는 로직을 구현했어요.

외부 서버에 큰 문제가 생긴 경우는 아직 과제로 남아있습니다.

이슈

Spring profile

FCM으로 push-message를 전솔할때는 비밀키같은걸 헤더에 담아서 보내야한다.

공개할 수 없는 정보라 profile에 박고 앱에서는 이걸 꺼내오는 식으로 구현을 했는데, 운영 서버랑 개발 환경이랑 설정이 다를 필요가 생겼다.

그래서 profile을 각각 만들어서 따로 관리중이다.

이슈

api 디자인

TL;DR 수정 : POST /send -> POST /push-message

REST api에 대해서 잘 알고 있다고 생각했었는데요.

무려 초창기 시절 인터넷의 쓰임새부터 현대 인터넷의 사용 패턴을 통해 Rest Api에 대한 이야기를 듣고 스스로 바꾸게 되었습니다...😆(도둑이 제발저린다는...ㅎㅎ)

덕분에 Rest api에도 단계가 있다는걸 새로 알게 되었습니다.

요청, 응답 클래스를 이용하여, 도메인과 요청/응답 분리하기

배경: 도메인 클래스가 외부의 요청, 응답에 사용, 외부와 도메인이 강하게 결합되어 있어 수정이 어려움

작업: 요청, 응답 전용 클래스를 새로 제작, 결합을 끊음

결과: 더이상 도메인이 외부의 변경으로 인해 수정되는 일이 없음

PR링크

Clone this wiki locally