[Web] CGI와 WAS

suhjaesuk·2022년 11월 13일
0

Web

목록 보기
1/2

둘 모두 요청에 따른 동적인 웹 페이지를 만들기 위한 기술이며, 기준이 굉장히 애매모호하다.애초에 비교자체가 힘들긴 하다. CGI는 규약이고, WAS는 프로그램이기 떄문이다.

🌐 CGI (Common Gateway Interface)

Web Server와 응용 프로그램간(or Script)의 통신을 위한 Interface(Protocol ) 이다.웹 브라우저로부터 수신한 Request에 실린 정보를 어떻게 응용프로그램으로 전달할 것인지,응용프로그램의 Output을 어떻게 웹 서버가 수신할 것인지에 대한 약속이라 보면 된다. 어떤 Request에 어떤 응용 프로그램이 수행할지 Web Server에서 설정이 가능하다. 따라서 설정한 Request가 들어왔을 때 Web Server가 해당 Request에 매핑된 응용프로그램을 실행시키고, 해당 응용프로그램에 console창에다가 파라미터를 입력하고 조작하는 등의 작업을 수행해준다

  • 동적으로 웹 페이지를 생성하기 위한 방식 중 하나이다
    • 고급 언어 프로그램을 실행시켜 HTML 코드를 생성한 후 전달한다
  • 외부 프로그램이 실행될 때 세팅하는 환경변수의 종류나 네이밍 등 외부 프로그램이 사용할 변수들의 통일을 위한 하나의 규약이다
  • 클라이언트의 요청이 있으면 해당 프로그램을 실행시키기 위해 개별 프로세스를 생성한다
    • 동일한 CGI를 요청해도 요청의 개수만큼 프로세스를 생성하므로 웹 서버에 부하를 준다

CGI를 통한 동적페이지 생성과정

  1. 웹서버가 웹브라우저 같은 클라이언트로부터 요청을 받는다
  2. 그 요청이 특정 프로그램이 실행될 필요가 있다고 웹서버에 설정 되어 있으면, 프로그램을 실행시킨다
  3. CGI 규약에 따라서 데이터를 프로그램에 넘긴다
  4. 프로그램 실행이 끝나고 결과가 나오면 프로그램은 CGI대로 결과를 웹서버에 넘겨준다.

📌 CGI 이미지 예시

🌐 WAS (Web Application Server)

웹 애플리케이션을 실행하고 관리하는 별도의 전담 프로그램이다. 기존의 Web Server가 동적인 페이지의 생성을 위해 CGI라는 규약을 통해 응용프로그램과 통신했다면, WAS는 해당 처리과정을 Web Server내에서 모두 처리할 수 있다.

  • WAS = Web Server + Container
    • Web Server : Web Client(브라우저) 요청에 따른 정적인 파일을 응답하는 프로그램
    • Container : Was내에 모듈형태로 존재하는 프로그램으로 응용프로그램 형태로 실행되던것 들을 실행시킬 수 있는 실행환경.
    • WAS의 종류에 따라 장착된 Container는 다르다.
  • 모든 요청에 대해 매번 프로세스를 생성하지 않고 하나의 자바 가상 기계 내에서 수행항(JSP 기준)
  • 요청을 처리하기 위해 스레드를 생성함
  • API제공, 부하균형, 고장 조치 등 웹페이지 생성 외에도 많은 기능을 수행함

📌 WAS 이미지 예시

🌐 WAS vs CGI?

CGI Program의 경우 해당 Program을 수행하기 위한 프로세스를 생성한다.그러나 WAS의 경우 WAS 프로세스의 모듈형태로 존재하기에 쓰레드를 생성한다.사실 WAS내에서 Container와 Web Server간의 통신이 CGI규약을 따른다면 이것 또한 CGI를 따르는 통신이라고 볼 수 있겠다. 결국 동적 페이지의 생성을 위한 프로세스간의 통신이냐, 쓰레드간의 통신이냐가 차이점이다.

📌 Ref. CGI vs WAS

profile
wanna be BE-Developer

0개의 댓글