URL이 이상해요! Java와 Spring 중 범인은 누구?
·2024.09.26 19:00
핵심 내용
카카오페이 알림피드 서비스에서 Java의 URI 클래스와 Spring의 UriComponentsBuilder 간 동작 불일치로 발생한 URL 가공 장애를 분석했다.
1 / 2
자세히 보기
카카오페이 알림피드 서비스에서 메시지 랜딩 URL을 가공하던 중, 특정 URL의 호스트 정보가 사라지는 장애가 발생했다. 이는 OS 알림 센터와 알림피드의 랜딩 동작을 다르게 가져가기 위해 URL에서 특정 파라미터를 제거하는 로직을 추가하면서 시작되었다.
장애의 원인은 java.net.URI 클래스와 Spring의 UriComponentsBuilder 클래스 간의 동작 불일치였다. UriComponentsBuilder.fromUri(URI(this)) 방식을 사용했을 때, 특정 형식의 URL(예: kakaopay://payweb_tab)이 java.net.URI 객체로 변환되는 과정에서 host 정보가 null로 처리되는 현상이 발견되었다.
결과적으로 UriComponentsBuilder는 URI 객체로부터 잘못된 정보를 넘겨받아 URL의 주요 요소를 누락시킨 채 응답을 생성했다. 이를 해결하기 위해 중간에 URI 객체를 거치지 않고 문자열을 직접 다루는 fromUriString 메서드를 사용하는 방식으로 로직을 개선했다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.