Firebase 프리티어 요청 한도 초과
개발을 하던 도중 로그인 및 데이터 받아오기가 안되어서 이것 저것 확인을 해보니 firebase의 사용량 초과로 요청이 거부된 것을 확인했다. 하루만에 Firebase 요청이 1만건 발생했고, 비정상적인 현상의 원인을 추려내기 위해 네트워크 호출을 하는 기능들을 하나씩 살펴보았다.
1번의 경우 그렇게 많은 네트워크 호출이 일어나는 과정이 없기 때문에 원인일 가능성이 낮다고 판단했고, 2번, 3번은 가능성이 있었으나, 그 당시 firestore에 등록된 다큐먼트 수가 매우 적은 상태였기 때문에 보류했다.
따라서 마지막 4번이 원인일 가능성이 크다 생각했는데 그 이유는 프로젝트에 캐시를 구현하지 않아 각 버블마다 상대방의 프로필 사진을 db에서 계속 호출을 했어야 했다. 따라서 채팅View가 collectionView로 구성되어 있는데 cell을 재사용할 때 마다 이전 채팅들의 이미지를 불러오는 과정에서 불필요하게 네트워크 호출이 이루어지고 있다는 것을 확인하였다. 이 문제를 해결하기 위해서는 적어도 채팅의 프로필 이미지들에 대한 캐싱이 필요하다는 것을 느꼈고, 서버 비용을 내지 않기 위해 도입하게 되었다.