💡 IT 핵심 지식 (Core)/🔗 IT 근본 & 네트워크

브라우저가 웹페이지를 그리는 과정, 쉽게 이해하기: 건축가가 집을 짓는 5단계

praymeyer2025 2025. 12. 1. 07:47
웹 브라우저가 HTML, CSS, JavaScript 코드를 받아 웹 페이지를 화면에 그리는(렌더링) 과정을 '건축가가 집을 짓는 과정'에 비유하여 5단계(설계도 해석, 건축 계획, 배치, 도색 준비, 최종 조립)로 쉽게 설명합니다. DOM Tree, CSSOM Tree, Render Tree의 개념과 성능 저하의 주범인 Reflow 현상을 초보자도 이해할 수 있도록 구성했습니다.

🎨 여러분이 웹 브라우저(크롬, 엣지)를 열고 주소를 입력하는 순간, 화면에는 복잡한 코드가 아닌 아름다운 웹페이지가 나타납니다. 이 마법 같은 일이 순식간에 벌어지는 이유는 브라우저 안에 들어있는 **'렌더링 엔진(Rendering Engine)'**이라는 건축팀 덕분입니다. 렌더링 엔진은 서버에서 받아온 설계도(HTML/CSS/JS 코드)를 바탕으로, 벽돌을 쌓고 페인트를 칠하는 것처럼 체계적인 5단계를 거쳐 최종 웹페이지라는 **'집'**을 지어 올립니다. 오늘은 웹페이지가 완성되는 5단계 건축 과정을 비유로 쉽게 마스터해 봅시다!

✨ 핵심 원리: 웹 페이지 건축 설계도와 건축팀

웹페이지를 짓는 과정은 건축 현장과 매우 유사합니다.

  • HTML: 집의 골격과 **구조(Structural)**를 정의하는 설계 도면입니다. (예: 방의 개수, 창문의 위치).
  • CSS: 집의 장식과 **색상(Aesthetic)**을 정의하는 인테리어 디자인 도면입니다. (예: 벽의 색상, 가구의 배치).
  • 렌더링 엔진 (브라우저): 설계도를 받아 집을 짓는 총괄 건축팀입니다.

이 이미지는 브라우저의 렌더링 엔진이 HTML(구조)과 CSS(디자인) 설계도를 해석하여 웹 페이지라는 건축물을 짓기 시작하는 과정을 시각화합니다.출처:AI이미지 생성도구

👉 관련 글 : DNS는 왜 느려질까? 요청 단계별 병목 이해하기

 

DNS는 왜 느려질까? 요청 단계별 병목 이해하기

DNS(Domain Name System) 요청이 왜 느려지는지 단계별로 분석합니다. DNS 쿼리 과정에 대한 비유를 통해 Cache Miss, TTL 만료, Root/TLD 네임 서버의 과부하, 그리고 권한 있는 네임 서버의 설정 오류가 발생

praymeyer2025.tistory.com

 

🔥 1. 1단계: 설계도 해석 (Parsing & DOM/CSSOM Tree)

건축팀이 가장 먼저 할 일은 설계도를 해석하여 건축 가능한 형식으로 바꾸는 것입니다.

  • HTML 해석 (DOM Tree): 🏗️ 건축팀은 HTML 설계도(코드)를 읽어, 집의 모든 요소(방, 문, 창문 등)를 부모-자식 관계의 **'구조적인 나무(DOM Tree)'**로 만듭니다. 이 나무는 집의 골조 순서를 나타냅니다. (비유: 설계 도면의 목록별 구조를 파악하는 과정)
  • CSS 해석 (CSSOM Tree): 🌈 동시에 인테리어 디자이너들은 CSS 디자인 도면을 읽어, 각 구조에 어떤 스타일(색, 크기)을 적용할지 정리하는 또 하나의 **'스타일 나무(CSSOM Tree)'**를 만듭니다. (비유: 벽지, 페인트, 가구 등 디자인 요소를 파악하는 과정)
  • 병목 요소: 💡 만약 HTML 중간에 외부 CSS 파일이 있다면, 브라우저는 그 CSS 파일 다운로드가 완료될 때까지 HTML 해석을 잠시 멈춥니다. (비유: 건축팀이 벽돌을 쌓다가 "벽지 색깔이 결정될 때까지 잠시 대기!"라고 외치는 상황)

🧘 2. 2단계: 건축 계획 수립 (Render Tree)

두 개의 나무(DOM Tree와 CSSOM Tree)가 완성되면, 건축팀은 이 둘을 합쳐서 **'실제로 지을 집의 모습'**을 결정합니다.

  • Render Tree 생성: 🧘 DOM Tree의 모든 노드에 CSSOM Tree의 스타일을 결합하여 **'렌더 트리(Render Tree)'**를 만듭니다. 이 트리는 화면에 보여야 할 요소만 포함합니다. (비유: 벽지 색깔가구 크기까지 모두 적용된 최종 건축 계획서를 만드는 것)
  • 무시되는 요소: display: none 속성처럼 화면에 보이지 않는 요소는 이 Render Tree에서 아예 제외됩니다. (비유: 설계도에 있었지만, 실제로는 짓지 않기로 결정된 창고 공간을 계획서에서 삭제하는 것)

이 이미지는 구조와 스타일이 결합되어 화면에 보일 요소만을 담은 최종 건축 계획, 즉 렌더 트리가 생성되는 과정을 시각화합니다.출처:AI이미지 생성도구

💪 3. 3단계: 배치 (Layout/Reflow)

