좋은 기회로 지난 달 출판된 대규모 리액트 웹 앱 개발에 인생 첫 추천사를 남길 수 있었습니다. 개발자에게 있어 대규모라는 키워드는 굉장히 자극적입니다. 그리고 리액트에 대한 깊은 이해, 잘 사용할 수 있는 방법을 제시하는 책은 많지만 리액트 애플리케이션 설계와 관리에 대한 책은 상대적으로 적습니다. 이 책은 이런 부분을 다루고 있어서 개인적으로 매우 흥미롭게 읽었습니다.

이번 글에서는 추천사를 남겼다는 사심을 빼고 이 책을 읽고 느낀 점을 솔직하게 공유하고자 합니다.

추천사 내용 중 일부

이 책에서 말하는 대규모란 무엇인가?

프론트엔드에서 대규모라는 표현은 조금 어색하게 느껴질 수 있습니다. 백엔드 서버 개발의 경우 사용자가 많아질수록 서버의 부하가 커지고, 데이터베이스의 크기가 커지는 등 물리적인 측면에서 대규모로 표현할 수 있고 이에 따라 대규모 서버 개발이라는 표현이 자연스럽게 사용됩니다. 하지만 프론트엔드는 사용자가 많아지더라도 브라우저를 사용하는 사용자의 컴퓨터에서 동작하기 때문에 물리적인 측면에서 대규모로 표현하기 어렵습니다.

이 책에서는 복잡성을 중심으로 대규모를 정의합니다. 다만, 단순히 코드양이 많다고 해서 복잡하다고 할 수는 없습니다. 이 책에서 말하는 대규모란 수십 명 이상의 대규모 팀에 의해 개발됐거나 시간이 지남에 따라 계속 진화하는 웹 애플리케이션, 혹은 두 성격을 모두 지닌 애플리케이션이 대규모 웹 애플리케이션이라고 합니다. 개인적으로는 이 정의도 좀 애매모호하다고 생각하긴 합니다. 단순히 개발자가 많다고해서 복잡한 것도 아니고 시간이 지나면서 계속 변화하더라도 단순한 서비스로서 유지하고 있는 것도 있습니다.

저는 프론트엔드의 복잡성은 협업하는 다른 직군이 많아질 수록 증가한다고 생각합니다. 프론트엔드 개발자는 사용자와 만나는 제품을 만들기 때문에 필연적으로 다양한 직군과 협업할 수 밖에 없습니다. 물론 제품에 따라 그 규모는 차이가 있을 수 있지만 프론트엔드 개발자는 다양한 이해관계와 요구사항을 파악하여 마치 작은 PM처럼 다양한 직군과 소통하고 협업해야 합니다. 일종의 접착제 같은 역할을 한다고 할 수 있습니다.

많은 사람들의 오해가 있지만 프론트엔드 개발자는 단순히 UI를 보여주고 백엔드 서버와 통신하는 것만 구현하지 않습니다. 사용자와의 복잡한 상호작용, 데이터 수집, 다양한 환경에 대한 처리, 애니메이션, 국제화, 성능 최적화, 웹 접근성, SEO, 디자인 일반화 등 다양한 요구사항을 처리해야 합니다. 그리고 이러한 요구사항은 협업으로 인해 발생하고 그로 인한 하위 시스템이 계속 증가하며 복잡성 또한 증가하게 됩니다. 이 책에서는 이런 상황에서 어떻게 리액트 애플리케이션을 설계하고 관리할 수 있는지, 그리고 어떤 것을 고려해야 하는지에 대해 다룹니다.

누가 읽으면 좋은가?

아무래도 설계와 관리라는 것은 실제로 경험하지 않으면 알기 힘든 것이 많습니다. 그렇지만 문제가 있는지도 모르는 것과 문제가 있다는 것을 알고 있는 것은 큰 차이가 있습니다. 이 책은 대규모 웹 앱이라는 것을 만들 때 어떤 문제를 마주할 수 있는지 알려줍니다. 만약 여러분이 아직 경험이 없다면 이 책을 통해 미리 문제를 마주하고 고민해보는 것도 좋은 방법이 될 것이라 생각합니다.

살짝 아쉬운 깊이

이 책은 각 내용이 단편적으로 구성되어 있습니다. 그래서 각 내용을 깊게 다루지 않고 넘어가는 경우가 많습니다. 다만, 분량상 어쩔 수 없는 부분이라고 느껴집니다. 따라서 책을 읽을 때 지식을 익힌다는 느낌보다는 향후 어떤 문제를 만날 수 있는지 확인한다라는 느낌으로 접근하시면 좋습니다. 그리고 그 해결법은 관심있는 경우 별도의 다른 책이나 아티클 등을 통해 깊게 공부해보는 것을 추천합니다.

마치며

언제나 중요한 것은 '정답을 찾아나가는 방법'을 익히는 것입니다. 제가 추천사에 적은 것처럼 이 책을 읽을 때는 상황을 상상하고, 나라면 문제를 어떻게 해결할지 고민해보시길 바랍니다. 향후 그 고민이 실제로 도움이 되는 순간이 오게 될 것입니다.