이 가이드에서는 Dialogflow 서비스 사용에 대한 권장사항이 나와 있습니다. 이 가이드라인은 서비스의 응답 시간을 최적화할 뿐만 아니라 효율성과 정확성을 높이기 위해 마련되었습니다.
또한 모든 에이전트 유형에 대해 다룬 일반 에이전트 설계 가이드와 특히 에이전트 설계를 위한 음성 에이전트 설계 가이드도 참조하세요.
생산화
프로덕션에서 에이전트를 실행하기 전에 다음 권장사항을 구현해야 합니다.
감사 로그 사용 설정
프로젝트에서 Dialogflow API에 대한 데이터 액세스 감사 로그를 사용 설정합니다. 이를 통해 이 프로젝트에 연결된 Dialogflow 에이전트의 설계 시간 변경사항을 추적할 수 있습니다.
에이전트 버전
항상 프로덕션 트래픽에 에이전트 버전을 사용해야 합니다. 자세한 내용은 버전 및 환경을 참조하세요.
에이전트 백업 만들기
내보낸 에이전트 백업을 최신 상태로 유지합니다. 그러면 사용자 본인은 물론 팀 구성원이 에이전트 또는 프로젝트를 실수로 삭제한 경우 빠르게 복구할 수 있습니다.
클라이언트 재사용
애플리케이션이 실행되는 전체 기간 동안 *Client
클라이언트 라이브러리 인스턴스를 재사용하면 애플리케이션의 성능을 개선할 수 있습니다.
가장 중요한 것은 SessionsClient
클라이언트 라이브러리 인스턴스를 재사용하여 인텐트 인식 API 호출의 성능을 향상시킬 수 있다는 것입니다.
자세한 내용은 클라이언트 라이브러리 권장사항 가이드를 참조하세요.
에이전트 일괄 업데이트
단기간에 개별 에이전트 업데이트 API 요청을 여러 개 보낼 경우 요청이 제한될 수 있습니다. 이러한 설계 시의 API 메서드는 단일 에이전트를 빠른 속도로 업데이트하도록 구현되지 않았습니다.
일부 데이터 유형에는 이러한 용도로 사용할 수 있는 일괄 메서드가 있습니다.
- EntityTypes
create
,patch
또는delete
요청을 여러 개 보내는 대신batchUpdate
또는batchDelete
메서드를 사용합니다. - 인텐트
create
,patch
또는delete
요청을 여러 개 보내는 대신batchUpdate
또는batchDelete
메서드를 사용합니다.
API 오류 재시도
API 메서드를 호출할 때 오류 응답이 발생할 수 있습니다. 재시도해야 하는 오류들은 보통 일시적인 문제로 인한 것이며, 오류에는 다음 두 가지 유형이 있습니다.
- Cloud API 오류.
- 웹훅 서비스에서 전송된 오류.
또한 재시도를 위한 지수 백오프도 구현해야 합니다. 이러면 API 서비스가 과부하 상태일 때 시스템에서 허용되는 비율을 찾을 수 있습니다.
Cloud API 오류
Google에서 제공하는 클라이언트 라이브러리를 사용하는 경우 지수 백오프가 포함된 Cloud API 오류 재시도가 구현됩니다.
REST 또는 gRPC를 사용하여 자체 클라이언트 라이브러리를 구현한 경우 클라이언트에 대한 재시도를 구현해야 합니다. 재시도하거나 재시도해서는 안 되는 오류에 대한 자세한 내용은 API 개선 제안서: 자동 재시도 구성을 참조하세요.
웹훅 오류
API 호출이 웹훅 호출을 트리거하면 웹훅이 오류를 반환할 수 있습니다.
Google에서 제공하는 클라이언트 라이브러리를 사용하는 경우에도 웹훅 오류가 자동으로 재시도되지 않습니다.
코드는 웹훅에서 수신된 503 Service Unavailable
오류를 다시 시도해야 합니다.
웹훅 오류 유형 및 오류 확인 방법에 대한 자세한 내용은 웹훅 서비스 문서를 참조하세요.
부하 테스트
코드를 프로덕션으로 출시하기 전에 시스템의 부하 테스트를 실행하는 것이 좋습니다. 부하 테스트를 구현하기 전에 다음 사항을 고려하세요.
요약 | 세부정보 |
---|---|
부하 증가 | 부하 테스트에서는 Dialogflow 서비스에 적용되는 부하를 늘려야 합니다. 서비스는 실제 트래픽에서 거의 발생하지 않는 갑작스러운 부하 버스트를 처리하도록 설계되지 않았습니다. 서비스가 부하 수요에 맞게 조정되는 데에는 시간이 걸리므로 테스트가 원하는 부하를 달성할 때까지 요청 속도를 천천히 증가시킵니다. |
API 호출에 대한 청구 | 테스트 중 API 호출에 대해 비용이 청구되며 호출은 프로젝트 할당량에 따라 제한됩니다. |
테스트 더블 사용 | 부하 테스트 중에 API를 호출할 필요가 없을 수 있습니다. 부하 테스트의 목적이 내 시스템에서 부하를 얼마나 처리하는지 알기 위함이라면 실제로 API를 호출하는 대신 테스트 더블을 사용하는 것이 가장 좋습니다. 테스트 더블은 부하가 걸렸을 때의 API의 동작을 시뮬레이션할 수 있습니다. |
재시도 수행 | 로드 테스트에서는 백오프로 재시도를 수행해야 합니다. |
최종 사용자 기기에서 안전하게 Dialogflow 호출
Dialogflow API에 액세스하는 데 사용되는 비공개 키를 최종 사용자 기기에 저장해서는 안 됩니다. 이는 키를 기기에 직접 저장하고 애플리케이션에서 키를 하드 코딩하는 경우에 적용됩니다. 클라이언트 애플리케이션에서 Dialogflow API를 호출해야 하는 경우 클라이언트 애플리케이션은 보안 플랫폼의 개발자 소유 프록시 서비스에 요청을 보내야 합니다. 프록시 서비스에서 실제 인증된 Dialogflow를 호출할 수 있습니다.
예를 들어 Dialogflow를 직접 호출하는 모바일 애플리케이션을 만들면 안 됩니다. 이렇게 하려면 비공개 키를 최종 사용자 기기에 저장해야 합니다. 모바일 애플리케이션은 대신 보안 프록시 서비스를 통해 요청을 전달해야 합니다.