728x90
HTTP
- Hyper Text Transfer Protocol 의 약자
- HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 응용 계층 프로토콜이다.
- HTTP는 클라이언트-서버 프로토콜이다.
- HTTP Request Message / HTTP Response Message를 통해 정보를 교환한다.
- 구성
- 시작줄 : HTTP method 등 (요청) / status code 등 (응답)
- 헤더 : Content-Type, length 등등 다양한 정보가 존재한다.
- 본문 : 실제 보내고자 하는 데이터 (body)
웹 서버 (Web Server)
- HTTP 기반으로 동작한다.
- 정적 리소스 제공, 기타 부기기능
- 정적(파일) HTML, CSS, JS, 이미지, 영상
- 웹 서버 종류
- NGINX
- APACHE
웹 애플리케이션 서버 (WAS - Web Application Server)
- HTTP 기반으로 동작
- 웹 서버 기능 포함 + (정적 리소스 제공 기능)
- 일반적으로 웹 서버를 개발한다고 하면 WAS를 개발하는 것이라고 보면 된다.
- 프로그램 코드를 실행해서 애플리케이션 로직 수행
- 동적 HTML / HTTP API (JSON)
- 서블릿 / JSP / 스프링 MVC
- 웹 애플리케이션 서버 종류
- 톰캣(Tomcat)
- Jetty
- Undertow
웹 서버, 웹 애플리케이션 서버 (WAS) 차이
- 웹 서버는 정적 리소스(파일) 제공하고 WAS는 애플리케이션 로직까지 실행할 수 있다.
- 사실 둘의 용어의 경계가 모호하다.
- 웹 서버도 프로그램을 실행시키는 기능을 포함한다.
- 웹 애플리케이션 서버도 웹 서버의 기능을 제공한다.
- 자바의 서블릿 컨테이너 기능을 제공하면 WAS
- 서블릿 없이 자바코드를 실행하는 서버 프레임워크도 있긴하다.
- WAS는 애플리케이션 코드를 실행하는데 특화.
- 웹서버는 정적 리소르를 관리하는데 특화
웹 시스템 구성
- WAS, DB 만으로 시스템 구성 가능
- WAS는 정적 리소스, 애플리케이션 로직을 모두 제공한다.
🔍 WAS와 DB 만으로 웹 시스템을 구축할 수 있으나, 그렇지 않도록 하는게 좋다.
- WAS가 너무 많은 역할을 담당해서 서버 과부하 우려가 있다.
- 가장 비싼 애플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있다.
- WAS는 서버 장애시 오류 화면을 띄울 수 없다.
🔍 웹 시스템 구성 → WEB, WAS, DB 로 할 것
- WAS의 부담이 적어지며, 오류 화면을 보여줄 수 있다.
- 정적 리소스는 웹 서버가 처리하도록 한다.
- 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임한다.
- WAS는 중요한 애플리케이션 로직을 처리한다.
- 만약에 API 서버로 화면을 제공하는 것이 아니라 데이터만 주고 받을 경우 웹 서버가 없어도 된다.
💡 효율적인 리소스 관리
- Web 서버와 WAS의 역할을 독립적으로 나누면 효율적인 리소스 관리가 가능하다.
- 정적 리소스가 많이 사용되면 Web 서버를 증설하면 된다.
- 애플리케이션 리소스가 많이 사용되면 WAS를 증설하면 된다.
- HTML을 내려주는 방식이 아닌 JSON 형식의 데이터를 주고 받는 API 서버라면 WAS 하나로 충분하다.
💡 서버 오류시
- 정적 리소스만 제공하는 웹 서버는 잘 죽지 않는다.
- 애플리케이션 로직이 동작하는 WAS 서버는 잘 죽는다.
- 그래서 WAS, DB가 장애시 WEB 서버로 오류 화면을 제공할 수 있다.
728x90
'[ Spring ] > SpringMVC 1편' 카테고리의 다른 글
[Spring] 자바 웹 기술 역사 (0) | 2022.02.12 |
---|---|
[Spring] 서버 사이드 렌더링(SSR), 클라이언트 사이드 렌더링(CSR) (0) | 2022.02.11 |
[Spring] HTML, HTTP API (0) | 2022.02.11 |
[Spring] 멀티 쓰레드 (0) | 2022.02.11 |
[Spring] 서블릿 (0) | 2022.02.11 |