TECH/웹개발

웹 성능과 유지보수를 위한 선택: Page-centric design이 유리한 의외의 상황들

런코리치 2026. 3. 21. 08:00

안녕하세요! 오늘은 웹 개발과 시스템 설계에서 자주 언급되는 Page-centric(페이지 중심) 방식에 대해 깊이 있게 다뤄보려 합니다. 최근 컴포넌트 기반 개발(Component-driven)이 대세가 되면서 상대적으로 덜 주목받는 듯하지만, 사실 우리가 사용하는 많은 프레임워크와 최적화 기법의 뿌리에는 이 '페이지 중심' 사고방식이 자리 잡고 있습니다.


1. Page-centric의 핵심 정의

Page-centric은 애플리케이션의 구조, 데이터 페칭, 그리고 사용자 경험을 '하나의 독립된 페이지(URL)'를 최소 실행 단위로 보고 설계하는 방식을 말합니다.

과거의 웹이 단순히 HTML 문서를 전달하는 방식이었다면, 현대의 Page-centric은 "사용자가 진입하는 특정 지점(Entry Point)에서 필요한 모든 리소스와 데이터를 최적화하여 제공하는 것"에 초점을 맞춥니다.


2. 주요 맥락별 Page-centric의 의미

① 웹 프레임워크 (Next.js, Nuxt.js 등)

가장 대표적인 사례는 File-system 기반 라우팅입니다.

  • 구조: pages/index.tsx, pages/profile.tsx처럼 파일 구조가 곧 웹사이트의 메뉴 구조가 됩니다.
  • 데이터 페칭: 특정 페이지에서만 필요한 데이터를 해당 페이지 파일 안에서 (getServerSideProps, getStaticProps 등) 호출합니다. 이는 데이터의 흐름을 페이지 단위로 고립시켜 관리를 명확하게 합니다.

② 데이터베이스 및 성능 최적화

전통적인 관계형 DB(RDB)가 데이터를 잘게 쪼개어 저장(Normalization)한다면, Page-centric 저장 방식은 '조인(Join) 없이 한 번에 읽기' 위해 데이터를 페이지 단위로 비정규화하여 저장하기도 합니다.

  • NoSQL/Document DB: 특정 화면을 그리기 위해 필요한 모든 정보를 하나의 JSON 문서(Page-like document)에 담아두어 응답 속도를 극대화합니다.

③ 브라우저 렌더링 (Lighthouse 지표)

구글의 웹 성능 지표인 Core Web Vitals는 매우 Page-centric합니다. 사용자가 특정 페이지에 머무르는 동안의 LCP(최대 콘텐츠 렌더링 시간), CLS(레이아웃 이동) 등을 측정하며, 페이지별 사용자 경험의 완결성을 평가합니다.


3. Page-centric 방식의 장점

  1. 직관적인 라우팅 및 구조: URL 구조와 프로젝트 파일 구조가 일치하여 대규모 프로젝트에서도 특정 화면의 코드를 찾기가 매우 쉽습니다.
  2. 독립적인 데이터 관리: 특정 페이지의 데이터 로직이 다른 페이지에 영향을 주지 않습니다. 이는 사이드 이펙트(Side Effect)를 줄이는 강력한 무기가 됩니다.
  3. SEO(검색 엔진 최적화) 유리: 각 페이지가 고유의 메타데이터와 콘텐츠를 완결성 있게 가지고 있으므로 검색 엔진이 인덱싱하기에 최적의 조건을 갖춥니다.
  4. 성능 최적화(Code Splitting): 페이지 단위로 코드를 쪼개어(Chunking), 사용자가 현재 보지 않는 페이지의 스크립트는 불러오지 않음으로써 초기 로딩 속도를 높일 수 있습니다.

4. Component-centric과의 비교 및 한계

비교 항목 Page-centric Component-centric
설계 단위 URL/전체 화면 재사용 가능한 UI 조각
관점 "이 페이지에 무엇이 필요한가?" "이 컴포넌트를 어디서든 쓸 수 있는가?"
장점 비즈니스 로직 파악이 빠름 코드 재사용성 및 유지보수성 극대화
단점 페이지 간 중복 코드 발생 가능 전체적인 데이터 흐름 파악이 복잡함

Page-centric의 한계:

  • 중복의 발생: 여러 페이지에서 공통으로 쓰이는 UI나 로직을 매번 페이지마다 정의하면 관리가 어려워집니다.
  • 상태 공유의 어려움: 페이지를 이동할 때마다 데이터를 새로 불러와야 하므로, 클라이언트 사이드에서 전역 상태(Global State)를 관리하는 데 추가적인 설계가 필요합니다.

5. 실무 적용 팁: 하이브리드 접근법

현대적인 개발에서는 이 두 방식을 적절히 섞어서 사용합니다.

  1. Atomic Design 활용: UI 요소는 컴포넌트 단위로 잘게 쪼개어 개발하되(Component-centric),
  2. Container/Presenter 패턴: 데이터 호출과 비즈니스 로직은 페이지 수준(Container)에서 처리하여 하위 컴포넌트로 내려줍니다(Page-centric 데이터 관리).
  3. Next.js App Router: 최근 Next.js 13 이상에서 도입된 App Router는 layout.js(공통)와 page.js(개별)를 분리함으로써 페이지 중심의 명확함과 컴포넌트 중심의 재사용성을 동시에 잡으려 노력하고 있습니다.

결론: 언제 Page-centric을 선택해야 할까?

콘텐츠의 노출이 중요하고, 각 화면의 목적이 뚜렷한 커머스, 블로그, 뉴스 사이트 등에서는 Page-centric 설계가 압도적으로 유리합니다. 반면, 매우 복잡한 인터랙션이 실시간으로 일어나는 대시보드나 협업 도구(SaaS)라면 컴포넌트 중심의 설계에 더 무게를 두는 것이 좋습니다.

결국 중요한 것은 "사용자가 경험하는 한 화면의 완결성"을 어떻게 효율적으로 구현하느냐에 달려 있습니다.

페이지 중심 설계뿐만 아니라, 효율적인 데이터 통신을 위한 세션 인증 방식에 대해서도 궁금하시다면 아래 글을 참고해 보세요!

https://run-code-rich.tistory.com/entry/spring-session-authentication-deep-dive

 

[Java/Spring] 로그인 구현의 클래식, 세션(Session) 인증 방식 A to Z

웹 서비스를 개발하면서 가장 먼저 마주하는 거대한 벽은 바로 '인증'입니다. 인증의 방식에는 여러 가지가 있습니다. 대표적으로 쿠키, 세션 등입니다. 각 인증 방식별로 특징을 정확히 안다면,

run-code-rich.tistory.com