어떤 상태관리 라이브러리를 써야할까?

2023-05-30 18:18:30


안녕하세요, 소플입니다.

프론트엔드 개발에서 빼놓을 수 없는 부분이 바로 상태관리(State Management) 입니다.

일반적으로 리액트를 사용해서 웹애플리케이션을 제작하다보면,

점점 규모가 커지게 되고 상태관리의 필요성을 느끼게 됩니다.

규모가 작은 사이드 프로젝트에서는 사실 리액트의 useState() 훅만 사용해서 개발해도 충분하지만,

회사에서 개발하는 프로젝트는 대부분 규모가 작지 않기 때문에, 상태관리가 거의 필수적으로 들어가야 합니다.

그럼 어떤 상태관리 라이브러리를 써야할까요?

상태관리 라이브러리에도 그 종류가 많고 특징이 다르기 때문에,

처음 상태관리 라이브러리를 도입하려고 하다보면 이런 고민에 빠질 수 있습니다.

그럼 대표적으로 리액트 생태계에는 어떤 상태관리 라이브러리들이 있는지 한 번 살펴볼까요?


Redux

먼저 Redux입니다.

Redux는 가장 대표적인 상태관리 라이브러리라고 할 수 있습니다.

2015년에 처음 나왔으며, 나온지 꽤 됐지만 아직도 압도적으로 많이 사용하고 있으며,

상태 관리 라이브러리의 조상님 같은 존재라고 할 수 있습니다.

참고로 Redux는 리액트 핵심 개발자 중 한 명인 Dan Abramov가 주축이 되어 만들었습니다.

처음 Redux를 사용하면 개념이 너무 복잡하고 잘 와닿지 않아서 어려워하는 분들이 많은데,

잘 이해하고 사용하면 너무나도 좋은 라이브러리라고 생각합니다.

그리고 상대적으로 사용하기 쉽고 편한 다른 상태관리 라이브러리를 사용하기 전에,

꼭 Redux는 배우고 넘어가야 된다고 저는 개인적으로 생각합니다.

https://redux.js.org


MobX

다음으로는, 한 때 Redux와 항상 비교되었던 MobX라는 상태 관리 라이브러리가 있습니다.

MobX는 Observable state라는 것을 만들어서 상태관리를 하는 방식이며,

몇년 전에 비해서 요즘은 언급되는 비중이 조금 줄어드는 추세입니다.

https://mobx.js.org


Recoil

다음으로 나오는 상태관리 라이브러리는 Recoil입니다.

Recoil은 리액트를 만든 Meta에서 만든 라이브러리이며, 그만큼 리액트와 궁합이 잘 맞도록 개발되었습니다.

Redux의 복잡함에 지친 영혼들을 달래주는 존재로 떠오르고 있는 일종의 피난처(?)라고 할 수 있습니다ㅎㅎ

https://recoiljs.org


Zustand

마지막으로 소개할 상태관리 라이브러리는 최근에 빠르게 떠오르고 있는 Zustand입니다.

Zustand는 독일어로 ‘상태’라는 뜻을 갖고 있습니다. 그래서 발음도 정확히 하자면 ‘슈스탄트’가 됩니다.

Zustand는 리액트와 관련된 오픈소스 활동을 활발히 하고 있는 Poimandres라는 곳에서 개발한 라이브러리이며,

Redux에 비해 사용하기 쉽고 심플하다는 장점이 있습니다.

https://github.com/pmndrs/zustand


이처럼 다양한 상태관리 라이브러리들이 있는데, 어떤걸 사용해야 할까요?

사실, 그 질문에 대한 정답은 없습니다.

각 프로젝트의 규모와 상황에 가장 잘 맞는 라이브러리를 선택해서 사용하는 것이 중요하죠.

그리고 비슷한 기능을 제공한다면 많은 개발자들이 사용하는 것을 선택하는 것도 좋은 방법 중 하나입니다.

아래 그림을 한 번 볼까요?

state management library npm trend

위 차트는 앞에서 소개한 상태 관리 라이브러리들의 npm trend를 나타낸 것입니다.

역사와 전통을 자랑하는 Redux가 압도적으로 상위권에 위치한 것을 볼 수 있으며,

뒤를 이어 Zustand가 mobX를 따돌리고 빠르게 올라오는 것을 볼 수 있습니다.

그리고 가장 하단에 Recoil이 위치하고 있습니다.

이 트렌드를 보면 어떤 상태관리 라이브러리를 사용하든지,

일단 Redux는 필수적으로 한 번 써보고 넘어가야 한다는 사실을 알 수 있습니다.

압도적으로 사용량이 많기 때문이죠.

Redux가 처음에는 조금 복잡하고 어렵게 느껴질 수 있지만,

개인적으로는 Redux를 먼저 학습하고 다른 상태 관리 라이브러리로 넘어가는 것을 추천합니다.

그래야 상태관리의 밑바탕에 깔려있는 원리와 흐름에 대해서 제대로 알 수 있고,

최근에 나온 상태관리 라이브러리들이 어떤 부분들을 개선하기 위해서 등장했는지도 알 수 있기 때문입니다.

그래서 이 글의 결론을 내려보면,

Redux를 먼저 깊게 학습한 이후에, 다른 상태관리 라이브러리로 넘어가자!

라고 할 수 있을 것 같습니다.

그럼 저는 다음에 또 다른 글로 찾아뵙겠습니다!

Copyright ⓒ Soaple. All rights reserved.