ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Golang] golang에서는 WSGI를 사용하지 않은 이유
    언어/Golang 2017. 4. 19. 16:20

    일단 WSGI는 파이썬에만 해당이 됩니다. Go에는 3가지 옵션이 있습니다. (실제로는 4가지지만 일반적으로 CGI는 높은 부하로 인해 뺐습니다.)

    Go의 표준 라이브러리에 내장 된 HTTP 서비스 기능.

    이 경우 앱은 독립 실행형 서버입니다. 가장 간단한 설정 일 수도 있지만 다음과 같은 문제가 있을 수 있습니다. 

    • 다운그레이드 권한으로 권한이 부여된 포트(1024 아래의 포트, 예를들어 80포트)를 가진 앱을 실행하려면, 특별한 wrapper나 POSIX 기능을 사용해야합니다.
    • 연결을 끊지 않고 재배포를 하려면 goagain과 같은 다른 wrapper가 필요합니다.

    웹 서버 형태의 reverse HTTP proxy 문제가 존재

    대부분 독립 실행형의 다양한 문제를 해결하지만, 그래도 전체 HTTP 트래픽을 이리저리 전달하는 오버 헤드가 존재합니다.

    FastCGI는 적절한 웹 서버를 통해 제공

    FastCGI는  Nginx와 Apache와 같은 웹서버도 연결이 가능합니다. FCGI 클라이언트 구현은 Go 표준 라이브러리에서 사용할 수 있습니다. 


    독립 실행형 서버 실행의 문제가 없는 것 이외로 효율적인 데이터 교환 프로토콜을 구현합니다. 또 다른 보너스는 Go 서버가 reverse HTTP proxy과 관련된 TCP 소켓보다 전송 비용이 낮은 Unix 파이프를 사용하여 front-end 웹 서버와 통신 할 수 있다는 것입니다. 결론적으로 WSGI나 CGI를 생각하지 말고 FCGI를 구현하는 것이 좋습니다.


    댓글