Apigee X 문서입니다.
Apigee Edge 문서 보기
Apigee를 사용하면 다른 API 프록시에서 API 프록시 하나를 호출할 수 있습니다. 이 기능은 다른 API 프록시에서 사용할 수 있는 재사용 가능한 코드가 포함된 API 프록시가 있는 경우에 특히 유용합니다.
안티패턴
대상 엔드포인트 또는 커스텀 자바스크립트 코드에서 HTTPTargetConnection
을 사용하여 API 프록시에서 다른 API 프록시를 호출하면 추가 네트워크 홉이 발생합니다.
HTTPTargetConnection
을 사용하여 프록시 1에서 프록시 2 호출
다음 코드 샘플은 HTTPTargetConnection
을 사용하여 프록시 1에서 프록시 2를 호출합니다.
<!-- /antipatterns/examples/2-1.xml --> <HTTPTargetConnection> <URL>https://api-test.example.com/proxy2</URL> </HTTPTargetConnection>
자바스크립트 코드에서 프록시 1에서 프록시 2 호출
다음 코드 샘플은 자바스크립트를 사용하여 프록시 1에서 프록시 2를 호출합니다.
<!-- /antipatterns/examples/2-2.xml --> var response = httpClient.send('https://api-test.example.com/proxy2); response.waitForComplete();
코드 흐름
코드 흐름의 고유한 단점이 있는 이유를 이해하려면 아래 다이어그램에 나와 있는 것처럼 요청이 라우팅되는 경로를 파악해야 합니다.
![1) 클라이언트가 프록시 1에 요청 전송, 2) 프록시 1에서 프록시 2로 보내는 요청으로 인해 네트워크 홉 발생, 3) 프록시 2에서 대상으로 요청.](https://cloud.google.com/static/apigee/docs/api-platform/images/antipatterns/proxies-requests.png?authuser=0000&hl=ko)
다이어그램에서 볼 수 있듯이 요청은 라우터와 메시지 프로세서를 비롯한 여러 분산 구성요소를 통과합니다.
위의 코드 샘플에서 프록시 1을 프록시 2로 호출하면 런타임 시 기존 경로(라우터 > MP)를 통해 요청을 라우팅해야 한다는 의미입니다. 클라이언트에서 API를 호출하여 지연 시간에 추가되는 네트워크 홉을 여러 개 만들게 되는 것과 유사합니다. 이러한 홉은 프록시 1 요청이 이미 MP에 도달했을 것이기 때문에 필요하지 않습니다.
영향
API 프록시에서 다른 API 프록시를 호출하면 불필요한 네트워크 홉이 발생합니다. 이는 메시지 프로세서에서 다른 메시지 프로세서로 요청을 전달해야 하기 때문입니다.
권장사항
- API 프록시에서 다른API 프록시를 호출할 때 프록시 연결 기능을 사용합니다. 프록시 연결은 로컬 연결을 사용하여 대상 엔드포인트(다른 API 프록시)를 참조하므로 더 효율적입니다.
코드 샘플은 엔드포인트 정의에
LocalTargetConnection
을 사용한 프록시 연결을 보여줍니다.<!-- /antipatterns/examples/2-3.xml --> <LocalTargetConnection> <APIProxy>proxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
호출된 API 프록시는 동일한 메시지 프로세서 내에서 실행됩니다. 따라서 다음 그림과 같이 네트워크 홉이 방지됩니다.
그림 2: 프록시 연결을 사용하는 코드 흐름