| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- DI
- CORS
- AWS
- 서블릿 컨테이너
- @ComponentScan
- JPQL
- redis
- 컨테이너
- 스프링 부트
- Routing Key
- Spring Container
- JWT
- Dead Letter Queue
- JPA
- MSA
- JdbcTemplate
- securitycontextholderfilter
- 지연 로딩
- dockerhub
- 페이징
- docker
- kafka
- Spring
- mybatis
- @Transactional
- 쿠버네티스
- docker compose
- Spring Data JPA
- DLQ
- Web
- Today
- Total
look-forest
웹 서버와 웹 애플리케이션 서버 본문
이번 시간에는,
웹 서버와 웹 애플리케이션 서버는 무엇이고, 어떻게 다른지에 대해 알아보겠다.
그 후 웹 시스템이 어떻게 구성되는지도 살펴보겠다.
HTTP
최근에는, 데이터를 주고받을 때 대부분 HTTP 프로토콜 기반으로 동작한다.
심지어 서버간에 데이터를 주고 받을 때도 대부분 HTTP를 사용한다.
HTTP 메시지에 모든 것을 담아 전송한다.
- HTML, TEXT
- IMAGE, 음성, 영상, 파일
- JSON, XML (API)
Web Server와 WAS
Web Server
HTTP 기반으로 동작하며, 정적 리소스를 제공한다. (정적 HTML, CSS, JS, 이미지, 영상)
예) NGINX, APACHE

Web Application Server (WAS)
프로그램 코드를 실행해서 애플리케이션 로직을 수행한다.
- HTTP 기반으로 동작하며, 웹 서버의 기능을 포함한다.
- 동적 HTML, HTTP API(JSON)은 WAS를 통해서 제공된다.
- 서블릿, JSP, 스프링 MVC는 WAS에서 동작한다.
예) Tomcat, Jetty, Undertow

※ 자바는 서블릿 컨테이너 기능을 제공하면 WAS라고 한다.
웹 서버와 웹 애플리케이션 서버의 차이
핵심 차이: 웹 서버는 정적 리소스(파일), WAS는 애플리케이션 로직
그러나 사실은 둘의 경계가 모호하다.
웹 서버도 프로그램을 실행하는 기능을 포함하기도 하며, WAS도 웹 서버의 기능을 제공한다.
그냥 WAS는 애플리케이션 코드를 실행하는데 더 특화되어 있다고 이해하자.
웹 시스템의 구성
웹 시스템의 구성 - WAS, DB
WAS, DB 만으로 시스템 구성이 가능하다.
WAS는 정적 리소스, 애플리케이션 로직 기능을 모두 제공하기 때문이다.

그러나, WAS가 너무 많은 역할을 담당하고 있다. 서버 과부하가 우려된다.
이 때문에 가장 중요한 애플리케이션 로직 수행이 어려울 수 있다.
또한 WAS 장애 시 오류 화면도 노출 조차도 불가능한 구조이다.
웹 시스템의 구성 - Web Server, WAS, DB
정적 리소스는 웹 서버가 처리하고, WAS는 중요한 애플리케이션 로직 처리를 전담하도록 분업화한 구조.
웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임하면 된다.

# 장점
1. 이런 구조는 효율적인 리소스 관리를 가능케한다.
정적 리소스가 많이 사용되면 Web Server를 증설하면 되고,
애플리케이션 리소스가 많이 사용되면 WAS를 증설하면 된다!

2. WAS, DB 장애 시 Web Server가 오류 화면을 제공할 수 있다.
정적 리소스만 제공하는 웹 서버는 잘 죽지 않고,
애플리케이션 로직이 동작하는 WAS 서버는 오류로 잘 죽는다.

※ CGI(Common Gateway Interface)
- 동적인 데이터를 HTML에 삽입하기 위해 결과값을 HTML 형태로 웹 데몬에 전달
- CGI를 프로그래밍 언어 형태로 만든 것이 PHP, JSP, ASP
참고 자료 & 이미지 출처
스프링 MVC 1편(김영한 님)
'Web > 웹 애플리케이션 이해' 카테고리의 다른 글
| CSR과 SSR (0) | 2021.06.02 |
|---|---|
| Server는 무엇을 serve 하는가? (0) | 2021.06.02 |