웹 서버와 웹 애플리케이션 서버
클라이언트로 부터 요청을 받아 처리하는 서버를 통칭해 '웹 서버'라고 부른다. 좀더 세분화 하면 '웹 서버'와 '웹 애플리케이션'으로 분류할 수 있다.
구분 | 역할 | 프로그램 명 |
웹 서버 | 웹 클라이언트의 요청을 받아 처리하고, 결과를 클라이언트에게 응답 | Apache httpd, NGINX, IIS... etc |
웹 애플리케이션 서버 | 웹 서버로부터 동적 페이지 요청을 받아 요청을 처리하고 결과를 웹서버로 반환한다. 주로 동적 페이지를 위한 프로그램 실행, 데이터 베이스 연동기능을 처리 | Apache Tomcat, JBoss, uWSGI...etc |
정적페이지 vs 동적페이지
정적페이지는 항상 같은 내용을 표시하는 웹페이지를 의미한다. 일반적으로 HTML/CSS/JavaScript + 이외 리소스 로 이루어진 파일들이 해당된다. 동적페이지는 동일한 리소스 요청이라도, 상황에 따라 반환되는 페이지가 다른 페이지를 의미한다. 예를 들면, 커멀스 앱의 장바구니 기능처럼 말이다.
동적 페이지에서는 프로그래밍 코드가 포함되, 페이지 요청 시점에 HTML문장을 만들어 낸다. 초창기 웹에서는 동적 페이지를 위해서 별도의 프로그램과 웹 서버 사이 정보를 주고받는 규칙을 정의했는데, 이것이 바로 CGI(Common Gateway Interface)규격이다.
CGI방식의 단점
CGI는 프로그래밍 언어나 스크립트가 아니다. 단지, 웹 서버와 독립적인 프로그램 사이에 정보를 주고받는 규격을 의미할 뿐이다. 이 스펙을 준수하면, 언어에 상관없이 CGI프로그램을 만들 수 있다.
CGI프로그램의 문제점은 클라이언트 요청에 대해 독립적인 프로세스가 생성되는것이다. 즉, 요청이 점점 많아지면, 그에따른 프로세스 점유 메모리 양도 많이지게되어, 시스템에 부하를 주게된다. 현재는 CGI를 사용하지 않고, 다른 대안을 사용한다
CGI의 대안 기술
CGI대안 기술 중 하나는 별도의 애플리케이션을 스크립트 언어로 작성하고, 스크립트를 처리하는 스크립트 엔진을 웹 서버에 내장시켜, CGI의 단점이었던, 프로세스별 오버헤드(어떤 처리를 위해 들어가는 간접적인 처리 시간 및 메모리 의미)를 줄이는 방식이다.
또 다른 방식은, 애플리케이션을 처리하는 프로세스를 데몬으로 가동시킨 후 웹 서버 요청을 데몬에서 처리하는 것이다. 파이썬 같은 경우에는, 위 두 방식에 대해 모두 mod_wsgi를 사용한다.
현재는 CGI애플리케이션을 별도의 데몬으로 처리하는 방식은 스레드 처리 보강, 객체지향의 적용등의 영향을 받으며 애플리케이션 서버 방식으로 발전했다.
애플리케이션 서버 방식(WAS)
애플리케이션 서버 방식은 웹 서버가 간접적으로 애플리케이션 서버를 통해 프로그램을 실행하는 방식이다. 웹 애플리케이션 서버는 웹 서버로 프로그램 실행 결과를 전달해 주고, 웹 서버는 전달받은 결과를 클라이언트에 전송하게 된다.
웹 서버와 웹 애플리케이션 서버가 분리됨에 따라, 서로 역할도 구분해 주는 것이 좋다. 구분하는데에 있어 기준은 정적페이지와 동적페이지이다. 정적 페이를 처리하는 경우는 동적 페이지를 처리하는 경우에 따라 메모리를 수십배 적게 먹는다. 그렇기 때문에 아래와 같이 역할을 분담해 주는것이 좋다.
- 웹 서버 : 정적 페이지 처리
- 웹 애플리케이션 서버 : 동적페이지 처
'Back-End > Theory' 카테고리의 다른 글
GET요청과 POST요청의 차이점 (0) | 2020.01.13 |
---|---|
URL 설계 (0) | 2020.01.13 |
HTTP Protocal (0) | 2020.01.13 |