백엔드 시스템 설계가 트래픽, 저장소, 메시지 큐, 캐시, 샤딩 같은 인프라 영역을 다루는 것처럼, 프론트엔드에도 그에 상응하는 ‘시스템 설계’ 영역이 존재한다. 구글 독스의 동시 편집 UI, 넷플릭스의 스트리밍 UI, 아마존 장바구니의 상태 동기화, 대규모 대시보드 — 이들은 단순히 컴포넌트를 나누는 문제가 아니다. 상태의 원천을 어디에 둘지, 어떤 데이터를 stale하게 허용할지, SSR과 CSR을 어떤 기준으로 분기할지, 사용자에게 보이지 않는 네트워크 지연을 어떻게 경험으로 녹여낼지 등이 핵심이다.

이 관점은 프론트엔드를 ‘화면을 그리는 기술’에서 ‘분산 시스템의 클라이언트 측면을 설계하는 기술’로 재정의한다. 즉, 프론트엔드 개발자는 더 이상 디자인 시안을 HTML/CSS/JS로 옮기는 사람이 아니라, 복잡한 분산 상태와 사용자 경험을 연결하는 시스템 설계자여야 한다.

근거

“이건 ‘컴포넌트를 어떻게 나눌까’ 만의 문제가 아니다. 상태의 원본을 어디에 둘지, 어떤 데이터는 stale해도 되는지, 어떤 화면은 SSR이 맞고 어떤 화면은 CSR로 격리해야 하는지, 문제가 생겼을 때 어떤 telemetry로 추적할지, 사용자가 이해할 수 있는 흐름으로 어떻게 구조화할지의 문제다.”

연결된 생각

출처

클리핑 · LinkedIn