데이터 요청 라이브러리처럼 보이는 탄스택쿼리는 좀 더 기술적인 측면에서 보면 웹 어플리케이션에서 서버 상태를 가져와 캐싱하고, 동기화하고, 업데이트 하는 작업을 손쉽게 해준다
대부분의 웹 프레임워크는 데이터 요청 혹은 업데이트하는 방법은 제공하지않는다. 그래서 개발자는 데이터 요청에 대한 방법을 개발하곤한다. 일반적으로 컴포넌트기반의 상태와 사이드이펙트 조합으로 구축하며 상태관리 라이브러리를 사용하여 웹앱 전역상태에 비동기 데이터를 저장하고 제공한다.
이러한 방법은 클라이언트 상태에는 적합하나 서버 상태에는 적합하지않다.
- 프론트엔드 개발자가 제어하거나 소유하지않고 있는 장소에서 원격으로 유지된다.
- 데이터 요청 혹은 업데이트에 비동기 요청이 필요하다.
- 데이터의 소유권이 모두에게 있으며, 유저 모르게 타유저가 변경이 가능하다.
- 데이터의 최신화를 신경쓰지않다보면 점진적으로 웹앱에서 데이터는 오래된 상태가 될수있다
서버상태의 특성을 파악하고 나면 아래의 문제가 발생할 여지가있다.
- 캐싱..
- 동일한데이터에대한 여러 요청을 단일요청으로 중복제거하기
- 백그라운드에서 오래된 데이터에 대해 업데이트 요청
- 데이터가 얼마나 오래되었는지 모름
- 가능한 빠르게 데이터 업데이트 반영
- 페이지네이션 혹은 지연로딩 데이터에서의 성능 최적화
- 서버상태의 메모리 및 가비지 컬렉션 관리
- 구조적 공유를 통한 쿼리 결과 메모화