-
게이트웨이(Gateway)란 무엇인가?CS지식/네트워크 2021. 6. 8. 16:11
웹은 점점 사용자 수가 많아지고 처음에는 간단한 문서를 전달하는 용도였으나 사용자의 요구사항이 많아지면서 복잡한 기능을 구현해야했다.
이에 따라 더 복잡한 리소스(동적 페이지나 데이터베이스를 통한 콘텐츠 등)가 요구되기 시작했고 모든 리소스를 한 개의 애플리케이션으로만 처리하기 어려워졌다.
이를 해결하기 위해 게이트웨이를 만든 것이다.
게이트웨이는 누군가(클라이언트, 서버)에게 요청을 처리해달라는 부탁을 들어줘야하고 요청에 대한 응답을 할 수 있다.
이러한 게이트웨이는 동적인 콘텐츠를 생성하거나 데이터베이스에 질의를 보낼 수 있다.
또한, HTTP 트래픽을 다른 프로토콜로 변환하여 클라이언트가 다른 프로토콜을 알 필요 없이 서버에 접속할 수 있게 하는 역할을 한다.
아래의 예시 그림을 보자.
클라이언트는 애플리케이션이 FTP인 서버에게 FTP 트래픽이 아닌 HTTP 트래픽을 보내어도 게이트웨이가 변환해주어 FTP 서버와 통신을 하여 요청에 대한 응답을 보낼 수 있다.
게이트웨이의 가장 일반적인 형태인 애플리케이션 서버는 목적지 서버와 게이트웨이를 한 개의 서버로 결합한다.
즉, 애플리케이션 서버는 HTTP를 통해서 클라이언트와 통신하고 서버 측에 있는 애플리케이션 프로그램에 연결하는 서버 측 게이트웨이다.
클라이언트의 요청을 서버에서 동작하고 있는 애플리케이션에게 전달하기 위해 애플리케이션 서버는 게이트웨이의 API를 사용한다.
게이트웨이의 API 중 유명했던 최초의 API는 CGI(Common Gateway Interface)이다.
CGI는 URL에 대한 HTTP 요청에 따라 해야할 일을 수행하는데 웹 서버가 사용하는 표준화된 인터페이스 집합이다.
CGI가 내부에서 어떤 처리를 하는지와 서버와 CGI 애플리케이션 간에 진행되는 절차는 사용자에게 보여지지 않는다.
CGI는 필요에 따라 어떠한 변형이든 처리할 수 있는 기능을 제공하고 문제가 많은 확장으로부터 서버를 보호한다는 점에서 좋은 인터페이스이다.
하지만 CGI도 단점이 존재한다.
모즌 CGI 요청마다 새로운 프로세스를 만들어야해서 부하가 커지고 CGI를 사용하는 서버의 성능을 제한하고 서버 장비에 부담을 줄 수 있다.
이러한 단점을 보완하기 위해 개발된 것이 Fast CGI이다.
Fast CGI는 프로세스를 만들고 제거함에 따라 발생하는 성능 저하 문제를 해결한 인터페이스이다.
'CS지식 > 네트워크' 카테고리의 다른 글
쿠키(Cookie)란 무엇인가? (0) 2021.06.14 클라이언트 식별이란 무엇인가? (0) 2021.06.11 캐시(Cache)란 무엇인가? (0) 2021.06.05 프락시(Proxy)란 무엇인가? (0) 2021.06.02 웹 서버(Web server)란 무엇인가 (0) 2021.05.30