강의 chap1-1
웹 서버, 웹 애플리케이션 서버
1. http
- 웹은 모두 http 기반으로 통신한다.
- 클라이언트가 url -> 인터넷을 통해 서버로 전달 -> 서버에서 http 전송해줌
- 거의 모든 형태의 데이터는 http 프로토콜을 사용한다.
2. 웹 서버(Web Server)
- http 기반으로 동작한다.
- 정적 리소스(정적 html, css, js, 이미지, 영상) 제공, 기타 부가기능 제공한다.
- 정적인 파일들을 서빙하는 것이다. 즉, 다르게 변경 불가능하다.
- 예) NGNX, APACHE
3. 웹 애플리케이션 서버(WAS – Web Application Server)
- http 기반으로 동작한다.
- 웹 서버 기능 포함 + 정적 리소스 제공 가능
- 특이사항) 사용자의 요청에 따라 프로그램 코드를 실행해서 애플리케이션 로직을 수행할 수 있다.
- 예) Tomcat, Jetty, Undertow
4. Web Server와 WAS 차이
- 웹 서버는 정적 리소스 제공, WAS는 애플리케이션 로직까지 실행할 수 있다.
- 사실 플러그인 설치를 통해 웹 서버도 프로그램 실행 기능을 포함할 수 있다.
- 자바는 서블릿 컨테이너 기능을 제공하면 WAS이다.
- WAS는 애플리케이션 코드를 실행하는데 더 특화되어 있다.
5. 웹 시스템 구성(안 좋은 예)
- WAS, DB
- WAS가 너무 많은 역할(애플리케이션 로직, 정적인 리소스 등)을 담당하면 서버에 과부하가 올 수 있다.
- 중요) 시스템적으로 정적 리소스는 값이 싸다. 하지만 애플리케이션 로직은 비싸다.
- WAS가 만약 장애가 발생하면 오류 화면도 노출할 수 없다.(웹 서버에 접근조차 안 된다.)
6. 웹 시스템 구성
- Web Server를 앞에다 두고 정적 리소스를 앞에서 다 처리한다.
- 동적인 리소스 처리가 필요하면 WAS에 요청해서 해결한다.
- WAS는 중요한 애플리케이션 로직을 처리하는 것에만 전담시킬 수 있다.
- 효율적인 리소스 관리가 가능해진다.
- 정적 리소스가 많이 사용되면 WEB 서버 증설하고 애플리케이션 리소스가 많이 사용되면 WAS를 증설하면 된다.
- 정적 리소스만 제공하는 Web Server는 잘 죽지 않는다. 하지만 WAS는 잘 죽는다.
- WAS, DB 장애가 일어나도 Web Server가 오류 화면을 제공할 수 있다.(오류화면 HTML을 보여준다.)
출처
인프런 강의 - 김영한
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard