CNU SW 아카데미/9주차

[NHN] CGI(Common Gateway Interface)

하가네 2024. 8. 25. 23:32

# CGI란 ?

  • 웹 서버가 외부 프로그램을 실행할 수 있도록 해주는 인터페이스 명세(specification)
    • 외부 프로그램 = 동적 웹 콘텐츠 생성하는 역할
    • c, c++, java, php , go …
  • 웹 서버와 CGI 프로그램(Application) 간의 규칙

CGI 동작 과정

  • 환경변수나 표준입출력을 다룰 수 있는 프로그램 언어라면 어떤 언어든지 확장하여 이용 가능
  • 실행속도나 텍스트 처리의 용이함 등의 이유로 perl이나 python, ruby 등의 스크립트 언어를 주로 사용

 

## CGI 프로그램

 

  • 컴파일 방식
    • 기계어. 컴파일된 상태
    • c++, c
  • 인터프리터 방식
    • 스크립트 언어
    • Asp, Php, Python, Per
    • 스크립트 엔진
      1. 해당 스크립트를 실행할 수 있는 엔진
    • 즉시 코드를 수정할 수 있음

 

 

 

## CGI 스펙

### 입출력

  • 주로 표준 입출력 사용

 

### Meta-Variables ( 메타 변수 )

  • 웹서버에서 CGI 프로그램으로 전달되는 요청 관련 데이터
  • 주로 환경변수 (environment variable) 형태로 구현
    • SERVER_NAME
    • SERVER_PORT
    • REMOTE_ADDR
    • REQUEST_METHOD
    • CONTENT_TYPE
    • CONTENT_LENGTH

 

### Script (스크립트)

  • 서버에 의해 호출되는 소프트웨어
  • 런타임에 해석되는 일련의 명령문

 

### 장점

  • 언어, 플랫폼에 독립적
  • 구조가 단순하고 다른 서버 사이드 프로그래밍 언어에 비해 쉽게 수행

 

### 단점

  • 속도가 느림
    • 매 요청마다 DB Connection을 새로 열어야 한다.
  • Http 요청마다 새로운 프로세스를 만들어 서버 메모리를 사용한다.
  • 데이터가 메모리에 캐시 될 수 없다.

서버 간 통신

 

 

 

## Java CGI 프로그램

Q. .class 형태로 컴파일된 Java는 컴파일 방식으로 실행 가능 할까?

==> 실행 불가능하다. JVM은 Java를 실행할 수는 있지만 웹서버와 java application Server간의 통신을 할 수는 없다.

 

웹서버와 Java Application 사이에서 서로 통신할 수 있도록 한 JCGI가 있어야 합니다.

웹 서버와 자바 애플리케이션 사이의 JCGI