[서평] 패턴으로 익히고 설계로 완성하는 리액트
2025.09.29.5 min read
이 책을 선택한 이유
개발자로 일해오면서 패턴이나 설계에 대한 지식을 필요할 때마다 조금씩 배워 적용해 오면서 깊은 이해 없이 단편적인 부분에만 적용하고, 지식 자체도 파편화되어 있어 이를 정리하기 위해 선택 하였다. 고민에 순간마다, 명확한 원칙없이 선택했던 순간들이 있었다. 그런 순간들이 오면 좀 더 명확한 원칙 기반으로 판단하는데 도움을 줄 수 있는 책이라고 생각하여 선택하였다.
이 책을 통해 얻은 지식
이 책은 리액트의 애플리케이션 구조, 컴포넌트 설계 원칙, 합성 패턴 등을 실전적인 예제를 통해 설명한다. 컴포넌트 설계 원칙이나 합성 패턴은 실제 개발 환경에 적용해 본 경험이 있어서, 작성했던 코드를 떠올려보고 비교해보며 복습한다는 생각으로 읽었다. 가장 도움이 되고 흥미롭게 읽은 파트는 데이터 관리와 관련된 파트이다. 프론트엔드에서도 복잡한 데이터를 관리하는 것은 가장 어렵고 힘든 작업중 하나라고 생각한다.
그럼에도 불구하고 초기에 체계적으로 관리하지 못하고 소홀하게 관리하여 나중에 복잡도를 올리고, 개발 생산성을 하락 시키는 주요 원인이 될 수 있는 까다로운 부분이라고 생각한다. 현업에서 개발할 때, ACL(오류 방지 계층)이라는 개념을 생각하고 적용한 것은 아니지만, 서버 데이터 인터페이스를 정의하고, 프론트단에서 사용할 데이터 인터페이스를 정의하고, 이를 프론트단에서 사용하기 위한 데이터 변환 함수를 같은 파일에 두어 사용했었다. 이런 방식은 단순한 ACL(오류 방지 계층) 역할은 해주겠지만 클래스의 상속성과 다형성의 이점을 활용하지 못하여 책에 나온 내용처럼 기본 데이터 인터페이스에서 파생되는 데이터를 다룰 일이 발생하거나 데이터별로 다른 로직을 적용해야 하는 경우에 대응하기 어려웠을 것이다. 클래스 기반으로 데이터를 다루는 점의 이점을 이해하게 된 것이 이 책에서 내가 얻은 가장 유익한 부분이라고 생각한다.
끝맺음
지금까지 두 번의 명함이 있었다. 명함에 적혀있는 내 직업은 소프트웨어 엔지니어 였다. "소프트웨어 엔지니어"를 한문장으로 정의하기는 어렵겠지만, 내가 생각하는 소프트웨어 엔지니어의 정의는 "문제를 발견하고 그에 맞는 해결책을 소프트웨어를 활용하여 제시하고 이를 설계하고 코드를 작성하여 지속적으로 관리하는 사람"이다. 나는 문득 내가 소프트웨어 엔지니어라는 직책에 어울리는 능력을 가진 사람인지 반문하게 되었다. 스스로 부족한 부분이 있다고 생각했기 때문이다. 문제를 발견하고 해결책을 제시하기도 하고 설계도 하였지만, 설계에 있어서 전문적인 지식이 부족하고 원칙이 부족하였다. 이 책은 그런 나의 부족한 부분을 조금이나마 채워준 책이자. 소프트웨어 엔지니어로서의 첫걸음을 내딛을 수 있게 해준 책이라고 소개하고 싶다.