몇 달 전, 리액트 기반의 개발 환경을 구축해야 하는 상황에 놓였었는데, 사내에 다른 프론트엔드 개발자가 있거나 리액트로 구성된 프로젝트가 없어서 모든 걸 스스로 정해야 했었다. CSR과 SSR을 두고 고민했고, 초기에 세팅해 놓았던 CSS 프레임워크 환경을 재구성하기도 하고, 전역 상태 관리를 어떻게 할 것인지에 대한 고민을 동시에 했었다. 그것과 동시에 내가 가장 길게 고민했던 것이 폴더 구조와 컴포넌트 패턴이었다. 그 당시 유행하던 FSD(기능 분할 설계)를 살펴보면서 동시에 여러 아티클과 Github 저장소를 뒤져가며 고민했던 기억이 난다. 고민이 길었던 이유는 일전에 Vue를 사용했을 때 다소 좋지 않은 컴포넌트 패턴으로 고생했던 경험도 있었고, 한번 구조를 잡아두면 바꾸기 힘들뿐더러 유지보수 측면에 큰 영향을 미칠 수밖에 없다는 걸 알기 때문이었다. 특히나 리액트 같은 환경에서는 컴포넌트 단위로 작업을 주로 하게 되고, 그 컴포넌트들은 전체 구조의 영향을 받을 수밖에 없다. 그런 면에서 언젠가 한 번은 각 패턴을 공부해 보고 싶다는 생각이 있었다. 때마침 이 책을 접한 건 좋은 기회였다.
결론부터 말하자면 내게는 한번 읽어서 온전히 흡수할 수 있는 책은 아니었다. 400페이지도 안 되는 분량이지만 꽤 알짠 구성으로 짜여져 있고, 그 말인즉슨 압도적으로 친절할 수 없다는 의미이기도 하다. 디자인 패턴에 대한 역사나 패턴성이 어떻게 검증되며, 패턴 구조화와 작성, 안티 패턴을 다루고 있고, 그 이후 자바스크립트의 문법과 디자인 패턴을 이어서 다룬다. 이 자바스크립트 패턴 파트에서 우리가 어디선가 접해봤을 싱글톤이나 퍼사드 등이 나온다. 그리고 별도의 챕터로 MVC, MVP, MVVM 패턴을 따로 다루고 있는데, 사실 이 챕터는 Node에 대한 이해가 있으면 더 이해가 빨랐을 것 같다는 생각이 들었다. 그 이후 비동기 프로그래밍 패턴을 거쳐 네임스페이스 패턴을 지나면 드디어 리액트 디자인 패턴이 나온다. 275페이지에 당도해서야 나오게 되는데, 긴 터널을 통과한 거에 비해 분량이 조금 아쉬웠다. 우리가 알다시피 자바스크립트의 역사는 길지만 프론트엔드라는 영역이 고도화된지 오래되지 않았기 때문에 그런 면에서 이해가 가는 대목이기도 하다. 고차 컴포넌트와 Props와 Hooks 패턴, 코드 스플리팅 등 처음 리액트로 프로젝트를 구축하는 입장이라면 도움이 될 법한 알찬 내용이다. 그 다음 챕터에서는 리액트에서 추가로 중요하다고 느낄 수밖에 없는 렌더링 패턴 또한 다루고 있어서 실무적인 면에서 도움이 되는 챕터라는 생각이 들었다. 리액트의 애플리케이션 구조까지 다루는 챕터가 있어서 개괄적인 그림을 그려볼 수 있는 느낌이었다.
많은 걸 다루고 있는 만큼 설명이 간소한 책이다. 다만 핵심을 놓치진 않고 있고 개발 역사적으로 언급되어 왔던 패턴들을 함께 다루고 있어서 백과사전처럼 틈날 때 찾아보고 추가적인 설명은 구글링을 통해서 학습하면 좋겠다는 생각이 들었다. 아마 절반도 이해하지 못했을 거 같은데, 그럼에도 불구하고 재차 읽을 마음이 드는 걸 보면 학술적으로나 실무적으로도 꽤 매력적인 책임이 틀림없다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."