Q: Supabase에 Prisma, TypeORM 등의 ORM을 이용해도 괜찮을까요?
A:
https://www.reddit.com/r/Supabase/comments/p6mueg/why_would_you_use_prisma_with_supabase/
예전에 흥미롭게 읽었던 reddit 커멘트인데요! prisma를 supabase와 함께 쓰는게 의미가 있느냐에 대한 토론이었어요.
결론부터 말씀드리면, 의미가 있다입니다.
supabase는 BaaS(Backend as a Service)이기도 하지만 supabase는 자기 스스로를 “Database Service”로 정의하고 있어요. 즉, DB를 안정적으로 서빙하는데에 더 큰 목표를 둔다는 이야기입니다. 따라서 DB Operation을 어떤 라이브러리로 진행할지는 편하게 사용해도 되고 RLS를 꼭 사용할 필요가 없다면 ORM 사용을 오히려 권장한다는 이야기였어요 🙂 한번 읽어보시면 도움될 것 같습니다.
Q: Netflix의 무한 스크롤 구현 시, 마지막 페이지까지 스크롤한 후 영화 디테일을 보고 뒤로가기를 하면 react-query가 API를 다시 처음부터 끝까지 호출하는 문제가 발생합니다.
react-query의 staleTime 설정을 하면 될 것 같은데, 너무 긴 시간으로 설정하는 게 맞는지 고민입니다. 현업에서는 이런 상황을 어떻게 처리하나요?
A:
오 너무 좋은 질문입니다! 생각이 많아지는데요 ㅎㅎ
**“영화“**라는 도메인의 특성상 데이터가 자주 바뀌지 않기 때문에 react query의 persist query client를 활용해서 캐싱을 진행해보시는걸 추천드려요. 리액트 쿼리는 기본적으로 메모리에만 캐싱을 진행하는데, 이 때문에 페이지 라우팅/새로고침이 발생할 경우 데이터가 날아갈 수 있어요. persist를 제대로 해주는 플러그인을 도입하시면 원하시는 바를 달성하실 수 있습니다.
https://tanstack.com/query/latest/docs/framework/react/plugins/persistQueryClient?from=reactQueryV3
또한 staleTime을 잘 말씀주셨는데요! staleTime을 60*60(한시간) 정도로 설정해서 캐싱을 진행해보시는건 어떨까요? 영화 평점을 썸네일에 보여주는 기획이 추가된다면, 한시간에 한번 정도는 데이터가 날아가야 할 것 같아요 :)
하지만 실제 현업의 경우 도메인과 서비스 특성에 따라서 정말 많이 달라집니다. 커머스 회사는 정확한 데이터와 실시간성이 어느정도 중요하기 때문에 클라이언트 사이드에서 캐싱을 하기보다는 서버를 최적화하고 정확한 정보를 전달하는데 초점이 맞춰졌어요. 하지만 상품이 아닌 유저의 메타데이터, 인기 카테고리 같은 데이터는 stale time 기반의 캐싱을 진행하기도 했답니다.