😀 Jerry/면접 질문

[1분 면접] SSR과 CSR 차이점

Jerry_K 2025. 3. 4. 13:20

📌 면접 답변

SSR(Sever Side Rendering)

  • 서버는 CSS까지 모두 적용하여 렌더링 준비를 마치고 HTML과 JS 코드 응답
  • 모든 데이터가 이미 HTML 담긴 채로 브라우저에 전달 
  • 때문에 SEO에 유리
  • 사용자는 JS 코드 다운 전에 이미 렌더링 된 HTML 볼 수 있어 초기 구동 속도 빠름

 

코드 예시

/ssr-example
  ├── server.js
  ├── views
      ├── index.ejs
// server.js
const express = require("express");
const app = express();

app.set("view engine", "ejs"); // EJS 템플릿 엔진 설정

app.get("/", (req, res) => {
    res.render("index", { message: "서버에서 미리 생성한 HTML" });
});

app.listen(3000, () => console.log("서버 실행 중: http://localhost:3000"));

 

<!-- views/index.ejs -->
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>SSR Example</title>
</head>
<body>
    <h1><%= message %></h1> <!-- 서버에서 미리 HTML을 생성 -->
</body>
</html>

 

  1. SSR에서는 서버가 HTML을 미리 생성해서 브라우저에 보냄
  2. 브라우저는 받은 HTML을 바로 렌더링 할 수 있음 (JS 실행 없이 화면 보임)
  3. 추가적인 기능을 위해 브라우저에서 JS 실행 될 수도 있음

 

 

CSR(Client Side Rendering)

  • 클라이언트가 서버에 컨텐츠 요청하면, 서버는 빈 뼈대의 HTML (index.html) 응답
  • 이후 브라우저는 JS를 실행하여 HTML을 동적으로 생성
  • 동적으로 DOM을 생성하는 시간을 기다려야 하기 떄문에 초기 로딩 속도 느림
  • 로딩 이후 페이지 일부 변경할 때, 서버에 해당 데이터만 요청하면 되기 때문에 구동 속도 빠름
  • 서버 측의 부하가 적고, 클라이언트 측에서 연산과 라우팅 등을 직접 처리
  • 사용자 인터랙션이 많은 웹앱(Notion, Trello 등)에서는 CSR이 효율적 

 

코드 예시

/csr-example
  ├── index.html
  ├── app.js
<!-- index.html -->
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>CSR Example</title>
</head>
<body>
    <div id="root"></div> <!-- 처음에는 비어 있음 -->
    <script src="app.js"></script> <!-- JavaScript 실행 후 HTML 생성 -->
</body>
</html>
// app.js
document.addEventListener("DOMContentLoaded", () => {
    const root = document.getElementById("root");

    // 서버에서 데이터를 가져온다고 가정 (여기서는 setTimeout으로 흉내냄)
    setTimeout(() => {
        root.innerHTML = "<h1>CSR 방식으로 JavaScript가 HTML을 생성</h1>";
    }, 1000); // 1초 후에 데이터를 받아온 것처럼 HTML 생성
});
  1. 브라우저가 서버에서 빈 HTML과 JS 파일을 받음
  2. 브라우저가 받은 JS가 실행되면서 HTML을 동적으로 생성
  3. 브라우저가 동적으로 생성된 HTML을 렌더링

 

HTML을 생성하는 주체가 브라우저의 JS이면 CSR

HTML을 생성하는 주체가 서버이면 SSR


📌 내 답변

서버 사이드 렌더링은 서버에서 요청에 대한 응답을 렌더링하여 클라이언트에게 보내는 것이고,

클라이언트 사이드 렌더링은 서버가 아니라 클라이언트가 요청을 렌더링하는 방식이다.

 

→ 설명이 좀 부족했다. 클라이언트와 서버가 뭐를 렌더링하는지 ?  또는 장단점이 무엇인지 


📌 추가 내용

SPA (Single Page Application)

  • 하나의 페이지로 구성된 웹 애플리케이션
  • 클릭한 부분만 바뀌는 방식

 

MPA (Multi Page Application)

  • 탭을 이동할 때마다 서버로부터 새로운 HTML을 받아옴
  • 페이지 전체를 렌더링하는 방식

 

 

매일메일 - 기술 면접 질문 구독 서비스

기술 면접 질문을 매일매일 메일로 보내드릴게요!

www.maeil-mail.kr

매일 메일의 면접 질문 정리