패스트캠퍼스 프론트엔드 데브캠프 서버 상태 관리와 프로그래밍 패러다임 강의를 듣고 정리한 내용입니다.
1. 서버 상태 관리의 필요성
기존 방식의 한계
- 컴포넌트 내부에서 UI, 비즈니스 로직, 통신 등이 복잡하게 얽혀있음
- API 호출마다 로딩, 에러, 성공 상태 등 여러 상태 관리 필요
- 수백 개의 API가 있을 경우 관리해야 할 상태가 기하급수적으로 증가
서버 상태 관리 라이브러리의 등장 배경
- 단순한 데이터 페칭이 아닌, 데이터 관련 상태를 효과적으로 관리하기 위한 목적
- 캐싱 전략을 통한 효율적인 데이터 관리
- 불필요한 API 호출 감소
2. 주요 서버 상태 관리 라이브러리
TanStack Query (React Query)
- 가장 오래되고 안정적인 라이브러리
- 캐싱, 디바운스 등 다양한 기능 제공
- Context API 기반 구현
SWR
- Vercel에서 개발한 데이터 페칭 라이브러리
- 캐싱 전략에 대한 깊은 이해 가능
- 간단하고 직관적인 API 제공
RTK Query
- Redux Toolkit의 일부로 제공
- Redux 생태계와 통합이 용이
- Redux 사용 프로젝트에 적합
Apollo Client
- GraphQL 특화 라이브러리
- BFF(Backend For Frontend) 아키텍처에 적합
- 복잡한 API 구조에서 효과적
3. 핵심 특징
캐시 관리
- 데이터의 신선도(Freshness) 관리
- 캐시 유효 시간 자동 관리
- 불필요한 네트워크 요청 감소
상태 관리
- 로딩, 에러, 성공 상태 통합 관리
- 자동화된 상태 업데이트
- 일관된 데이터 동기화
4. 프로그래밍 패러다임
객체지향 프로그래밍 (OOP)
- 구조적 프로그래밍의 발전된 형태
- 상태를 가진 객체 중심의 프로그래밍
- 캡슐화, 상속, 다형성 등의 개념 활용
함수형 프로그래밍 (FP)
- 상태 없는(또는 불변 상태) 프로그래밍 방식
- 버그 발생 가능성 감소
- 안정성과 예측 가능성 향상
- 불변성(Immutability) 강조
정리
서버 상태 관리 라이브러리는 단순히 데이터를 가져오는 것을 넘어서서, 효율적인 상태 관리와 캐싱 전략을 제공한다. 프로젝트의 특성과 요구사항에 따라 적절한 라이브러리를 선택하는 것이 중요하며, 이는 프로그래밍 패러다임의 이해와 함께 더 나은 코드 구조를 만드는데 도움이 된다.
각각의 장단점이 있으므로, 프로젝트의 규모와 팀의 친숙도, 그리고 기술 스택을 고려하여 선택하는 것이 바람직하다.