[Spring 3기] CH 3 일정 관리 앱 Develop 트러블슈팅

백엔ㄷ현·2024년 10월 17일

이번 개발 과제를 진행하면서 겪었던 문제들, 그 문제들이 현재 진행형이라 그 경험들을 트러블 슈팅으로 기록해본다.

  • 개요

    일정 관리 애플리케이션에서 일정 등록 시 외부 날씨 API 를 스프링의 내장 라이브러리RestTemplate 로 날씨 정보를 저장하려 했으나, 호출 실패가 발생하였다.
    또한, 모든 요청들을 테스트 과정에서 유저 정보 삭제 요청을 보낼 때 필요한 데이터를 실수로 잘못 입력하거나, 토큰 정보를 누락하고 요청을 보냈을때 401 에러가 발생하는 문제를 발견하게 되었다. 하지만, 시간 부족과 정확한 원인 파악을 하지 못하여 제출 기한내에 해결하지 못하였다.

  • 트러블 슈팅

    • 배경 :

      • 외부 API 호출 시 데이터를 받아오지 못하는 문제

      • 회원 정보 삭제 요청을 잘못 보내고 난 후 계속 401 에러가 발생하는 문제

    • 발단 :

      • 외부 API 호출하여 일정을 생성하였을 때 오류가 발생하여 날씨 정보를 가져올 수 없는 문제 인지

      • 회원 정보 수정 후 삭제 시 토큰 정보를 누락하고 요청을 보냈을때 401 에러가 발생하여 삭제가 제대로 이루어지지 않는 문제 인지

    • 전개 :

      • 제대로 된 정보를 입력 받지 못하고 실패 메시지를 리턴하여 db 에 저장되는 문제

        Error while extracting response for type [interface java.util.Map] and content type [application/json;charset=utf-8] 라는 콘솔 에러 메시지가 떴는데, Map 과 관련된 문제가 발생하였다는 것을 알게되었다.
      • 이후 회원 수정, 삭제 모두 작동하지 않는 문제

        회원 정보 수정에서 잘못된 데이터를 입력했을때는 유효성 검증 실패 메시지가 뜨는게 보통인데 수정 시에 잘못된 정보를 입력했을때 http 상태 코드 오류가 뜨는 상황이 발생하였다.
    • 위기 :

      • Map 타입의 파싱의 실패

        데이터를 받아올 때 응답 데이터를 Map 컬렉션 타입으로 변환을 시도하다가 오류가 발생하였고, 날씨 데이터를 가져오는 데 실패하였다.
      • 401 에러의 인증 관련 문제 발생으로 회원 CRUD 과정의 심각한 문제 발생

        데이터의 잘못된 입력 하나로 로그인 자체가 풀려버리는 인증 오류가 발생하여 다시 로그인을 하고 이후 작업을 해야하는, 기본적인 유저 CRUD의 작동 방식에 완전히 벗어나는 상황이 발생하였다.
    • 절정 :

      • WebClient 라이브러리로 변경 후 외부 API 호출 시도

        restTemplate 라이브러리에서 제공하는 기능이 부족하다는 생각도 해보았다. 그래서 WebClient 라이브러리를 도입하려고 시도를 하였지만 webclient 는 스프링 5 버전 이상에서 제공되는 라이브러리인 걸 알게되었고, 현재 프로젝트는 3.x 버전이라 버전 업을 하게되면 예상치 못한 문제가 발생 할 수 있어 시도는 하지 못하게 되었다.
      • 토큰의 유효성 및 만료 여부의 코드 재검토

        토큰 유효성과 만료되는 코드를 다시 읽어보며 여러가지 시도를 해보았지만, 아직 jwt 토큰에 대한 지식이 부족하고, 무엇보다 시간이 부족하여 그 흐름을 분석하고 해결하지 못하였다.
    • 결말 :

      두 문제 모두 많은 시간을 들여 고민하고 노력해보았으나 제출 기한이 얼마 남지 않아 일단 작업 중단을 하였다. 문제의 원인은 어느정도 파악을 한거같아 여유만 있다면 해결 못할 문제는 아니라는 생각이 들었다. 이 두 문제 이외에도 전체적으로 다듬어야 할 부분이 많기 때문에 추후 리팩토링 작업을 할 때 다시 문제 해결 시도를 해보아야겠다.

profile
매일매일 공부한 내용과 코드 기록하겠습니다

0개의 댓글