참고: 이 내용은 2021. 12. 7에 게시된 컨텐츠(Simplifying Use of External APIs with Request/Response Translators)에서 번역되었습니다.

Snowpark는 발표된 이후 상당한 흥분과 관심을 불러일으켰습니다. Snowpark는 데이터 엔지니어, 데이터 과학자 및 데이터 개발자가 원하는 언어로 코딩하고 파이프라인, 기계 학습(ML) 워크플로 및 데이터 애플리케이션을 더 빠르고 더 안전하게 실행할 수 있도록 하는 개발자 프레임워크입니다. Snowpark의 많은 부분이 미리 보기 단계에 있지만 외부 함수는 올해 초에 일반 공급에 들어갔습니다.

외부 함수 기능을 사용하면 개발자가 Snowflake SQL 쿼리 내에서 내부 Snowflake 함수와 마찬가지로 외부 API 및 원격 서비스를 호출하고 쿼리 결과에 응답을 결합할 수 있어 데이터를 내보내고 다시 가져올 필요가 없습니다. 이는 사용자 지정 코드 또는 타사 서비스를 사용해야 하는 복잡한 변환 또는 기능 향상이 필요한 데이터 파이프라인 구축을 크게 단순화합니다. 이제 요청/응답 변환기의 공개 미리 보기가 지원됨을 발표하게 되어 기쁩니다. 이로 인해 중간 데이터 변환 계층을 스핀업하고 유지 관리할 필요가 없어지므로 외부 API와 통신할 때 외부 기능의 사용이 더욱 단순해집니다.

외부 함수를 사용할 때 원격 서비스 또는 타사 API에 대한 호출은 지원되는 클라우드 네이티브 프록시 서비스(예: 외부 서비스 API와 접속하도록 구성된 AWS API 게이트웨이) 중 하나를 통해 중계됩니다. 그러나 전송된 데이터를 Snowflake 데이터 형식으로부터 외부 서비스에서 기대하는 데이터 형식으로 변환해야 하는 경우가 종종 있으며 그 반대의 경우도 마찬가지입니다. 예를 들어 감정 감지를 위해 Amazon Comprehend와 같은 외부 서비스를 활용하려면 데이터 형식 간 변환을 수행하기 위해 AWS Lambda와 같은 중간 컴퓨팅 계층을 스핀업해야 합니다.

그림 1. 변환기 없이 외부 함수를 사용하여 타사 API를 호출하는 솔루션 아키텍처

그러나 데이터 형식 지정을 위해 중간 타사 컴퓨팅 인프라를 구성 및 유지 관리하면 계산 및 네트워크 관리 오버헤드가 발생할 수 있습니다. 변환기 기능은 이 문제를 해결하고 외부 함수에서 사용하는 원격 서비스로 보내고 받는 데이터 형식을 더 쉽게 변경할 수 있도록 하여 솔루션 아키텍처를 단순화합니다.

이 기능을 사용하면 다음을 편리하게 수행할 수 있습니다.

  • Snowflake의 형식에서 원격 서비스의 네이티브 입력 형식으로 데이터를 변환합니다(요청 변환기).
  • 원격 서비스의 네이티브 출력 형식에서 Snowflake의 형식으로 데이터를 변환합니다(응답 변환기).

그림 2. 외부 함수 및 변환기를 사용하여 타사 API를 호출하는 단순화된 솔루션 아키텍처

요청/응답 변환기는 JavaScript 사용자 정의 함수(UDF)로 구현되며 외부 함수에 연결할 수 있습니다. 거의 매번 한 쌍의 UDF를 작성합니다. 하나는 전송되는 요청을 변환하고 다른 하나는 응답을 번역합니다. Snowflake는 이러한 함수를 각 외부 함수 호출의 일부로 호출합니다. 특히 Snowflake는 Request Translator 함수를 호출하고 Snowflake 형식의 데이터를 전달한 다음 반환된 데이터를 가져와 이를 원격 서비스로 보냅니다. 마찬가지로 원격 서비스가 데이터를 반환한 후 Snowflake는 Response Translator 함수를 호출하여 데이터를 Snowflake가 이해할 수 있는 형식으로 다시 변환합니다. 사용자 관점에서 요청/응답 변환기로 외부 함수를 호출하는 것은 다른 외부 함수를 호출하는 것과 동일합니다. 이제 유지 관리할 인프라와 서비스가 줄어들어 데이터 파이프라인이 더 단순화된다는 점만 제외하고 말이죠! 더 자세한 내용은 기능 문서를 확인하세요. 귀하의 피드백을 기다리겠습니다.