Skip to content

멘토링 5주차

Jeonghyeon Park edited this page Dec 15, 2022 · 4 revisions

🧑‍🏫 멘토링 Q&A

Q1. 구글 API key를 어디에서 관리할 지 고민이 됩니다. (client vs backend)

구글 API를 통해 식당 이미지를 가져와야 하는데, 이 가져오는 처리를 서버 or 클라이언트 중 어디서 해야할 지 확신이 서지 않아 여쭤보고 싶습니다.

조사한 장단점은 다음과 같습니다.

- 장점 단점
서버에서 가져오기 API key를 확실하게 숨길 수 있다. 이미지를 by-pass하는데 드는 비용이 있다.
클라이언트에서 가져오기 로컬 서버를 거치지 않고 이미지를 가져올 수 있다. API key가 클라이언트에 노출된다.

A1.

API key는 왠만해선 노출하면 안됨. API키를 알려주는 것은 DB 접속정보 알려주는 꼴이기 때문

하지만, 지도의 클라이언트 키 같은 경우처럼 검증 가능한 수단이 있는 경우 노출해도 괜찮다

외부 API로 부터 이미지를 받아와 중간에 가공하는 작업은 부하가 있지만, 단순히 받아온 이미지를 되돌려주는(by-pass) 작업은 서버 부하가 없다고 한다. (cpu 사용률도 거의 없다고 함.)


Q2. 저희 서비스에 인피니티 스크롤을 적용했을 때 이점이 있을까요?

방 입장 시, 상세정보를 전부 가져오고 있습니다.

인피니티 스크롤을 적용하면 그 상세정보를 끊어서 보여주는 건데, 의미가 있을까요?

A2.

상세정보에 담긴 url로 이미지를 가져오기 위한 추가 요쳥이 있기 때문에 인피니티 스크롤을 사용하면 의미있을 것이다.


Q3. Nest cacheManager를 사용하면 redis의 고유 기능을 사용할 수 없는 문제

Nest는 cacheManager를 쓰면 redis의 hash, sortedSet등 지원이 안되는데 어떻게 해야 될까요?

A3.

cacheManager는 레디스 뿐만 아니라 멤캐시드 등 다른것도 연결할 수 있는 추상화 된 것이라서 redis만의 고유 기능을 지원하지 않는다.

만약 hset같은 것을 사용하려면 cacheManager를 사용하지 않고 따로 만들어서 써야한다.

npm redis 패키지 4버전과 3버전의 차이가 많이 나서 아직 4버전 지원하지 않는 것들이 많으니, 사용할 기능들이 4버전에서 지원하는지 확인해보고 3버전을 사용할지 찾아봐야 한다.


Q4. 방 코드(/room/{roomCode})를 가져올 때, referrer를 이용하는 방법에 관한 질문

http referrer를 이용하면 굳이 현재 방 코드를 가져오지 않고도 주소로부터 현재 방 코드를 얻어낼 수 있으므로, 방 코드를 메세지로 넘겨받지 않고 referrer로 부터 방코드를 추출해서 사용하는 편이 좋지 않을까요?

A4.

proxy나 다른 플러그인으로 referrer 지워서 보낼 수 있기 때문에 확실히 roomCode를 서버로 보내주는 편이 좋다.

세션 쿠키처럼 사용해서 해결할 수 있다. 단, 여러 방에서 모두 유효 하려면 리스트로 관리해야 한다.

내가 참가하고 있는 방이 몇개이고 내가 어디에 있는지 알고 있어야 하기 때문이다.


➕ 멘토님 추가 조언

문제1. init-room페이지에서 방을 만들 때 로딩 시간이 매우 오래 걸린다.

서버에서는, Kakao api 를 통해 식당의 상세정보를 한번 가져오고 각각에 대해서 google api를 찔러 상세정보를 모두 가져오기 때문에 로딩 속도가 매우 느린 문제에 대한 조언.

해결방안1.

프론트 쪽 동기 처리한 부분이 시간 많이 소요되는 것 같은데, 지도를 먼저 보여주고 나중에 불러온 데이터(음식점 데이터)를 나중에 찍어주는 식으로 개선하면 좋을 듯 하다.

로딩시간이 2~3초 이상되면 보통 유저 많이 이탈된다.

프론트에서 잘 처리해서 백엔드가 덜 욕먹도록하자.

프론트 쪽에서 데이터를 받기 전 형태를 미리 잡아놓고 데이터 오면 렌더링 되도록 하자. (스켈레톤 UI)

Clone this wiki locally