221126 잊고있었던 axios instance. 그리고 youtube api 사용량 초과

샨티(shanti)·2022년 11월 26일
0

하루를 마무리 하기 전, 오늘 있었던 일들을 잔잔히 되짚어봅니다.
성공과 실패의 모든 요소에서 '배울 점'을 찾아내어 기록하고,
더 성장하는 내일의 나를 위해 'action plan'을 세웁니다.

오늘 코딩도장에 오면서 youtube api와 관련된건 모두 끝내겠다는 다짐으로 왔는데.. 생각지 못한 난관에 부딪혔다.
저녁을 먹고 와서 CSS를 좀 더 손보고 가짜 키워드로 검색했던 것을 실제 TOP 3 장소 키워드로 검색할 수 있는 로직을 만들고 있었는데...
갑자기. 정말 갑자기 뜨지 않던 403 에러가 뜨더니 모든 기능이 멈춰버리는 것이었다.

마침 아샬님이 말씀하신 axios instance를 보고나서 apiService 단에 있는 코드들을 고치고 있었던 터라 코드 에러인 줄 알고 그때부터 계속 코드를 고치고 있었다.

근데 지금 생각해보니 403 error code를 정확히 알고 있었다면 그런 삽질의 시간을 조금이라도 줄일 수 있었겠다 싶다.

403 Forbidden
클라이언트 오류 상태 응답 코드는 서버에 요청이 전달되었지만, 권한 때문에 거절되었다는 것을 의미한다.(MDN)

(1) 서버에 요청이 전달되었다는 의미를 알고 있었다면 적어도 요청 코드가 잘못되었다는 오해는 덜었을 것 같다.

(2) youtube api를 사용하기 전에 할당량이라는게 있다는 점은 알고 있었고, 그걸 초과하면 안된다는 것도 인지하고는 있었다. 하지만 오늘 계속 코드를 수정하면서 나름 신경을 썼고 받아오는 데이터량을 최소화(결과값을 5개만 가져오도록 함)했다고 생각했는데.
바보같이 객관적인 측정 수치를 봤어야 했는데. 그냥. 그냥 감으로만 때려맞췄다.
결국 top 3 장소 키워드로 맞춤형 영상을 가져오는 로직을 구현하면서 사용량을 초과해버린듯 하고 근 24시간 동안 youtube와 관련된 기능은 건드리지 못하는 상황이 벌어졌다.
아....... 한시도 모자란 때에 이런 상황이 벌어지니 정말 답이 안나온다고 느껴져서 막막- 해졌다.
근데 한편으론 지금 일이 터진게 잘된 것 같기도 하다. 만약 이 상황을 모른채 기능이 구현되어 버렸다면 추후에 배포시 문제가 될 수 있다.



더 일찍 발견했어야 할 저 에러메시지... ㅠㅠ


ㅋㅋ.. 아익....
아... ㅎㅎㅎㅎ... 정말... 후.
어쨌든 이미 벌어진 일에 대해선 되돌릴 수 없으니. 다시 할당량 리셋이 될 때까지 24시간... 지나가길 기다리고.

그럼 이런 일이 다시 벌어지지 않아야 할텐데.
구글링을 해보니 나와 같은 어려움을 겪는 사람들이 굉장히 많더라.
결국 이 '할당량'에 대한 최적화가 필요하다고 한다.

여러가지 방법이 있는 것 같고 또 사람들도 다양하게 시도하는 듯 한데...
근데 지금 내가 취하고 있는 방식 자체가 할당량을 많이 잡아먹는 방식이고 또 이 방식 외에는 구현이 불가능 할 것 같아 고민이 많이 된다...

우선 할당량 calculator에서 내용을 확인할 수 있는데 나는 top 3 장소의 각 이름 + '아기랑' 이라는 키워드로 검색한 뒤 관련도가 높은 장소 5개를 리스트로 받아온다. 즉 top 3 각 장소에 대해 5개 동영상 리스트를 가져오려면 한번 당 3번의 api 요청이 진행된다.


근데 보다시피 ㅠㅠ 다른 것들보다 소요되는 량이 많다.... 에고....
결국엔 DB를 구축해야 하는 것인가...
우선 정해진 시간 내로 완성을 하려 하다보니 프론트에서 요청을 하는 식으로 진행하는 중인데 DB를 만드는 방법으로 해결해야 하나 싶긴 하다.
어차피 DB는 만들어야 하는 마당이라.;

제대로 구현은 못하고 고민만 많아지는 시간. 윽.
너무 답이 없어보이면 육아 전문 채널의 플레이리스트나 아기랑 여행 다니는 유명 유튜버들의 재생목록을 가져와서 뿌려주는 방향으로 선회를 하는 대안을 고려해야 할 것 같다.


참. 그리고 오늘 아샬님이 axios instance에 대해 말씀해주셨는데 잠깐 헷갈리긴 했지만 동료의 도움을 받아 코드 하나를 리팩터링 해봤는데 잘 돌아간다.

이렇게 해 두면 매번 요청 때 헤더에 access token을 넣지 않아도 된다. 왜냐면 기본 instance에 headers를 지정하고 access Token을 보내주기 때문이다. 예-전에 강의에서 사용했다고 하는데 나는 잘 기억이 안나지만. 어쨌든 더 좋은 모양새로 활용할 수 있어서 다행이다.

youtube 때문에 좀 기운이 빠지긴 했지만...
당장 해결할 수 없는 문제에 집착하지 말고 오늘은 남은시간 동안 다른 부분 리팩터링과 테스트코드를 보완해야겠다.

디자이너에게 넘길 자료도 준비하고...!! 좀 더 힘내보자. 지치지 말기~!

profile
가벼운 사진, 그렇지 못한 글

0개의 댓글