깨알지식 - 개발
[Web] Web Server란? Application Server란? (개념 정리)
quokkalover
2022. 3. 26. 20:29
웹서버 개발을 하다보면, 혼용되는 단어들이 꽤 있다. 로드 밸런서, 웹서버 등이 대표적인 예인데, 이번 글에서는 웹서버
와 어플리케이션 서버
를 하드웨어, 소프트웨어, 아키텍처 측면에서 간단하게 정리해보려고 한다.
Web server(웹서버)
웹서버의 개념은 크게 두 가지 측면으로 요약할 수 있다.
- 소프트웨어 측면 : 웹서버는 HTTP와 같은 프로토콜을 통해 넘어온 클라이언트의 요청에 HTML과 같은 웹 페이지로 응답하는 소프트웨어다. 대표적인 예로
nginx
,apache
가 있다. 이 소프트웨어들은 호스팅하고 있는 서버(컴퓨터)에서 웹페이지의 컴포넌트 파일들(html, image, css, javacript 등)에 어떻게 접근하는지를 관리한다. - 하드웨어 측면 : nginx나 apache와 같은 소프트웨어가 실제로 동작하고, 웹 페이지의 데이터를 실제로 저장하는 서버(컴퓨터)를 의미한다. 웹 서버는 인터넷에 연결되어 IP주소로 식별되고, 이 주소를 통해 클라이언트와 연결된다.
Application Server, Web Application
정적인 HTML페이지만 다루는 웹서버는 Application Server가 필요 없다. 하지만 Dynamic하게 클라이언트의 요청을 처리해주어야 하는 웹사이트의 경우에는 위 그림처럼 Web application이 동작하는 Application Server가 필요하다. 물론 한 서버 내에서 웹서버와 웹 어플리케이션이 같이 동작하는 경우도 있기 때문에 하드웨어 측면에서 Application Server와 Web Server를 구분짓기 보다는 소프트웨어 측면에서 Web server와 Web application의 차이를 이해하는 것이 더 중요하다.
application server는 웹서버와 데이터베이스 사이에서 동작하는 서버를 의미한다. Application server에는 web application이 동작하고 있다. 여기서 web application이란 우리가 흔히 사용하는 python, javascript, go와 같은 프로그래밍 언어로 구현되며, runtime libraries그리고 database connector, web server connector를 활용해 웹서버 뒤에서 실제 클라이언트의 요청을 처리해주는 역할을 맡는 프로그램을 의미한다.