새소식

Computer science - 2023.04.28

[Web] Web Server(웹 서버)와 CGI, Web Application Server(WAS, 앱 서버) 알아보기

  • -

Web Server(웹 서버)

Client 요청과 Web Server 응답 개요

클라이언트로부터 HTTP 요청을 받아 Static pages(정적 페이지)를 제공하거나, Dynamic Pages(동적 페이지) 요청을 WAS에 전달 하는 서버프로그램을 의미한다. 서버가 설치된 PC 자체를 가리키는 말이기도 하다.

 

  • 예시) Apache, Nginx

 

Common Gateway Interface(CGI)


CGI = Web Server와 Program 사이 프로토콜

Web Server(웹 서버)와 Application Program 사이 정보를 주고 받는 프로토콜이다. CGI를 통해 웹 서버가 Dynamic Pages(동적 페이지) 구성을 할 수 있다. 프로토콜이기 때문에 어떤 언어로도 작성될 수 있다.

CGI : 클라이언트 요청에 따라 프로세스를 생성

CGI는 클라이언트 요청을 처리 하기 위해 매번 Process(프로세스)를 새로 생성한다. 따라서 많은 요청이 발생할 경우 메모리 사용량이 커지는 문제가 발생한다.

 

CGI 문제점 보완 → 처리 프로세스 상주


Java의 servlet은 Thread(스레드)로 처리해서 개선

요청마다 프로세스를 새로 생성하기 때문에 메모리 사용량이 커지는 것이 CGI의 문제였다. 이를 해결하기 위해 웹 서버에 Interpreter(인터프리터) 프로세스를 상주 시켜 성능을 개선했다.

 

Web Application Server(WAS, 앱 서버)


WAS 개요

웹 서버와 달리 Dynamic Pages(동적 페이지)를 전달해줄 수 있는 서버프로그램을 의미한다. WAS는 CGI 프로토콜을 활용해 Application 사이 통신으로 동적 페이지를 제공한다. 따라서 WAS = Web Server + CGI 이다. 다만 일반적으로 WAS를 얘기할 때는 Web Server(CGI) + Application 까지 포함된 개념을 뜻한다.

  • WSGI : Python 전용 CGI 중 하나

 

왜 WAS랑 웹 서버 함께 사용?!


위 그림을 보면 웹 서버(Nginx)와 WAS(WSGI)가 함께 존재하는 것을 확인할 수 있다. 왜 굳이 서버를 2개나 쓰냐 하면, 웹 서버(Nginx)를 Reverse Proxy 서버로서 사용할 수 있기 때문이다. Reverse Proxy 서버 사용 시 다음과 같은 장점이 있다.

Reverse Proxy 서버 사용 시, 네트워크 구성

  1. Load Balancing : 특정 서버에 트래픽이 몰려 과부화가 발생하는 것을 막는다.
  2. 보안 우수 : 웹 서버 1, 2…의 IP를 노출하지 않기 때문이다.
  3. 캐시 사용 가능 : Reverse Proxy에 캐시 데이터를 저장해두고 활용할 수 있다.
  4. SSL 암호화 도움 : 구조 자체가 암호 및 복호화에 적합

참고

 

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

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

chrisjune-13837.medium.com

 

Nginx와 Gunicorn 둘 중 하나만 써도 될까?

Flask나 Django로 만든 파이썬 앱을 배포할 때, 보통 Nginx와 Gunicorn과 자기 앱을 연결해서 배포하는 게 정석처럼 여겨

velog.io

 

CGI 기술의 등장 배경과 WAS로의 발전

초창기 웹(WWW)은 웹 서버에 미리 만든 웹 페이지(정적 페이지)를 가공 없이 단순히 보여주는 것이 목적이었다. 그러나 많은 웹 사용자들은 미리 저장된 정보를 보는 것 뿐만 아니라, 유저의 이름

bentist.tistory.com

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.