<aside> 📌
</aside>
개선 전에는 코드를 역할(components, hooks, pages, …)에 따라 분류해놨다. 처음에는 이 정도의 분류로도 충분했지만, 개발을 할수록 점차 문제점이 보이기 시작했다.
src/components의 평면적인 구조src/pages 하위에 잘 분리되어 있으나, src/components 내부 구조에 문제가 있음
src/hooks의 평면적인 구조useConsumer, useProducer, useMedia, useTransportuseAuth,useAPIuseSocket, useTheme, useToast, useIntersect이런 문제점들로 인해 디렉토리 구조를 개선하기로 결정했다.
기능들이 동일 레벨에 혼재되어 있어서 구분이 명확하지 않다는 문제가 있었다. 그렇기에 애플리케이션을 기능단위로 분리하는 아키텍처 방법론인 FSD를 도입하여 각 기능 단위로 관련 코드들을 그룹화하면, 위 문제점들을 해결할 수 있을 것이라고 생각한다. 특히 라이브 스트리밍, 채팅과 같이 기능 중심의 복잡한 애플리케이션에서 FSD는 코드의 구조화와 유지보수성을 크게 향상시킬 수 있을 것이다.
FSD 말고 다른 컴포넌트 디자인 패턴은 고려 안 했나요??