개발 기록지
CGI, WAS 이해하기 본문
이 글은 웹 서버, CGI, WAS에 대한 개념을 알고있다고 가정하에 작성하였다. 그래도 한번 정리는 하고 가겠다.
- Web Server : 정적인 컨텐츠를 처리한다.
- CGI : 웹 서버를 동적으로 만들기 위해 웹 서버와 외부 프로그램이 정보를 주고받는 규약
- WAS : 웹 서버 + 웹 컨테이너 형태로 동적인 컨텐츠를 생성한다.
CGI 동작 원리
동작원리는 클라이언트가 웹서버에 요청을 보내고 해당 요청에대한 처리를 외부 프로그램(애플리케이션)에 위임하여 처리하고 그 결과를 다시 웹서버에 돌려준 후 웹서버는 HTTP 프로토콜로 클라이언트에 응답해준다. 이게 기본적인 CGI 동작 방식이다. 즉 핵심은 웹서버가 외부 프로그램을 실행하여 가공처리하는 것 이다. 여기서 웹서버의 종류(Apache, IIS 등)도 다양하고 외부 프로그램도 C, C++등 다양한 언어로 만들어지기 때문에 이들 사이에 상호작용하는데 있어서 규칙을 정해놓아야한다. 이것이 CGI이다. 즉 CGI는 데이터를 주고받는 규칙이다. 또한 외부 프로그램은 CGI 규칙에 따라 만들어지기 때문에 이것을 CGI 프로그램이라고도 부른다.
웹 서버는 CGI의 규칙에 따라 외부 응용프로그램(CGI 프로그램)에 데이터를 전달하고 반대로 외부 응용프로그램은 작업한 결과를 CGI 규칙에 맞게 다시 웹서버에 전달해 줄 것이다.
CGI 프로그램 유형 두 가지
- 컴파일 방식 : 컴파일 방식은 C, C++로 작성된 프로그램이다. 따라서 요청을 받으면 매 요청마다 프로그램을 실행한다.
- 인터프리터 방식: PHP, ASP, Perl 등 스크립트 파일이다. 따라서 직접 실행할수 없으며 스크립트 엔진이 필요로 한다. 이 스크립트 엔진을 인터프리터라고 하며 웹서버는 스크립트 엔진을 실행하고 해당 스크립트를 파싱해서 실행한다.
WAS란?
CGI 방식이 위와 같다면 자바 웹 어플리케이션 동작 방법은 어떨까? 자바 프로그램(서블릿)은 .class 바이트 코드로 되어있기 때문에 바로 실행 시킬수 없다. 따라서 실행 시키기 위해서는 JVM이 필요한데 클라이언트가 요청을 보내면 JVM을 통해 자바 프로그램(서블릿)을 실행시켜야한다. 하지만 클라이언트는 JVM을 바로 실행시킬수 없다 왜냐하면 JVM은 CGI 프로그램이 아니기 때문이다. 이를 해결하기위해 CGI 규칙에 맞게 만들어진 자바 프로그램 관리 서버가 있다. 이 CGI 규칙에 맞게 만들어진 자바 프로그램을 WAS라고 부르고 서블릿 컨테이너라고도 부른다.
동작 방식
- 클라이언트가 웹서버에 요청을 보내면 해당요청을 자바 프로그램 관리 서버(서블릿 컨테이너)에 넘긴다
- 서블릿 컨테이너는 서블릿을 호출하고 관리한다.
서블릿 컨테이너는 Tomcat, Jetty, Resin, JEUS 등이 있다. = WAS
'웹 서버' 카테고리의 다른 글
톰캣, 아파치, 아파치 톰캣 용어정리 (0) | 2021.07.10 |
---|