Search

데이터 패칭과 캐싱 및 상태관리에 대해

Tag
RTKQuery
ReactQuery
Category
프론트엔드
Description
데이터 패칭, 캐싱 및 상태 관리를 위한 도구인 RTKQuery, React Query, SWR의 장단점에 따라 프로젝트에 적합한 도구를 선택하는 것이 중요하다고 생각한다.
AI 키워드
ID
10
Title
포스팅
2023/08/17
1 more property

데이터 패칭, 캐싱 및 상태관리

RTKQuery, React Query, SWR은 React 기반의 애플리케이션에서 데이터 패칭, 캐싱 및 상태관리에 용이한 도구이다.

데이터 패칭(Data Fetching)

원격 서버(API Server 등)에서 필요한 데이터를 가져오는 과정을 뜻한다. 주로 API를 활용해 이루어지고, 이를 필요에 따라 호출하고 응답을 처리한다

캐싱(Caching)

한 번 가져온 데이터를 메모리나 로컬에 임시 저장해 두는 행위를 말한다. 캐싱을 통해 같은 요청이 있을 때마다 새로 서버에서 데이터 패칭을 할 필요없이 기존에 가지고 있는 데이터를 즉시 보여줄 수 있기 때문에 성능과 사용자 경험(UX)적으로도 좋은 것 같다

상태 관리(State Management)

애플리케이션의 전반적인 상태를 관리하는 것을 말한다. 특히 웹 애플리케이션에서 데이터를 패치한 후, 상태가 변경이 되면 이를 관리하고 반영하는데 이를 상태관리에 도움이 되는 것 같다

SWR

간편한 API로 빠르게 시작할 수 있다(useSWR)
Stale-while-revalidate 전략 사용
오래된 데이터 사용 후 검증을 말한다
서버 데이터 패칭을 사용할 때 사용자 경험을 개선하려는 개발자에게 적합하다고 한다
전역 상태 관리에서 필요한 Redux 및 기타 도구와 통합이 정말 쉽다고 한다
내가 생각하기에 작은 규모나 간단하게 사용하기에는 좋은 것 같다. 마치 useReducer와 같은 느낌이랄까?

RTK Query

Redux Toolkit과 함께 제공되고 Redux 에코시스템의 일부이다
데이터 패칭 및 상태 관리를 위해 Redux를 사용해야하는 경우에 조합성이 너무 좋다. 당연하게도 같은 라이브러리에서 제공하기때문이라고 생각한다.
Redux의 발전에 따라 앞으로 기능이 계속해서 확장될 가능성이 크다고 생각한다
현재 나는 42Manito(멘토링서비스)에서 사용중이다.
선택한 이유가 있는데 SSR과 CSR을 같이 섞어서 사용하는 프로젝트인데 이때 상태 관리를 위해 Redux를 사용해야 하는 이유가 있었고, 캐싱이라는 특징과, 기능별로 관심사를 분리할 수 있다는 장점도 있는 것 같다
그리고 Tag로 묶어서 data의 update행위를 했을때 같은 Tag로 묶여 있는 캐싱 데이터들을 강제 Refetch를 시킬 수 있다
그리고 크롬 확장 도구중에 Redux 도구가 디버깅하기에 정말 좋은 것 같다.... 최고최고

React Query

광범위한 설정 및 API를 통해 매우 유연한 기능을 제공하는 것 같다
위에 소개 했던 도구들에 비해 러닝커브가 확실히 존재하는 도구인 것 같다.... 나도 아직 안써....봤....
Pagination, Infinite Scroll과 같은 좋은 기능들도 지원한다

결론으로는?

프로젝트의 성격과 도구의 숙련도에 따라 선택지를 고르면 될 것 같다. 그리고 무엇을 선택하든 선택하고 아키텍처를 구성하는 것에 있어서는 재밌는 일이 될 수 있을 것 같다. 물론 개발중에는 "왜 이 기능이 없지?"하며 짜증이 치밀어 오를때도 있지만... 만들어서 쓰죠 뭐..... 하하하하하 오늘은 이만!