본문 바로가기
IT개발/Tech Notes

웹 개발 초보 필수 가이드: 정적 vs 동적 프로그램 실행 차이와 localhost의 모든 것

by 시간기억자 2025. 10. 31.
반응형

📘 들어가며

웹 개발을 처음 배우는 사람이라면 누구나 한 번쯤 이런 의문을 가집니다.
“HTML 파일은 더블클릭만 해도 바로 브라우저에서 열리는데, 왜 PHP나 React는 꼭 ‘localhost:3000’ 같은 주소로 실행해야 하지?”

처음엔 단순히 “이건 정적이고, 저건 동적이야”라고만 설명을 듣지만,
이 둘의 차이를 정확히 이해하면 웹 개발의 근본 구조가 훨씬 명확하게 보입니다.

오늘은 초보자도 이해할 수 있도록
정적 웹과 동적 웹의 차이,
그리고 localhost로 실행하는 이유,
포트(port) 개념, 임시 로컬 서버의 역할을 완전히 정리해보겠습니다.


⚙️ 1. 정적 웹이란 무엇인가?

정적(Static) 웹이란, 서버에서 추가적인 처리가 필요 없이 그대로 브라우저에 전달되는 웹 페이지를 말합니다.

대표적인 예가 HTML, CSS, JavaScript 파일입니다.
이 파일들은 그 자체로 완성된 문서이기 때문에,
그냥 더블클릭해서 열기만 해도 브라우저가 바로 표시할 수 있습니다.

📂 project/
 ┣ index.html
 ┣ style.css
 ┗ script.js

예를 들어 index.html 파일을 더블클릭하면,
브라우저는 해당 파일을 그대로 읽어서 렌더링합니다.
별도의 서버가 필요하지 않습니다.

즉, 정적 웹은 **“그냥 파일을 보여주는 구조”**입니다.
브라우저는 단순히 파일을 읽고 표시하는 ‘뷰어(viewer)’ 역할만 하죠.


⚙️ 2. 동적 웹이란 무엇인가?

반대로 동적(Dynamic) 웹은 브라우저에 보여지는 결과물이
서버에서 실행된 결과로 만들어지는 웹입니다.

예를 들어 PHP를 보면 아래처럼 작성할 수 있습니다.

<?php
  echo date("Y-m-d H:i:s");
?>
 

이 코드를 브라우저에서 그냥 더블클릭해서 열면 어떻게 될까요?
결과는 <?php echo date("Y-m-d H:i:s"); ?> 그대로 나옵니다.
왜냐하면 브라우저는 PHP 문법을 해석할 능력이 없기 때문입니다.

PHP는 서버에서 먼저 실행되어야 하는 언어입니다.
서버가 echo date() 코드를 실행해서
그 결과(현재 시각)를 HTML로 변환한 뒤,
그 완성된 HTML을 브라우저로 보내줘야 비로소 사람이 볼 수 있습니다.

 

즉, 동적 웹은 ‘서버 → 실행 → 결과 전달’의 과정이 필요한 웹입니다.


💡 3. 그래서 “localhost”가 필요한 이유

그렇다면 서버가 필요하다면, 개발할 때마다 실제 인터넷 서버에 올려야 할까요?
그건 너무 번거롭죠.

그래서 개발 단계에서는 **“내 컴퓨터 안에 임시 서버”**를 띄워서 실행합니다.
그게 바로 localhost입니다.

  • localhost는 “내 컴퓨터 자신”을 의미하는 가상 주소(127.0.0.1) 입니다.
  • 즉, 내가 내 컴퓨터 안에서 서버를 띄워놓고 그걸 브라우저로 접속하는 것입니다.

예시로 PHP나 React를 실행할 때 보면 이런 주소가 보이죠.

http://localhost:3000
http://127.0.0.1:8080
 

이건 “내 컴퓨터 안에서 서버가 열려 있고, 그 서버를 3000번 포트로 접속 중”이라는 뜻입니다.

즉, 내 컴퓨터가 서버처럼 동작하고, 브라우저는 그 서버에 접속해 결과를 확인하는 구조입니다.


🔌 4. 포트(Port)란 무엇인가?

그렇다면 localhost:3000에서 :3000은 뭘까요?

**포트(port)**는 “한 대의 컴퓨터에서 여러 개의 프로그램이 동시에 네트워크 통신을 할 수 있도록 구분하는 통로 번호”입니다.

  • React 개발 서버는 보통 3000번 포트
  • Vue는 8080번 포트
  • PHP 내장 서버는 8000번 포트

이런 식으로 각 서버 프로그램은 자신만의 포트 번호를 사용해 통신합니다.
그래서 같은 localhost라도 포트 번호가 다르면 전혀 다른 서버에 접속하는 셈입니다.

예시:

http://localhost:3000 → React 개발 서버
http://localhost:8080 → Vue 개발 서버
http://localhost:8000 → PHP 내장 서버
 

🧠 5. 정리하자면…

구분 정적 웹 동적 웹
실행 방식 파일 그대로 표시 서버가 코드를 실행 후 결과 전달
예시 HTML, CSS, JS PHP, Node.js, React, Vue
서버 필요 여부 ❌ 없음 ✅ 필요
실행 방법 파일 더블클릭 localhost로 서버 실행
브라우저 역할 단순 표시(Viewer) 결과 수신(Client)

정적 웹은 단순히 “파일을 보여주는 웹”이라면,
동적 웹은 “서버가 코드를 실행해서 결과를 만들어주는 웹”입니다.

이 차이를 이해하면 “왜 PHP나 React를 그냥 더블클릭해서 열면 안 되는지”,
“왜 항상 localhost로 실행하는지”가 명확해집니다.


🧩 6. 실무에서의 의미

이 구조는 실제 배포 단계에서도 그대로 이어집니다.

  • 개발 단계: localhost에서 로컬 서버로 실행
  • 운영 단계: **실제 웹 서버(Apache, Nginx 등)**에서 실행

즉, 로컬 서버는 실제 서버의 축소판(미니 서버) 역할을 하는 것입니다.
그래서 우리가 개발 중에 npm run dev나 php -S localhost:8000 명령어로 실행하면,
그게 바로 “임시 서버를 켜서 동적 코드를 실행시키는 과정”입니다.


🚀 마무리

정적 웹과 동적 웹의 차이를 이해하면,
“왜 어떤 건 그냥 열리는데, 어떤 건 서버를 돌려야 하는지” 완벽히 감이 잡힙니다.

  • HTML은 단순히 보여주기만 하면 되는 문서
  • PHP나 React는 “실행 결과”를 보여줘야 하는 코드

즉, 동적 웹의 핵심은 **“코드가 서버에서 실행된다”**는 것입니다.

이 개념이 명확해지면,
로컬 서버, 포트, 네트워크 요청, API 호출 등도 한층 쉽게 이해할 수 있게 됩니다.

반응형

댓글