상태관리(State Management)
상태관리란 말 그대로 State(데이터)를 관리하는 것을 의미한다.
프로그램을 구현할 때 무수히 많은 데이터의 늪에서 효율적인 상태관리는 선택이 아니라 필수이다.
이런 상태관리는 크게 클라이언트 사이드 상태 관리와 서버 사이드 상태 관리로 나눌 수 있다.
클라이언트 사이드 상태 (Client-Side State)
사용자의 브라우저 내에서 관리되는 상태
useState 또는 상태 관리 라이브러리를 통해 관리된다.
- 로컬 데이터: 로컬에서만 필요한 데이터 ex) 다크모드, isLogin
- 성능: 네트워크 지연 없이 빠른 상태 변경 가능
- 수명 주기: 페이지 새로고침 및 종료 시 초기화
서버 사이드 상태 (Server-Side State)
서버에 저장되고 관리되는 데이터
반드시 데이터 베이스는 아니며 캐시 데이터일 수 있다.
- 중앙 집중식 데이터
사용자 정보, 애플리케이션 설정, 대규모 데이터셋 등 여러 세션 또는 사용자 간에 공유되어야 하는 데이터를 관리한다.
(독립적인 시스템에서도 접근 가능해야 한다.)
- 지속성
데이터가 데이터베이스 서버 또는 캐시 서버에 저장되므로 클라이언트 상태가 초기화 되거나 변경되어도 영구적으로 유지된다.
- 동기화와 일관성
서버로 데이터를 요청하면서 발생하는 네트워크 지연과 데이터 동기화에 대한 고려가 필요하다