Skip to content

HTTP와 웹 아키텍처

이 문서에서 보는 흐름

  • HTTP가 어떤 계층에서 어떤 방식으로 메시지를 주고받는지
  • URL/URI와 리소스를 어떻게 이해하면 좋은지
  • 쿠키, 세션, 3-Tier 아키텍처가 웹 개발과 어떻게 연결되는지

웹의 탄생

웹(Web)을 창시한 사람은 **티모시 버너스 리(Tim Berners-Lee)**이다. 1955년생으로, 유럽 입자물리연구소(CERN)에서 연구원들의 논문 검색 시스템을 구축하면서 오늘날의 웹 기술이 탄생했다.

웹을 이루는 두 축은 다음과 같다.

  • HTML: 문서(HyperText Markup Language)
  • HTTP: 문서를 전송하는 프로토콜(HyperText Transfer Protocol)

초기 웹은 단순한 문서 뷰어였다. 연구자들이 인터넷을 통해 원격지의 논문(HTML 문서)을 열람하는 것이 전부였다.

HTTP 프로토콜의 구조

HTTP는 요청(Request) - 응답(Response) 구조로 동작하는 애플리케이션 계층 프로토콜이다. 전통적인 HTTP/1.1 메시지는 사람이 읽기 쉬운 텍스트 기반이지만, HTTP/2는 바이너리 프레이밍을 사용하고 HTTP/3는 QUIC 위에서 동작한다. 학습 초반에는 "클라이언트가 요청을 보내고 서버가 응답한다"는 큰 흐름을 먼저 잡으면 된다.

HTTP 메서드(Method)

클라이언트가 서버에 요청하는 방법을 메서드라 한다. 실무에서 가장 많이 사용하는 것은 GETPOST이다.

메서드용도비유
GET리소스 조회"이 문서 주세요"
POST서버에 데이터 제출, 처리 요청"이 정보 받아주세요"
HEAD헤더만 요청"문서 크기만 알려줘"
PUT리소스 전체 교체/생성"이 내용을 이 상태로 바꿔줘"
DELETE리소스 삭제 요청"이 항목 지워줘"

실무 API에서는 PUT, DELETE도 널리 사용된다. 다만 브라우저 기본 HTML form은 GET/POST 중심이라 웹 화면에서는 POST + method override 같은 패턴을 쓰기도 한다. 보안은 메서드 자체보다 인증, 인가, 서버 정책으로 통제한다.

HTTP 상태 코드

서버의 응답에는 상태 코드가 포함된다. 이 코드로 요청의 처리 결과를 파악할 수 있다.

코드의미원인
200OK정상 처리
404Not Found요청한 리소스를 찾을 수 없음
500Internal Server Error서버 백엔드(DB, WAS 등)에서 심각한 오류 발생

URL과 URI

웹에서는 URI(Uniform Resource Identifier)로 대상을 식별하고, 그중 위치까지 포함해 표현하는 형태를 URL(Uniform Resource Locator)이라 보면 이해하기 쉽다.

https://www.naver.com:443/news/article.html?id=123
  |         |          |       |              |
프로토콜  호스트명     포트   경로(Path)     쿼리(Query)
  • 프로토콜: http 또는 https
  • 호스트명: www.naver.com (Host Name + Domain Name)
  • 포트: 생략 시 HTTP=80, HTTPS=443
  • 경로: 서버가 해석하는 리소스 식별 경로
  • 쿼리: 추가 파라미터

리소스는 파일만 뜻하지 않는다. HTML 문서, 이미지, CSS 파일뿐 아니라 사용자 1번, 주문 목록, 검색 결과, JSON 응답처럼 URI로 식별되는 대상도 리소스로 볼 수 있다.

HTTP는 Stateless(무상태) 프로토콜이다. 즉, 프로토콜 자체만 보면 각 요청은 서로 독립적이다. 하지만 실제 서비스에는 로그인 상태 유지, 장바구니, 사용자 맞춤 설정처럼 여러 요청을 이어서 해석해야 하는 경우가 많다.

이때 쿠키세션 식별자 같은 메커니즘을 사용해 애플리케이션 차원에서 상태를 이어 붙인다.

저장 위치역할예시
클라이언트 (쿠키)요청 사이에 전달할 식별 정보 저장세션 ID, 토큰, 사용자 설정
서버 (세션 저장소/DB/캐시)실제 상태와 데이터 보관회원 정보, 로그인 세션, 주문 내역

3-Tier 웹 아키텍처

현대 웹 서비스는 3-Tier(3계층) 구조로 구성된다.

Tier역할대표 기술
웹서버리소스 송수신, 정적 파일 제공Apache, Nginx
WAS비즈니스 로직 처리, 동적 문서 생성Tomcat, Spring, Node.js
데이터베이스데이터 저장 및 조회MySQL, PostgreSQL, Oracle

WAS의 동적 문서 생성

정적 HTML은 내용이 고정되어 있지만, WAS는 데이터베이스의 데이터와 템플릿을 결합하여 동적 HTML을 생성한다.

MVC 아키텍처

WAS 내부는 보통 MVC(Model-View-Controller) 패턴으로 구성된다.

구성 요소역할
Model데이터 + 비즈니스 로직 (DB 연동)
View사용자에게 보이는 화면 (HTML 생성)
Controller요청을 받아 Model과 View를 연결하는 제어

APM: 성능 모니터링

웹 서비스의 성능을 모니터링하는 시스템을 **APM(Application Performance Management)**이라 한다. APM은 주로 다음 두 가지를 감시한다.

  1. DB 응답 시간: 데이터베이스 질의에 걸리는 시간
  2. WAS 상태: JVM 모니터링, 메모리 사용량, 스레드 상태

DB 응답이 느려지면 전체 웹 서비스가 느려지고, WAS에서 오류가 나면 500 에러가 발생한다.

핵심 정리

  1. HTTP는 요청-응답 구조의 애플리케이션 계층 프로토콜이다
  2. HTTP/1.1은 텍스트 메시지로 이해하기 쉽고, HTTP/2와 HTTP/3는 전송 형식이 더 현대화되었다
  3. 주요 메서드: GET(조회), POST(제출), PUT/PATCH(수정), DELETE(삭제)
  4. 쿠키는 상태 자체가 아니라 상태를 식별하는 정보를 전달하는 데 자주 쓰인다
  5. 현대 웹 = 3-Tier (웹서버 + WAS + DB)
  6. WAS는 MVC 패턴으로 동적 문서를 생성한다