Web Server
웹 서버는 html, css과 같이 정적인 페이지를 처리한다.
정적 콘텐츠는 사용자가 바뀌어도 바뀌지 않는 콘텐츠를 의미한다.
- http 프로토콜을 통해 전송한다.
- 사용자가 요청을 하면 명령을 처리하고 다시 사용자에게 답변을 보낸다.
- 사용자의 요청 중 웹서버가 처리할 수 없는 일은 WAS (톰캣 등)으로 처리하도록 넘겨준 뒤 처리 결과를 받아와 사용자에게 전달해준다.
- 대표적인 구축 소프트웨어에는 Apache, Nginx, Windows server OS 용 IIS 가 있다.
WAS (Web Application Server)
동적 콘텐츠는 사용자가 바뀌면 바뀌어야 하는 DB 조회나 다양한 로직 처리를 요구하는 콘텐츠이다.
웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크, 미들웨어로 볼 수 있다. ( php, jsp, asp 등 이처럼 중간에 있는 것들을 미들웨어라고 한다.)
WAS는 동적 서버 콘텐츠를 수행하는 것으로 정적인 콘텐츠를 처리하는 웹 서버와 구분된다. 데이터베이스 서버와 같이 수행된다.
- 클라이언트/서버 환경보다는 웹 환경을 구현하기 위한 미들웨어
- Http 세션 처리를 위한 웹 서버 기능뿐만 아니라 미션 - 크리티컬 한 기업 업무까지 Java, EJB 컴포넌트 기반으로 구현이 가능하다.
- 대표적인 구축 소프트웨어에는 Apache 재단의 Tomcat, Tmax 사의 Jeus, IBM 사의 Web Sphere와 Open source project인 Node.js 등이 있다.
간단한 도식도를 나타내어 보면 밑의 내용처럼 나타낼 수 있겠다.
하지만 위와 같은 모습이 아닌 Web Service의 Architecture는 3가지 모습 정도를 할 수 있다.
1. Client - Web Server - DB
2. Client - WAS - DB
3. Client - Web Server - WAS - DB
여기서 한 가지 의문이 들 수 있는데 Web server의 확장된 개념이라고 생각할 수 있는 WAS에서 Web server의 역할까지 해도 문제가 없는 것을 왜 3번의 구조처럼 분산시켜놓는지를 생각할 수 있다. 하지만 여러 가지 이유로 이 두 가지는 분리해서 사용하는 것이 더욱 효율적이라고 생각할 수 있다.
1. 서버의 부하 방지의 관점
2. 물리적인 기능 분리로 인하여 보안 강화
3. 여러 대의 WAS를 연결 가능
4. 여러 웹 애플리케이션 서비스 가능
등등의 이유로 분리시키는 것에 대한 장점이 있으며 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 Web Server와 WAS를 분리한다.
APACHE
아파치 소프트웨어 재단의 오픈소스 프로젝트이다. 클라이언트 요청이 왔을 때만 응답하는 정적인 페이지에 사용된다.
요즘에는 대체되는 개념으로 Nginx와 비교가 많이 되고 있다.
대표적인 웹서버이다.
Tomcat
동적인 웹을 만들기 위한 것이다. 웹 컨테이너, 서블릿 컨테이너라고도 불린다. 웹 서버에서 정적으로 처리해야 할 데이터를 제외한
JSP, ASP, PHP 등은 톰캣에게 전달한다.
톰캣이 아파치의 기능 일부를 가져와서 제공하기 때문에 아파치 톰캣이라고 붙여서 쓰기도 한다.
대표적인 WAS이다.
참고 블로그 : https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
'ComputerScience' 카테고리의 다른 글
[3분 지식] coroutine은 쓰레드 인가? (부제 : 프로세스와 쓰레드의 차이) (0) | 2023.04.23 |
---|---|
[3분지식] Shell (0) | 2023.04.19 |
[3분 CS지식] Nginx 요약정리 (0) | 2022.07.17 |
[3분 CS지식] Immutable과 Mutable (0) | 2022.06.08 |
[3분 CS지식] CORS (0) | 2022.05.18 |