Open Joie-Kim opened 5 days ago
상태 관리 학습의 목적은 결국 SPA 구현의 핵심 요소를 이해하는 데 있지 않을까요? ?
사용자의 인터랙션 → 상태 변화 → 상태 변화에 따른 렌더링이라는 흐름 속에서, 상태 관리를 통해 이러한 변화를 어떻게 추적하고 렌더링할 것인가에 대한 다양한 방법을 배웠는데요.
Observer 패턴, Proxy, RxJS, 이벤트 버스 등 다양한 방법을 책에서 소개하면서, 우리가 사용하는 프레임워크의 상태 관리 방식에 대해 더 깊이 생각해 볼 수 있는 기회를 제공하는 것 같습니다!
참고 vue2까지는 Object.defineProperty로 vue3부터는 proxy기반으로 상태관리를 진행합니다.
상태 관리 전략은 프로젝트 아키텍처라기보다는, 프로젝트가 데이터를 관리하고 상태를 유지하는 방식을 가리키는 개념입니다. 이 전략들은 특정 라이브러리나 프레임워크가 선택할 수 있는 여러 가지 방법 중 하나이며, 프로젝트의 요구사항에 맞는 최적의 상태 관리 방법을 선택할 때 참고하는 지침이 됩니다. 다시 말해, 상태 관리 전략은 어떻게 데이터를 관리할 것인지를 설계하는 방법이며, 상태 관리 라이브러리는 이러한 전략을 지원하는 도구입니다.
프론트엔드 애플리케이션이 커지고 복잡해지면서, 상태의 일관성과 예측 가능성을 유지하는 것이 점점 중요해졌습니다. 잘못된 상태 관리로 인해 데이터 불일치, 예기치 않은 버그, 성능 문제 등이 발생할 수 있기 때문입니다. 따라서 프론트엔드 개발자가 상태 관리 전략에 대해 알고 있어야 하는 이유는 다음과 같습니다:
복잡한 상태 관리 문제 해결
대규모 애플리케이션에서 상태가 다양한 컴포넌트와 페이지 간에 공유될 때, 데이터의 일관성을 유지하는 것은 매우 중요한 과제입니다. 상태 관리 전략을 이해하면 다양한 상황에서 상태를 효과적으로 제어할 수 있습니다. 예를 들어, 프로젝트가 간단할 때는 로컬 상태로 충분하지만, 애플리케이션이 복잡해지면 전역 상태 관리나 상태 동기화가 필요하게 됩니다.
일관된 데이터 흐름 설계
상태 관리 전략은 애플리케이션 내 데이터 흐름을 설계하는 데 도움을 줍니다. 단방향 데이터 흐름(예: Flux 패턴)이나 양방향 데이터 바인딩 등 다양한 방법 중에서 프로젝트에 맞는 데이터를 관리하고 유지하는 방식을 선택할 수 있습니다. 데이터 흐름이 일관되면, 상태 변화가 어디에서 발생하고 어떻게 흘러가는지 명확하게 파악할 수 있어 디버깅과 유지 보수가 쉬워집니다.
적절한 상태 관리 도구 선택
상태 관리 전략을 이해하면, 프로젝트 요구 사항에 맞는 상태 관리 라이브러리나 패턴을 선택하는 데 도움이 됩니다. 예를 들어, 리액트의 Context API, Redux, MobX와 같은 라이브러리들은 각기 다른 상태 관리 전략을 지원하며, 이러한 도구들은 사용 목적과 특성이 다르므로 적절한 선택이 중요합니다.
성능 최적화
상태 관리 전략은 불필요한 렌더링을 줄이고, 데이터 변경에 따른 효율적인 업데이트를 가능하게 합니다. 상태를 최적화하면 사용자 경험을 향상시키고 성능 문제를 예방할 수 있습니다. 예를 들어, 상태를 필요할 때만 업데이트하는 전략은 성능 개선에 큰 도움이 됩니다.
결론적으로, 상태 관리 전략에 대한 이해는 효율적이고 유지 보수하기 쉬운 애플리케이션을 설계하는 데 중요한 역할을 합니다. 상태 관리 라이브러리는 이러한 전략을 지원하는 도구로서, 각각의 전략이 어떤 상황에 적합한지 알고 있다면 프로젝트 요구사항에 맞는 올바른 선택을 할 수 있습니다.
누가 만들어줬고, 많이 쓰는 것을 사용하고 있지만 그래도 네가 뭘 쓰는지는 알아놔라! 저자가 이렇게 말한다고 생각하고 꾸역꾸역 머리에 ...
저는 읽으면서 상태 관리 전략을 알아가는 과정에서 디자인 패턴에 대한 호기심이 좀 생겼던 것 같아요!
이벤트 버스, MVC, 옵저버 등등...
🧐 Question
책을 읽고 나니, 아래처럼 궁극적인 목적에 대한 질문이 떠오르더라구요.
여러분은 프론트엔드 개발자가 상태관리 전략을 이해하고 있어야 하는 이유가 뭐라고 생각하시나요?
📝 Reference