이 글을 보던 중 리버스 프록시와 게이트웨이가 자세히 어떻게 다른 지 궁금해졌다.
기존에는 둘 다 클라이언트가 여러 과정을 거져 서버로 접속하기 전 서버 앞에 있는 중개자 정도의 개념으로 생각하고 있었다.
https://feel5ny.github.io/2019/08/03/HTTP_001/
구글링 하니까 다음 글이 첫 번째로 나온다.
https://www.baeldung.com/cs/api-gateway-vs-reverse-proxy
API Gateway vs. Reverse Proxy | Baeldung on Computer Science
Learn about the API Gateway and the Reverse Proxy.
www.baeldung.com
Architecture
둘이 제공하는 기능은 다르지만, infrastructure 내에서의 둘의 위치는 같다고 볼 수 있다. 그래서 다음과 같이 그림을 그릴 수 있다.
Reverse Proxy
리버스 프록시를 사용하는 이유 중 하나에는 한 개 이상의 백엔드 서버 와 클라이언트 사이의 중개자로써 사용하는 것이 있다.
마이크로 서비스 아키텍쳐가 있고 그 수가 점점 늘어난다면, 특정한 시점에 API의 이질성에서 오는 복잡성이 생기고 이를 처리해야 한다. 이것을 위해 리버스 프록시는 URL을 rewrite 할 수 있다. 클라이언트는 리버스 프록시 뒤에 누가 있는 지 알 수 없다. 요청들을 처리할 수 있는 백엔드로 이동시키는 것은 리버스 프록시의 책임이다.
일반적 용도는 다음과 같다.
- 로드 밸런싱 : 들어오는 요청을 여러 백엔드 서버에 분산시킨다. 시스템의 과부하를 방지하고 백엔드 장애를 보완한다. 만약 백엔드가 어떤 에러로 접근할 수 없으면, 로드 밸런싱 모듈이 다른 백엔드로 요청을 재분배한다.
- 보안 : 기본 인증, Dos 공격에 대한 보안과 SSL 인증을 제공한다. 프록시는 인터넷과 사설 네트워크 사이에 위치하므로 백신이나 패킷 필터같은 제어 시스템을 설치하여 백엔드를 보호하는 기능을 제공할 수 있다.
- 캐싱 : 콘텐츠를 프록시에 보관해서 반복되는 요청에 대해 프록시가 자체적으로 대응할 수 있다. 적은 자원을 소모하므로 클라이언트가 응답을 받는 속도도 빨라진다.
- SSL encryption : 들어오는 모든 요청을 해독하고 나가는 모든 응답을 암호화해서 중요한 백엔드 리소스를 확보할 수 있다. 이런 SSL/TLS 암호/해독 하는 과정이 cpu를 많이 잡아먹기 때문에 따로 프록시에서 처리하는 것을 SSL Termination 이라고 하는 것 같다.
SSL Termination이란 무엇인가?
SSL Termination은 데이터 트래픽이 암호화 및 암호화되지 않을 때의 전환 프로세스를 설명합니다. SSL(Secure Socket Layer) 연결의 서버 측에서 발생합니다. SSL Termination이란 무엇인가요? SSL Termination은 SSL
sepiros.tistory.com
더 찾아보다가 깨달았는데 gateway 와 API gateway는 다르다..
Gateway
서로 다른 네트워크 상의 통신 프로토콜들을 변환해줄 수 있다. 클라이언트는 역시 자신이 게이트웨이와 통신하고 있는 지 모른다.
예를 들어 요청이 HTTP 인데 서버에서 FTP 통신이 필요하면 게이트웨이가 호환 가능하게 만들어준다.
클라이언트 HTTP 요청 -> 게이트웨이가 FTP 서버 요청 -> 서버가 FTP 응답 -> 게이트웨이가 HTTP 로 응답 전달
API Gateway
Reverse Proxy 보다 상위개념이다. 클라이언트는 여러 백엔드를 호출하는 것이 아니라 API 게이트웨이에만 연결하여 요청한다.
프로토콜에서 프로토콜으로 변환할 수 있다. (ex. gRPC -> JSON)
더 자세한 설명은 이 글에......
MSA 아키텍쳐 구현을 위한 API 게이트웨이의 이해 (API GATEWAY)
MSA 아키텍쳐 구현을 위한 API 게이트웨이의 이해 #1조대협 (http://bcho.tistory.com) MSA(마이크로 서비스 아키텍쳐, 이하 MSA)와 함께 근래에 떠오르고 있는것이 API 게이트 웨이이다. API 게이트웨이는 API
bcho.tistory.com
마이크로 아키텍쳐??
대용량 웹서비스를 위한 마이크로 서비스 아키텍쳐의 이해
마이크로 서비스 아키텍쳐 (MSA의 이해)조대협(http://bcho.tistory.com) 배경 마이크로 서비스 아키텍쳐(이하 MSA)는 근래의 웹기반의 분산 시스템의 디자인에 많이 반영되고 있는 아키텍쳐 스타일로,
bcho.tistory.com
모노리틱 아키텍쳐
전통적인 웹 시스템 개발 스타일로, 하나의 애플리케이션 내에 모든 로직들이 들어가있다.
규모가 큰 애플리케이션에서 여러 문제점을 가진다. 빌드 및 배포 시간이 오래걸린다. 한 사람이 실수하면 빌드가 실패하므로 협업이 쉽지 않다. call-by-reference 로 연결되어 있기 때문에 전체 시스템 구조를 파악하고 개발하는 것이 필요하다. 재배포 시 통째로 재배포 해야한다..
마이크로 서비스 아키텍쳐
대용량 서비스가 많아짐에 따라 정의되었다. SOA (서비스 지향 아키텍쳐) 에 근간을 두고 대규모 개발팀에 맞도록 변형된 아키텍쳐이다.
각 컴포넌트를 서비스라는 개념으로 정의한다. 서비스는 데이터부터 비즈니스 로직까지 독립적으로 컴포넌트 간 상호 의존성 없이 개발된 컴포넌트이다. REST API 같은 표준 인터페이스로 그 기능을 외부로 제공한다.
... 까지 읽었다. 아직 이런 개념을 보고 이해할 수 있는 단계가 아닌 것 같다.
API Gateway 는 나중에 알아보는 걸로......
결론
리버스 프록시보다는 프록시와 게이트웨이를 비교하는 것이 맞는 것 같다.
둘 다 서버와 클라이언트 간의 중개 역할을 하지만 용도가 다르다.
프록시는 외부로부터 서버를 보호하고 캐싱하는 등 다양한 기능이 있다. 게이트웨이는 필터링 기능은 없고 다른 프로토콜끼리 통신을 가능하게 한다.
Reference
https://coding-start.tistory.com/342
Network - Proxy(프록시)와 Gateway(게이트웨이)란? 이 둘의 차이점은?
필자는 그동안 프록시서버와 게이트웨이를 혼동해서 용어를 많이 사용했었던 것 같다. 사실 글을 쓰는 지금까지도 이 두개의 차이점을 100% 명확히 구분짓기 힘들지만, 범용적으로 사용되는 프
coding-start.tistory.com
https://cloudinfrastructureservices.co.uk/reverse-proxy-vs-api-gateway-whats-the-difference/
Reverse Proxy vs API Gateway - What's the Difference? (Pros and Cons)
Reverse Proxy vs API Gateway – What’s the Difference? (Pros and Cons).Let's begin with the fundamentals to better understand the difference between a
cloudinfrastructureservices.co.uk
https://www.techwalla.com/articles/difference-between-a-proxy-server-a-gateway
Difference Between a Proxy Server & a Gateway | Techwalla
Both a proxy server and a gateway route traffic from inside a network to the Internet. A gateway, however, is more like a door to get to the Internet, while a proxy server acts like a wall that bars the inside of the network from being exposed to the Inter
www.techwalla.com