이제 집을 짓기 위한 각 요소의 정확한 위치와 크기를 계산합니다.

  • Layout/Reflow: 💪 Render Tree의 각 요소(노드)가 화면의 어느 위치에 놓여야 하고, 가로/세로 크기는 얼마가 되어야 하는지 정확한 픽셀 값으로 계산합니다. (비유: 건축 현장에서 **'이 방은 가로 3m, 세로 4m', '창문은 바닥에서 1.5m 높이'**라고 줄자와 픽셀 단위로 정확히 재는 것)
  • Reflow 현상: 💡 만약 페이지가 로드된 후 JavaScript가 어떤 요소의 크기를 바꾸면, 주변의 모든 요소가 다시 배치되어야 합니다. 이 과정을 **'리플로우(Reflow)'**라고 하며, 성능 저하의 주범입니다. (비유: 이미 지은 방 하나의 크기를 바꾸면, 옆 방, 복도, 심지어 지붕까지 모든 것을 다시 측정하고 재배치해야 하는 상황)

이 이미지는 브라우저가 레이아웃(배치) 단계에서 DOM 요소의 정확한 픽셀 크기와 좌표를 계산하는 과정을 시각화하며, 성능에 영향을 미치는 리플로우 현상을 암시합니다.출처:AI이미지 생성도구

4. 4단계: 도색 준비 (Paint Setup)

위치와 크기가 결정되면, 이제 실제로 페인트를 칠하고 장식을 붙일 준비를 합니다.

  • Paint: 🎨 레이아웃 단계에서 결정된 위치와 크기를 바탕으로, 각 요소를 색상, 테두리, 그림자 등 모든 시각적인 스타일로 채우기 시작합니다. (비유: 구조물에 벽지를 바르고, 페인트를 칠하고, 몰딩을 붙이는 작업)
  • 레이어 분할 (Layering): 브라우저는 복잡한 요소를 효율적으로 처리하기 위해 페이지를 여러 개의 **레이어(Layer)**로 나눕니다. (비유: 배경 레이어, 메인 콘텐츠 레이어, 팝업 레이어 등 여러 장의 투명 필름에 나누어 그리는 것)

이 이미지는 브라우저가 화면을 페인트(도색)하기 위해 요소를 여러 개의 독립된 레이어로 분할하여 효율적으로 처리하는 과정을 시각화합니다.출처:AI이미지 생성도구

5. 5단계: 최종 조립 및 전시 (Compositing)

마지막 단계는 준비된 모든 요소를 사용자 화면에 보여주는 것입니다.

  • Compositing: 🖼️ 페인트가 완료된 모든 레이어(투명 필름)를 정확한 순서대로 겹쳐서 하나의 최종 이미지를 만듭니다. (비유: 모든 인테리어가 끝난 여러 개의 투명 필름을 정확한 순서대로 합쳐서 하나의 완벽한 집을 완성하고 사용자에게 전시하는 것)
  • 성능 최적화: 💡 이 합성(Compositing) 단계는 GPU(그래픽 처리 장치)를 사용하여 매우 빠르게 처리됩니다. 요소의 **위치만 움직이는 애니메이션(Translate)**은 레이아웃과 페인트를 다시 할 필요 없이 합성만 다시 하면 되므로 가장 빠릅니다. (비유: 집의 구조는 그대로 두고 가구의 위치만 살짝 옮기는 것이 가장 빠른 보수 작업인 것과 같습니다

이 이미지는 모든 레이어가 합쳐져 완성된 웹 페이지가 사용자 화면에 최종적으로 전시되는 합성(Compositing) 과정을 시각화하며, 렌더링 과정의 마무리를 나타냅니다.

✅ 요약 및 개선 팁! 💯

🏠 단계 🚀 비유적 표현 💡 핵심 역할 ✨ 개선 팁 (성능 최적화)
1. 설계도 해석 도면 및 디자인 파악 DOM Tree와 CSSOM Tree 생성 CSS를 HTML 상단에, JS를 HTML 하단에 배치(파싱 방지)
2. 건축 계획 최종 계획서 작성 Render Tree 생성 보이지 않는 요소(display: none)는 파악 단계에서 제외됨
3. 배치 줄자로 크기/위치 측정 요소의 정확한 픽셀 좌표 계산 **리플로우(Reflow)**를 유발하는 width, height 변경 최소화
4. 도색 준비 투명 필름에 도색 레이어 분할 및 시각적 스타일 입히기 복잡한 스타일은 GPU 사용을 유도하는 CSS Transform 활용
5. 최종 조립 필름 겹쳐 전시 모든 레이어를 합쳐 화면에 출력 transform: translate() 등 **합성(Compositing)**만 필요한 애니메이션 사용

📚 출처

  • 브라우저 렌더링 엔진 내부 동작 원리 문서: Blink, Gecko 엔진 동작 방식
  • 웹 성능 최적화(Web Performance Optimization) 가이드: Reflow 및 Repaint 최적화 기술
  • HTML/CSS/JavaScript 표준 명세: 브라우저 파싱 및 스타일 계산 규약

브라우저의 렌더링 과정은 단순해 보이지만, 설계 해석, 계획, 배치, 도색, 조립이라는 복잡하고 체계적인 과정을 거칩니다. 이 건축 과정을 이해하면, 어떤 코드가 브라우저에 부담을 주는지 알게 되어 성능 좋은 웹페이지를 만들 수 있는 개발자 필수 역량을 갖추게 됩니다.

 

👉 이 글은  
[당신이 모르는 인터넷! 이 3요소 없인 접속 불가능]  
허브 글에서 인터넷 구조를 이해하기 위해 함께 읽으면 좋은 글입니다.