CHAPTER 1 / 8
문서 웹에서 동적 웹으로
웹의 첫 약속은 화면 기술이 아니라 주소로 자원을 요청하고 응답받는 공통 규칙이었습니다.
이 개념이 필요해진 배경
초기 웹은 연결된 문서를 배포하는 데 강했습니다. URL, HTTP, HTML의 단순한 조합은 작성자와 독자가 다른 환경에서도 같은 문서를 찾고 읽게 했지만, 사용자마다 달라지는 데이터와 즉각적인 입력 반응은 서버가 새 문서를 만들어 돌려주는 방식으로 처리해야 했습니다.
CGI와 server-side template은 요청마다 프로그램을 실행하거나 HTML을 조립해 동적 화면을 만들었습니다. 계산과 데이터 접근이 서버에 모여 배포는 단순했지만, 작은 상호작용도 전체 페이지 왕복이 필요했고 화면 코드와 업무 규칙이 한 파일에 뒤섞이기 쉬웠습니다.
JavaScript가 브라우저에서 문서를 바꾸고 비동기 요청을 보내면서 일부 화면만 갱신할 수 있게 됐습니다. 이것은 서버를 없앤 변화가 아니라, 사용자 반응을 브라우저로 옮기고 서버는 데이터와 규칙을 제공하도록 책임을 재배치한 변화였습니다.
웹의 첫 약속은 화면 기술이 아니라 주소로 자원을 요청하고 응답받는 공통 규칙이었습니다.
브라우저가 필요한 데이터만 다시 요청하고 DOM의 일부를 갱신해 전체 문서 왕복을 줄입니다.
JavaScript를 끈 상태, 느린 네트워크와 뒤로 가기에서 핵심 작업이 어떻게 달라지는지 관찰합니다.
구체적인 시스템에서 따라가기
예를 들어 1990년대의 회사 소개 페이지는 모든 방문자에게 같은 파일을 보내면 충분했습니다. 그러나 장바구니, 게시판, 인터넷 뱅킹처럼 사용자마다 다른 상태가 필요해지자 서버는 요청의 cookie와 session을 읽고 database 결과를 HTML에 끼워 넣어야 했습니다. 이때 화면은 여전히 완성된 문서였지만, 문서를 만드는 과정이 파일 복사에서 프로그램 실행으로 바뀌었습니다.
이 역사를 알면 정적 페이지와 동적 애플리케이션을 낡음과 새로움으로 나누지 않게 됩니다. 변경이 드문 도움말은 미리 만든 HTML이 더 빠르고 고장 지점도 적습니다. 반대로 실시간 재고나 개인 권한은 요청 시점의 계산이 필요합니다. 설계자는 페이지마다 누가 내용을 만들고, 언제 다시 만들며, 실패했을 때 어떤 오래된 결과까지 허용할지를 먼저 결정해야 합니다.
선택 기준과 실패 경계
상태가 두 장소에 생기므로 URL, 뒤로 가기, 오류 복구와 접근성을 별도로 설계해야 합니다.
피해야 할 오해: 동적 웹은 항상 JavaScript SPA여야 한다는 생각은 틀립니다.
직접 검증하기
JavaScript를 끈 상태, 느린 네트워크와 뒤로 가기에서 핵심 작업이 어떻게 달라지는지 관찰합니다.
이 장의 공식 출처
본문의 기술 사실은 다음 1차 자료를 기준으로 검토했습니다. 도해와 비교는 이 자료를 바탕으로 저자가 재구성했습니다.
- Ecma TC39, 「ECMAScript Language Specification」검토일 2026-08-28 · 적용 범위 Living specification
- Vercel, 「Linking and Navigating」검토일 2026-08-28 · 적용 범위 Next.js App Router