피해야 할 패턴: 자바스크립트 정책을 사용하여 서드 파티 서버에 데이터 로그

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

로깅은 문제를 디버깅하는 효율적인 방법 중 하나입니다. API에 대한 정보 헤더, 양식 매개변수, 쿼리 매개변수, 동적 변수 등의 요청을 모두 로깅할 수 있습니다. 나중에 참고하시기 바랍니다. 정보는 메시지 프로세서 (Private Cloud용 Apigee Edge만 해당)에 로컬로 로깅할 수 있습니다. 서드 파티 서버에 전송할 수 있습니다.

안티패턴

아래 코드에서는 JavaScript 정책httpClient 객체를 사용해 Sumo Logic 서버입니다. 즉, 로깅 프로세스가 실제로 실행되는 동안 요청/응답 처리입니다 이 방법은 처리 시간이 늘어나기 때문에 오히려 역효과적입니다. 전체 지연 시간이 증가합니다

LogData_JS:

<!-- /antipatterns/examples/1-4.xml -->
<Javascript async="false" continueOnError="false" enabled="true" timelimit="2000" name="LogData_JS">
  <DisplayName>LogData_JS</DisplayName>
  <ResourceURL>jsc://LogData.js</ResourceURL>
</Javascript>

LogData.js:

<!-- /antipatterns/examples/1-5.xml -->
var sumoLogicURL = "...";
httpClient.send(sumoLogicURL);
waitForComplete();

여기서 원인은 waitForComplete() 호출이며 호출자의 로깅 프로세스가 완료될 때까지 작업을 실행해야 합니다 유효한 패턴은 이 작업을 비동기식으로 할 수 있습니다.

영향

  • JavaScript 정책을 통해 로깅 코드를 실행하면 API 지연 시간이 늘어납니다. 합니다.
  • 동시 요청은 메시지 프로세서의 리소스에 부담을 주기 때문에 결과적으로 다른 요청 처리에 부정적인 영향을 미칩니다.

권장사항

  • MessageLogging 정책을 사용하여 로그 서버 또는 서드 파티 로그로 데이터를 전송/기록합니다. 고객 관리 서비스에 대해 알아봅니다.
  • 메시지 로깅 정책의 가장 큰 장점은 클라이언트 흐름: 응답이 요청하는 클라이언트 앱으로 다시 전송된 후에 실행됩니다.
  • Post Client 흐름에 이 정책을 정의하면 로깅 활동과 요청/응답 처리를 통해 지연 시간을 피할 수 있습니다.
  • 특정 요구 사항이나 JavaScript를 통해 로깅해야 하는 이유가 있는 경우 위에서 언급한 클라이언트 흐름 옵션)이 있는 경우 비동기식으로 실행해야 합니다. 즉, httpClient 객체를 사용하는 경우 JavaScript가 waitForComplete를 구현하지 않음

추가 자료