-
Notifications
You must be signed in to change notification settings - Fork 1
[5주차 트러블 슈팅] 이준복 ‐ 백엔드 지식의 중요성
junbok97 edited this page Dec 14, 2023
·
1 revision
- username중복 체크를 위한 API를 사용하다 발생한 문제
- swagger에 나와있는 스팩대로 시뮬레이터에서 API를 사용했는데 동작하지 않음
- API 문서 스팩은 http메소드가 get이고 get의 바디에 json 형태로 username을 받고 있었음
{ "username" : string }
- API 문서 스팩은 http메소드가 get이고 get의 바디에 json 형태로 username을 받고 있었음
- postman에선 잘 동작함
-
클라이언트 코드가 잘못되었는지 디버깅
- 서버에 요청하기 전에 터지는 것인지 체크하기 위해 한줄한줄 디버깅
- 인코딩도 정상적으로 이루어지고 서버와 통신하기직전까지 코드가 잘 돌아가는것을 확인
- 서버와 통신을 하면 서버측에서 받지 못하는 것을 발견
-
헤더의 문제인가 ?
- postman은 잘 되고 swift는 안되는 이유가 헤더에 정보를 다 싣지않아서 그런것인가 하여 확인
- swift에서 postman과 동일하게 헤더를 싣고있는것을 확인
-
wireshark로 잡아보기
- postman에선 API 스팩대로 잘 동작하는것을 확인
- swift에서도 API 스팩대로 코드를 작성하였는데 서버에서 데이터를 받지 못하는것을 확인
- wireshark로 잡아보기로 결정
- wireshark로 잡아본 결과 swift코드에서도 문제가 없는것을 발견
- 서버쪽에서 받기직전 또는 받은 직후에 문제가 생기는것 같다고 판단 백엔드 분과 디버깅
- get요청에서 파라미터로 username을 받는것으로 변경
- post요청으로 body를 보내는것은 문제가 안됨
- get은 많은 양의 정보를 전달할 수 없어 원래는 body를 못 싣게 되었으나 2014년부터는 body가 혀용되었음
- 하지만 일부 클라이언트 혹은 서버에선 get요청으로 올시 body를 무시되는 경우가 있어서 주의가 필요하다라고 되어있음
- 서버측이 get요청의 body말고 parameter로 받으니 정상작동
- get은 parameter post는 body라는 기본적인 지식을 생각못하여 발생한 헤프닝이였다 ,,,,
- 서버측과 클라이언트 모두 당연한 생각을 하지 못하여 한참동안 어디가 문제인지 고민했다 ,,,,,,,
- DB 선택 과정
- TypeORM 선택 이유
- Docker 선택 이유
- Github Action 선택 이유
- DB서버와 서비스 서버를 분리한 이유
- 자동완성을 위한 Trie 구조를 제거하고, naver cloud search로 대체한 이유
- 11월 07일 (화) - 프로젝트 설명
- 11월 16일 (목) - 프로젝트 진행하면서 생긴 고민
- 11월 21일 (화) - 멘토분들 피드백
- 11월 28일 (화) - 트러블 슈팅 피드백
- 12월 05일 (화) - 기술적 도전에 대한 고민
- 12월 12일 (화) - 최종 발표 피드백