[WEB] 웹서버, 앱서버, WAS, APP이란?

chrisjune
3 min readOct 23, 2019

헷갈리는 용어인 웹서버, 앱서버, WAS, 앱에 대하여 알아봅니다.

웹서버

웹 서비스는 HTTP 프로토콜을 이용하여 클라이언트와 서버의 통신을 의미합니다. 클라이언트가 서버에 요청을 하면 서버는 응답을 합니다. 웹서버는 HTTP request를 받고 HTML, CSS, Javascript, Image 등의 정적인 정보를 반환하는 역할을 합니다. 대표적인 웹서버는 IIS, Apache, Nginx, GWS등이 있습니다.

Forward Proxy

클라이언트가 특정 웹서비스에 직접 요청하고 응답을 받는 것이 아니라, 프록시 서버가 대신 요청하고 응답을 클라이언트에 전달(Forward)을 해줍니다. 포워드 프록시는 캐쉬기능이 있기 때문에 자주 사용하는 컨텐츠에 대해서는 빠르게 응답을 할 수 있습니다. 내부 연결사이트를 제한하는 기업환경 또는 군대에서 많이 사용합니다.

Reverse Proxy

HTTP요청을 특정 네트워크 또는 서버로 전달하는 역할을 수행하는 서버입니다. 특히, 외부로 오픈되지 않은 내부 서버에 접근할 수 있도록 요청과 응답을 전달하는 역할을 합니다. 보안을 위하여 내부 네트워크를 분리한 경우 사용합니다.

location /some/path/ {
proxy_pass http://www.example.com/link/;
}
location ~ \.php {
proxy_pass http://127.0.0.1:8000;
}

위의 예시는 Nginx에서 reverse proxy를 설정하는 예입니다.

https://www.techcoil.com/blog/the-reverse-proxy-server/

앱서버 또는 Web Application Server(WAS)

WAS와 앱서버는 동의어입니다. 앱서버는 웹서버와 앱 사이의 동적인 정보를 생성하는 역할을 담당하는 미들웨어입니다. 웹서버는 앱을 알지 못하고, 반대로 앱은 웹서버에 대하여 알지 못합니다. 따라서 앱서버가 가운데에서 중간다리 역할을 한다고 생각하면 이해하기 쉽습니다. Tomcat, uWsgi, WebLogic, Jboss등이 해당합니다. uWsgi는 HTTP request를 python으로, 반대로 python 응답을 웹서버로 전달하여 줍니다.

앱 또는 Web Application

앱은 DB를 질의하고 데이터를 가공하여 제공하는 역할을 담당합니다. Django, Flask, PHP, JSP, ASP등등 예로 들 수 있습니다. 비지니스로직이 앱에서 구현됩니다.

정리

Client — 웹서버 — WAS의 구조

클라이언트에서 서버에 HTTP 요청을 보내면 웹서버가 해당 내용이 정적파일에 대한 요청인지 확인후, 맞으면 그대로 응답합니다. 아니라면 WAS에 요청을 넘깁니다. WAS는 해당 요청을 App이 알 수 있는 형태로 넘기고 App에서 실질적인 데이터를 처리하여 응답합니다.

--

--