[!callout] 게이트웨이는 다른 네트워크나 시스템 간 통신을 가능하게 하는 관문 역할을 하는 하드웨어 또는 소프트웨어이다.
서로 다른 프로토콜을 사용하는 네트워크를 만들거나 , 한 네트워크에서 다른 네트워크로 접근할 수 있도록 하는 매커니즘이다.
게이트웨이는 기능을 설명하는 용어이다.
- 하드웨어일 수도 있고 - 라우터, 방화벽 장비, 전용 게이트웨이 박스
- 소프트웨어일 수도 있고 - 서버에서 돌아가는 프로그램 (API 게이트웨이, 프록시 서버)
- 서비스일 수도 있습니다 - AWS API Gateway 같은 클라우드 서비스
ex)
- 집 공유기 - 하드웨어 게이트웨이입니다. 작은 컴퓨터에 게이트웨이 기능을 하는 소프트웨어가 설치된 형태
- 회사 방화벽 - 전용 하드웨어에 방화벽 + 게이트웨이 기능이 합쳐진 것
- API 게이트웨이 - 보통 서버에서 돌아가는 소프트웨어입니다. Express.js로 만든 게이트웨이 서버라면 완전히 "서버"
- Nginx 리버스 프록시 - 서버에 설치된 소프트웨어가 게이트웨이 역할을 하는 경우
What is Gateway
게이트웨이는 리소스와 애플리케이션을 연결하는 역할을 한다.
-
애플리케이션은 게이트웨이에게 요청을 처리해달라고 할 수 있고, 게이트웨이는 그에 응답할 수 있다.
-
요청을 받고 응답을 보내는 포털같이 동작한다. 동적인 콘텐츠를 생성하기도 하고 데이터베이스에 질의를 보내기도 한다.
-
HTTP 트래픽을 다른 프로토콜로 자동으로 변환하여 HTTP 클라이언트가 다른 프로토콜을 알 필요 없이 서버에 접속할 수 있게 해준다.


클라이언트 측 게이트웨이와 서버 측 게이트웨이
웹 게이트웨이는 한쪽에서는 HTTP로 통신하고 다른 한쪽에는 HTTP가 아닌 다른 프로토콜로 통신한다.
ref[[SWG]]
클라이언트 측 프로토콜과 서버 측 프로토콜을 빗금(/)으로 구분해 기술한다.
<클라이언트 프로토콜>/<서버 프로토콜>
- 서버 측 게이트웨이는 클라이언트와 HTTP로 통신하고, 서버와는 외래 프로토콜로 통신한다.
- 클라이언트 측 게이트웨이는 클라이언트와 외래 프로토콜로 통신하고, 서버와는 HTTP로 통신한다.
(결국에 어느쪽과 HTTP 통신을 하는지에 따라서 서버 측, 클라이언트 측으로 나뉜다.)