블로그 목록

리액트(React)와 SPA 완벽 이해: 모듈형 웹 건축의 시작

거실 벽지를 새로 바꾼다고 해서 멀쩡한 아파트를 통째로 허물고 다시 짓는 분은 없으실 겁니다. 하지만 불과 몇 년 전까지, 우리가 매일 사용하는 웹사이트들은 정확히 이런 비효율적인 방식으로 작동했습니다. 페이지의 작은 버튼 하나를 누를 때마다 화면 전체가 하얗게 변했다가 다시 나타나는 '새로고침' 현상, 혹시 기억하시나요?


지난 8편까지 우리는 VS Code라는 훌륭한 설계 사무소를 차리고, Git으로 도면을 안전하게 보관하며, npm과 Yarn을 통해 전 세계의 최고급 건축 자재를 조달하는 방법까지 모두 마쳤습니다. 이제 본격적으로 땅을 파고 뼈대를 올릴 차례입니다.


오늘 다룰 주제는 현대 프론트엔드 개발의 패러다임을 완전히 뒤바꿔놓은 혁명, 바로 SPA(Single Page Application)와 이를 구현하는 1군 건설 공법인 리액트(React)입니다. 부동산 모듈러 건축의 개념을 빌려, 코딩 초보도 무릎을 탁 칠 수 있도록 아주 쉽고 명쾌하게 풀어드리겠습니다.


새로고침 없는 스마트홈, SPA(Single Page Application)란?

과거의 웹사이트는 MPA(Multi-Page Application) 방식이었습니다. 사용자가 '회사 소개' 메뉴에서 '게시판' 메뉴로 이동하면, 서버는 기존의 집(페이지)을 완전히 철거하고 게시판이라는 새로운 집(페이지)을 처음부터 다시 지어 브라우저로 보냈습니다. 당연히 시간도 오래 걸리고, 서버의 건축 비용(트래픽)도 막대했죠.


반면, 현대 웹 개발의 표준이 된 SPA(Single Page Application)는 완전히 다른 접근 방식을 취합니다. 최초에 접속할 때 튼튼한 뼈대와 필수 인테리어가 모두 갖춰진 '단 하나의 집(Single Page)'을 지어놓습니다. 그리고 사용자가 다른 방으로 이동하거나 새로운 정보를 요청할 때, 집 전체를 부수는 것이 아니라 필요한 방의 가구나 벽지만 쏙쏙 교체하는 방식입니다.


부동산 투자자의 시선으로 본 SPA의 장점
"초기 건축비(첫 로딩 시간)는 조금 들 수 있지만, 한 번 지어놓으면 유지보수 비용이 획기적으로 줄어들고 거주자(사용자)의 만족도는 최상으로 올라가는 프리미엄 스마트홈과 같습니다."


구분MPA (전통적 방식)SPA (현대적 방식)
건축 방식페이지 이동 시 매번 새로 건축 (전체 새로고침)최초 1회 건축 후 내부 인테리어만 변경 (새로고침 없음)
사용자 경험화면이 깜빡이며 흐름이 끊김앱을 쓰는 것처럼 부드럽고 빠름
서버 부담매번 전체 데이터를 보내야 하므로 부담이 큼필요한 데이터(JSON)만 주고받아 효율적

왜 하필 리액트(React)인가? 1군 건설사의 최신 공법

SPA를 짓기 위한 공법(프레임워크/라이브러리)에는 여러 가지가 있습니다. 뷰(Vue), 앵귤러(Angular) 등 훌륭한 기술들이 있지만, 현재 전 세계 프론트엔드 시장의 압도적인 1위는 단연 리액트(React)입니다. 메타(구 페이스북)가 개발하고 유지보수하는 이 기술은 왜 웹 개발의 표준이 되었을까요? 부동산 건축에 비유해 그 핵심 원리 두 가지를 살펴보겠습니다.


1. 레고 블록처럼 조립하는 '컴포넌트(Component)' 기반 개발

최근 건설 업계에서 각광받는 '모듈러(Modular) 주택'을 아시나요? 공장에서 규격화된 방, 욕실, 거실을 미리 만들어두고 현장에서는 레고 블록처럼 조립만 하는 방식입니다. 리액트의 컴포넌트(Component)가 바로 이 모듈러 건축의 완벽한 디지털 버전입니다.


리액트에서는 웹사이트를 통째로 짜는 것이 아니라, '헤더(Header)', '버튼(Button)', '상품 리스트(ProductList)' 등 독립적인 부품(컴포넌트) 단위로 쪼개어 개발합니다. 이렇게 만든 컴포넌트는 다음과 같은 엄청난 이점을 가져옵니다.


  • 재사용성 극대화: 잘 만들어둔 '프리미엄 창틀(버튼 컴포넌트)' 하나를 안방, 거실, 화장실 등 프로젝트 곳곳에 무한정 재사용할 수 있습니다.
  • 유지보수의 편리함: 만약 모든 창틀의 색상을 파란색에서 빨간색으로 바꿔야 한다면? 과거에는 수백 개의 방을 일일이 찾아다니며 칠해야 했지만, 리액트에서는 '창틀 컴포넌트'의 원본 도면 하나만 수정하면 수백 개의 창틀이 일제히 업데이트됩니다.

