패스트캠퍼스 프론트엔드 데브캠프 서버 상태 관리와 프로그래밍 패러다임 강의를 듣고 정리한 내용입니다.

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) 강조

정리

서버 상태 관리 라이브러리는 단순히 데이터를 가져오는 것을 넘어서서, 효율적인 상태 관리와 캐싱 전략을 제공한다. 프로젝트의 특성과 요구사항에 따라 적절한 라이브러리를 선택하는 것이 중요하며, 이는 프로그래밍 패러다임의 이해와 함께 더 나은 코드 구조를 만드는데 도움이 된다.

각각의 장단점이 있으므로, 프로젝트의 규모와 팀의 친숙도, 그리고 기술 스택을 고려하여 선택하는 것이 바람직하다.

profile
📚 배움의 과정을 기록해요 | 💬 가보자고

0개의 댓글