1. 개요
이번 게시물에서는 웹 서버, 웹 어플리케이션(WAS), 그리고 어떻게 활용하면 좋은지에 대해 적도록 할 것이다.
2. 웹 서버
웹 서버(Web Server)는 "정적인 상황"에 사용한다고 생각하면 된다. HTTP 기반으로 동작하며, 정적인 리소스를 주로 제공한다.(정적 HTML, CSS, JS, 이미지, 영상..) 기타 부가기능도 있으며 예시로는 NGINX, APACHE가 있다.
3. 웹 애플리케이션 서버
웹 애플리케이션 서버(WAS, Web Application Server)도 마찬가지로 HTTP 기반으로 동작한다. 이는 웹 서버의 기능을 포함함과 동시에, 정적 리소스를 제공 가능하다. 프로그램 코드를 실행해서 애플리케이션 로직 수행이 가능하며, 이로 인해 동적 HTML, HTTP API(JSON), 서블릿, JSP, 스프링 MVC등의 구조가 사용 가능하다.
ex) 톰캣(Tomcat) Jetty, Undertow
4. 웹 서버 vs 웹 애플리케이션 서버
웹 서버는 정적 리소스를 전달하고, WAS는 애플리케이션 로직이라고 생각하면 된다. 하지만, 웹 서버도 프로그램 실행하는 기능을 포함할때도 있으며, 웹 애플리케이션 서버도 웹 서버의 기능을 제공하여 둘 사이의 경계가 모호한 면이 있다..
자바는 서블릿 컨테이너의 기능을 사용하면 WAS라고 부른다! WAS는 애플리케이션 코드를 실행하는데 더욱 특화되어있다.
(서블릿 없이 자바코드를 실행하는 서버 프레임워크도 있다...)
5. 웹 시스템 구성
1) WAS, DB
- WAS가 정적 리소스, 애플리케이션 로직 모두 제공 가능하므로 WAS와 DB만으로 시스템이 구성 가능하다.
- 하지만 이 경우, 여러 단점이 존재한다.
-> WAS가 너무 많은 역할을 담당하여 서버 과부화가 우려된다.
-> 또한, 리소스가 많이 들어가는 애플리케이션 로직이 간단한 정적 리소스때문에 장애가 발생할 수 있다.
-> WAS가 장애 나면? 오류 화면조차 노출이 불가능해진다!!
2) WEB, WAS, DB
- 정적 리소스는 웹 서버가 처리하는 구조이다.
- 웹 서버는 애플리케이션 로직이 필요한 경우, WAS에 요청을 위임한다.
-> WAS는 중요한 애플리케이션 로직 처리를 전담한다.
- 이렇게 구성할 시, 여러 장점들이 있다.
- 효율적인 리소스 관리
-> 정적 리소스가 많이 사용되면 웹 서버를 증설한다.
-> 애플리케이션 리소스가 많이 사용되면? WAS를 증설한다.
- WAS, DB 장애시 웹 서버가 오류 화면 제공 가능
-> 정적 리소스만 제공하는 웹 서버는 잘 죽지 않기 때문
위 내용은 김영한 님의 인프런 강의 "스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술"의 내용과 강의자료를 토대로 작성된 게시글입니다.
강의 링크:
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
'Web > spring study' 카테고리의 다른 글
[Spring] 서블릿, HttpServletRequest, HttpServletResponse (0) | 2023.01.17 |
---|---|
[Spring] 서블릿, 서블릿 컨테이너 (0) | 2023.01.16 |
[Spring] 빈 스코프 (@Scope) (0) | 2023.01.10 |
[Spring] 스프링 빈 생명주기 (0) | 2023.01.10 |
[Spring] 스프링 빈 조회 (0) | 2023.01.10 |
댓글