Snowpark Container Services¶
Snowpark Container Services 정보¶
Snowflake는 정형 및 반정형 데이터를 쿼리하기 위한 SQL 데이터베이스를 제공하는 것으로 시작되었지만 SQL만으로는 복잡한 계산이나 머신 러닝에 이상적이지 않습니다. 이 문제를 해결하기 위해 Snowflake는 개발자가 Python, Java, Scala와 같은 언어를 사용하여 데이터 애플리케이션과 파이프라인을 빌드할 수 있는 :doc:`Snowpark</developer-guide/snowpark/index>`를 도입했습니다. Snowpark는 이 코드를 최적화된 SQL로 변환하여 최신 언어의 유연성과 Snowflake SQL 엔진의 성능 및 확장성을 결합합니다.
유연성을 높이기 위해 Snowflake는 Snowflake 내에서 관리되는 컨테이너 오케스트레이션 플랫폼인 Snowpark Container Services를 제공합니다. 애플리케이션과 해당 종속성을 프로그래밍 언어, 프레임워크 또는 라이브러리를 포함할 수 있는 Open Container Initiative(OCI) 이미지에 패키징할 수 있습니다. 이를 통해 사용자 지정 런타임, 특수 라이브러리 또는 특정 소프트웨어 구성이 필요한 사용 사례를 지원할 수 있습니다. 또한 고급 CPUs 및 GPUs에 대한 지원을 통해 ML 모델 제공, ML 모델 학습, 고급 AI 분석과 같이 컴퓨팅 집약적인 워크로드를 실행할 수 있습니다. Snowflake는 기본 인프라를 관리하지만, 컨테이너화된 환경의 내용을 완전히 제어할 수 있습니다.
완전 관리형 서비스인 Snowpark Container Services는 컨테이너 실행과 관련된 운영 작업을 간소화합니다. Snowpark Container Services는 모범 사례를 사용하여 보안 및 구성을 포함한 컨테이너 관리의 복잡한 사항을 처리합니다. 이를 통해 기본 인프라를 관리하는 오버헤드 없이 애플리케이션 개발 및 배포에 집중할 수 있습니다.
Snowpark Container Services는 Snowflake와 완전히 통합되어 있습니다. 예를 들어, 애플리케이션은 다음 작업을 쉽게 수행할 수 있습니다.
Snowflake에 연결하고 Snowflake 가상 웨어하우스에서 SQL 실행.
Snowflake 스테이지에서 데이터 파일에 액세스.
SQL 쿼리를 통해 검색된 데이터 처리.
해당 애플리케이션은 다음 항목을 포함하여 기존 Snowflake 구성을 활용할 수 있습니다.
네트워크 수신을 위한 네트워크 정책
네트워크 송신을 위한 외부 액세스 통합
서비스 간 통신을 활성화하기 위한 역할 기반 액세스 제어
로그, 메트릭 및 이벤트에 대한 이벤트 테이블
Snowpark Container Services는 서드 파티 도구와도 통합됩니다. 이를 통해 서드 파티 클라이언트(예: Docker)를 사용하여 애플리케이션 이미지를 Snowflake에 쉽게 업로드할 수 있습니다. 원활한 통합을 통해 팀은 데이터 애플리케이션 개발에 더 쉽게 집중할 수 있습니다.
이러한 모든 기능에는 Snowflake 플랫폼의 이점, 특히 사용 편의성, 보안 및 거버넌스 기능이 함께 제공됩니다. 또한 플랫폼 외부로 데이터를 이동할 필요 없이 강력한 Snowflake 데이터 계층 옆에 확장 가능하고 유연한 컴퓨팅 계층을 사용할 수 있습니다.
Snowpark Container Services 사용을 위한 일반적인 시나리오¶
해당 애플리케이션은 기본 클라우드 플랫폼(AWS, Azure 또는 Google Cloud)에 관계없이 Snowflake 리전에 배포될 수 있습니다. Snowpark Container Services를 사용하면 애플리케이션이 Snowflake 데이터에 쉽게 액세스할 수 있습니다. 또한, Snowflake는 기본 컴퓨팅 노드를 관리합니다.
다음 목록은 Snowpark Container Services의 일반적인 워크로드를 보여줍니다.
일괄 데이터 처리 작업: 저장 프로시저와 유사한 유연한 작업을 실행하여 Snowflake 또는 외부 소스에서 데이터를 가져와 처리하고 결과를 생성합니다. 워크로드는 여러 작업 인스턴스에 분산될 수 있으며, AI 및 머신 러닝과 같은 계산 집약적 작업에 그래픽 처리 장치(GPU) 지원이 제공됩니다.
서비스 함수: 서비스는 쿼리가 처리를 위해 서비스에 데이터 배치를 보낼 수 있도록 서비스 함수를 제공할 수 있습니다. 쿼리 처리는 Snowflake의 고급 쿼리 엔진에서 발생하며 서비스는 Snowflake가 여러 컴퓨팅 노드로 확장할 수 있는 사용자 지정 데이터 처리를 제공합니다. 예를 보려면 자습서 1 을 참조하십시오. 이 자습서의 4단계에서는 쿼리에서 서비스 함수를 호출합니다.
APIs 또는 Snowflake 데이터를 통한 웹 UI: 내장된 비즈니스 논리를 사용하여 APIs 또는 웹 인터페이스를 노출하는 서비스를 배포합니다. 사용자는 원시 데이터가 아닌 서비스와 상호 작용합니다. 호출자의 권한은 쿼리가 올바른 사용자 권한으로 실행되도록 보장합니다. 예를 보려면 자습서 1 을 참조하십시오. 이 자습서에서는 서비스가 웹 UI를 인터넷에 노출하기도 합니다. 4단계에서는 웹 브라우저에서 서비스로 요청을 보냅니다.
어떻게 작동하나요?¶
Snowpark Container Services에서 컨테이너화된 애플리케이션을 실행하려면 데이터베이스 및 웨어하우스와 같은 기본 Snowflake 오브젝트뿐 아니라 이미지 리포지토리, 컴퓨팅 풀, 서비스 등의 오브젝트로도 사용해야 합니다.
Snowflake는 이미지 저장을 위해 `OCIv2<https://github.com/opencontainers/distribution-spec/blob/main/spec.md>`_ 호환 서비스인 *이미지 레지스트리*를 제공합니다. 이 서비스를 사용하면 Open Container Initiative(OCI) 클라이언트(예: Docker CLI)가 애플리케이션 이미지를 Snowflake 계정의 *리포지토리*(저장 단위)에 업로드할 수 있습니다. CREATE IMAGE REPOSITORY 명령을 사용하여 리포지토리를 생성합니다. 자세한 내용은 이미지 레지스트리 및 리포지토리 작업 섹션을 참조하세요.
애플리케이션 이미지를 리포지토리에 업로드한 후에는 :doc:`장기 실행 *서비스*를 생성하거나 *작업 서비스*를 실행</developer-guide/snowpark-container-services/working-with-services>`하여 애플리케이션을 실행할 수 있습니다.
서비스: 서비스가 장기간 실행 중이며 웹 서비스와 마찬가지로 더 이상 필요하지 않으면 명시적으로 중지합니다. 어떤 이유로든 서비스 컨테이너가 종료되면 Snowflake는 해당 컨테이너를 다시 시작합니다. 풀 스택 웹 애플리케이션과 같은 서비스를 생성하려면 CREATE SERVICE 명령을 사용합니다.
작업 서비스: 작업 서비스는 저장 프로시저와 유사하게 수명이 유한합니다. 모든 컨테이너가 종료되면 작업 서비스가 완료됩니다. Snowflake는 어떤 작업 서비스 컨테이너도 다시 시작하지 않습니다. GPUs를 사용하는 머신 러닝 모델 학습과 같은 작업 서비스를 시작하려면 EXECUTE JOB SERVICE 명령을 사용합니다.
서비스(작업 서비스 포함)는 하나 이상의 가상 머신(VM) 노드 모음인 *컴퓨팅 풀*에서 실행됩니다. 먼저 CREATE COMPUTE POOL 명령을 사용하여 컴퓨팅 풀을 생성한 다음 서비스 또는 작업 서비스를 생성할 때 컴퓨팅 풀을 지정합니다. 컴퓨팅 풀을 생성하는 데 필요한 정보에는 머신 유형, 컴퓨팅 풀을 시작하는 데 사용할 최소 노드 수, 컴퓨팅 풀이 확장할 수 있는 최대 노드 수가 포함됩니다. 지원되는 머신 유형 중 일부는 GPU를 제공합니다. 자세한 내용은 컴퓨팅 풀 작업하기 섹션을 참조하세요.
서비스를 생성한 후 서비스를 생성한 동일한 Snowflake 계정 의 사용자는 적절한 권한이 있는 경우 서비스를 사용할 수 있습니다. 자세한 내용은 서비스 사용하기 섹션을 참조하십시오.
참고
Snowpark Container Services 설명서는 개념 설명과 예에서 주로 SQL 명령과 함수를 사용합니다. Snowflake는 또한 대부분의 작업을 위한 Python API, REST API, Snowflake CLI 명령줄 도구 등 다른 인터페이스도 제공합니다.
사용 가능한 리전 및 고려 사항¶
Snowpark Container Services는 다음을 제외한 모든 리전 에서 제공됩니다.
Snowpark Container Services는 공공 부문(정부) 워크로드 를 AWS US 동부(상업용 정부 - 북부 버지니아) 리전에서 지원하며 다른 AWS 또는 Azure 정부 리전에서는 사용할 수 없습니다.
평가판 계정에서는 노트북을 실행 중인 경우를 제외하고는 Snowpark Container Services를 사용할 수 없습니다.
다음에는 무엇을 해야 합니까?¶
Snowpark Container Services를 처음 사용하는 경우 먼저 자습서를 살펴본 다음 다른 주제를 계속 진행하며 자세히 알아보고 스스로 컨테이너화된 애플리케이션을 만들어 보시기 바랍니다. 다음 항목에서는 자세한 정보를 제공합니다.
자습서: 이들 입문용 자습서 에서는 Snowpark Container Services를 탐색하는 데 필요한 단계별 지침을 제공합니다. 초기 탐색 후에는 고급 자습서 를 계속 진행할 수 있습니다.
서비스 사양 참조: 이 참조는 서비스 사양을 생성하는 YAML 구문 을 설명합니다.
서비스 및 작업 서비스 작업: 다음 항목에서는 서비스 및 작업 서비스 개발에 사용하는 Snowpark Container Services 구성 요소에 대한 세부 정보를 제공합니다.
참조: Snowpark Container Services는 다음과 같은 SQL 명령과 함수를 제공합니다.
SQL 명령: Snowpark Container Services 명령 및 CREATE FUNCTION(Snowpark Container Services)
SQL 함수:
시스템 함수: SYSTEM$GET_SERVICE_LOGS
스칼라 함수: Snowpark Container Services 함수
테이블 값 함수:
청구: 이 항목에서는 Snowpark Container Services 사용과 관련된 비용을 설명합니다.