2. 가상 돔(Virtual DOM): 철거 전 3D 시뮬레이션

리액트를 이야기할 때 절대 빠질 수 없는 핵심 개념이 바로 가상 돔(Virtual DOM)입니다. 조금 어렵게 들릴 수 있지만, 건설 현장의 '3D BIM(건축 정보 모델링)' 기술을 떠올리면 이해가 쉽습니다.


우리가 보는 웹 브라우저의 화면(실제 DOM)을 수정하는 작업은, 실제 지어진 아파트의 콘크리트 벽을 허물고 다시 세우는 것만큼이나 무겁고 비용이 많이 드는 작업입니다. 만약 데이터가 100번 바뀐다고 해서 실제 화면을 100번 부수고 다시 지으면 웹사이트는 버벅거리다 다운되고 말 것입니다.


그래서 리액트는 실제 화면에 손을 대기 전에, 메모리상에 실제 화면과 똑같이 생긴 3D 가상 도면(Virtual DOM)을 하나 만들어 둡니다. 그리고 변경 사항이 생기면 다음과 같이 똑똑하게 처리합니다.


  1. 새로운 인테리어 요구사항이 들어오면, 먼저 '가상 도면'에 적용해 봅니다.
  2. 기존 도면과 수정된 가상 도면을 매우 빠른 속도로 비교(Diffing)합니다.
  3. 전체 도면 중 정확히 어느 부분(예: 안방의 조명 스위치)만 바뀌었는지 찾아냅니다.
  4. 최종적으로 바뀐 그 부분만 실제 아파트(실제 DOM)에 단 한 번의 공사(Patch)로 일괄 적용합니다.

이러한 가상 돔 기술 덕분에 리액트는 아무리 복잡하고 데이터 변화가 많은 웹 애플리케이션에서도 물 흐르듯 부드러운 성능을 유지할 수 있는 것입니다.


성공적인 컴포넌트 설계를 위한 실전 체크리스트

그렇다면 이 훌륭한 리액트 공법을 활용해 어떻게 집을 지어야 할까요? 무턱대고 컴포넌트를 잘게 쪼개는 것만이 정답은 아닙니다. 부동산 개발 시 용도와 동선을 고려해 공간을 구획하듯, 프론트엔드 개발에서도 전략적인 컴포넌트 설계가 필수적입니다.


  • 단일 책임 원칙(SRP): 하나의 컴포넌트는 단 하나의 역할만 해야 합니다. '욕실' 컴포넌트 안에서 '주방'의 요리 기능까지 처리하려고 하면 안 됩니다. 컴포넌트가 너무 많은 일을 하고 있다면, 두 개로 분리할 타이밍입니다.
  • 독립성 유지: 좋은 컴포넌트는 다른 프로젝트에 그대로 떼어다 붙여도 정상적으로 작동해야 합니다. 주변 환경에 너무 의존적으로 설계된 컴포넌트는 재사용성이 떨어집니다.
  • 네이밍 규칙: 컴포넌트의 이름만 봐도 어떤 역할을 하는지 알 수 있어야 합니다. (예: UserCard.jsx, NavigationMenu.jsx)

마무리하며: 도면을 그렸으니, 이제 생명을 불어넣을 차례입니다

오늘 우리는 왜 현대 웹 개발이 SPA라는 스마트홈 구조로 진화했는지, 그리고 그 중심에 있는 리액트(React)의 컴포넌트와 가상 돔(Virtual DOM)이 얼마나 혁신적인 건축 공법인지 알아보았습니다. 이제 여러분은 단순히 텍스트와 이미지를 나열하는 것을 넘어, 사용자와 실시간으로 상호작용하는 '웹 애플리케이션'을 설계할 수 있는 시야를 갖추게 되었습니다.


하지만 껍데기만 번듯한 집은 진정한 집이 아니죠. 집이 제 기능을 하려면 수도관을 통해 물이 흐르고, 전선을 통해 전기가 공급되어야 합니다. 리액트 컴포넌트에서 이 '물과 전기'의 역할을 하는 것이 바로 데이터(State)입니다.


다음 10편에서는 리액트 건축의 꽃이라 불리는 '상태 관리(State)와 훅(Hooks)'에 대해 집중적으로 파헤쳐 보겠습니다. 사용자의 클릭 한 번에 집안의 조명이 켜지고 온도가 조절되는 마법 같은 데이터 흐름의 원리를 기대해 주세요. 프론트엔드 마스터를 향한 여러분의 든든한 임장 파트너, 다음 편에서 뵙겠습니다!