AI Briefing

URL이 이상해요! Java와 Spring 중 범인은 누구?

·2024.09.26 19:00

카카오페이 알림피드 서비스에서 Java의 URI 클래스와 Spring의 UriComponentsBuilder 간 동작 불일치로 발생한 URL 가공 장애를 분석했다.

카카오페이 알림피드 서비스에서 메시지 랜딩 URL을 가공하던 중, 특정 URL의 호스트 정보가 사라지는 장애가 발생했다. 이는 OS 알림 센터와 알림피드의 랜딩 동작을 다르게 가져가기 위해 URL에서 특정 파라미터를 제거하는 로직을 추가하면서 시작되었다.

장애의 원인은 java.net.URI 클래스와 Spring의 UriComponentsBuilder 클래스 간의 동작 불일치였다. UriComponentsBuilder.fromUri(URI(this)) 방식을 사용했을 때, 특정 형식의 URL(예: kakaopay://payweb_tab)이 java.net.URI 객체로 변환되는 과정에서 host 정보가 null로 처리되는 현상이 발견되었다.

결과적으로 UriComponentsBuilderURI 객체로부터 잘못된 정보를 넘겨받아 URL의 주요 요소를 누락시킨 채 응답을 생성했다. 이를 해결하기 위해 중간에 URI 객체를 거치지 않고 문자열을 직접 다루는 fromUriString 메서드를 사용하는 방식으로 로직을 개선했다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.