질문
로그인 및 인증,인가(세션,jwt둘다 사용), 게시판(이미지포함), 댓글, 소켓채팅 정도의 기능을 구현하여 테스트 코드와 docker로 띄워서 CI/CD까지 구현하려고 합니다.
상태랑 로직 관리를 useReducer, React Context API, React Query, redux, graphql
정도로 생각하고 있는데 어떤걸로 하는게 좋을까요?!
답변
안녕하세요 이정환입니다.
꽤나 복잡도가 있어보이는 프로젝트를 하실 예정이시군요 질문이 마치 비장한 출사표처럼 느껴집니다. 성공적으로 마무리하시길 응원하겠습니다 🤗
우선 복잡한 프로젝트에서의 글로벌한 상태 관리는 useReducer나 Context는 지양하시는 편을 추천드립니다. 애초에 Context는 글로벌하고 복잡한 상태 관리를 하기 위한 목적이라기 보단 사실 Props Drilling을 해결하는데에 그 본 목적이 있기 때문입니다.
따라서 글로벌 상태 관리로는 Redux, Recoil, Zustand 등의 대중적인 라이브러리를 추천드리는 바 인데요 모두 훌륭하므로 아무거나 골라 쓰셔도 상관 없지만 되도록 각 라이브러리 별 특징이나 장단점을 한번씩은 꼭 조사해보시고 선택하시는 것을 추천드립니다. 같은 기능을 한다고 해도 좀 더 특화된 부분이 존재하거든요
여기에 추가로 서버 상태관리를 위해 React-Query를 사용하시는건 매우 추천드리고 싶습니다. 또는 요새는 React-Query로 클라이언트 상태도 함께 관리하는 패턴도 자주 소개되던데 참고해보셔도 좋을 것 같아요
아 그리구 글로벌 상태관리 도구를 사용한다고 해도 useReducer나 Context를 아예 사용하면 안되는것은 아닙니다. useReducer는 로컬 상태를 깔끔하게 관리하는 이점이 있어 글로벌 상태가 아닌 로컬 상태를 관리할 때 이점이 있고 Context의 경우 특정 트리 내부에서만 접근하기만 하면 되는 데이터를 관리할때에도 꽤나 이점이 있을 수 있습니다.
추가로 GraphQL의 사용 여부는 서버 개발자 분과 직접 논의하셔서 두분이 더 선호하시는 방향으로 진행하시는게 좋을 것 같습니다.