Python Connector의 종속성 관리 정책

Python용 Snowflake 커넥터에서는 서드 파티 라이브러리를 사용하며, 이러한 라이브러리는 Snowflake 데이터베이스와 통신하기 위해 필수적입니다. Snowflake는 편리하고 신뢰할 수 있는 종속성 관리를 위해 노력하지만, 각 라이브러리로 인해 Python용 Snowflake 커넥터에서 예기치 않은 동작이 발생하거나 다른 라이브러리와 충돌할 수 있는 변경 사항이 추가될 수 있습니다.

이 항목에서 다루는 정보는 다음과 같습니다.

  • 종속 라이브러리 버전을 Python용 Snowflake 커넥터의 요구 사항으로 선택하는 방법을 결정하기 위한 정책입니다.

  • 종속 라이브러리의 변경으로 인해 발생할 수 있는 문제를 처리하기 위한 프로세스입니다.

이 항목의 내용:

종속성 요구 사항을 결정하기 위한 정책

Python용 Snowflake 커넥터는 다음 규칙에 따라 종속성 요구 사항을 설정합니다.

  • Python용 Snowflake 커넥터가 패키지를 직접 참조하는 경우에는 해당 패키지의 이름이 종속성 목록에 포함됩니다.

  • 각 종속 라이브러리와 관련하여 요구 사항은 라이브러리의 하한 및 상한 버전을 모두 지정합니다.

    • 하한 버전(최소 버전)은 라이브러리가 동작하는지 확인하기 위해 사용되는 가장 이른 버전입니다.

    • 상한 버전(지원되지 않는 맨 처음 버전)은 다음 주 버전입니다.

      부 버전이 변경되어 호환성이 유지되지 않으면 해당 부 버전으로 상한 버전이 설정됩니다.

    이를 통해 종속 라이브러리의 특정 버전으로 커넥터를 테스트할 수 있는 안정적인 환경이 제공됩니다.

참고

이러한 규칙에서는 Python용 Snowflake 커넥터 등 모든 패키지가 의미 체계 버전 관리 가이드라인 을 준수하는 것으로 가정됩니다. 이러한 가이드라인에 따라, 라이브러리의 부 버전 또는 패치 버전에서는 API가 변경되지 않아야 합니다.

종속 라이브러리 변경으로 인한 문제 처리하기

종속성 관리 정책은 종속성 라이브러리 변경의 영향을 최소화하도록 설계되었지만 예기치 않은 상황에서 문제가 발생할 수 있습니다. 이 섹션에서는 각 사례를 처리하는 방법을 설명합니다.

사례 1. 종속 라이브러리에서의 API 또는 동작 변경

종속 라이브러리의 새 버전에서 API(및/또는 동작)가 변경되어 문제가 발생하는 경우 Snowflake는 지원되는 버전 범위에서 종속 라이브러리의 새 버전을 제외하는 Python용 Snowflake 커넥터의 새 버전을 출시합니다. Snowflake는 최대한 빠른 시일 내에 이러한 변경을 수행합니다. (Snowflake는 다음 릴리스에서 문제를 해결하기 위해 최선을 다합니다.)

예를 들어, 요구 사항 파일이 종속 라이브러리 package1 에 대한 이러한 버전 범위를 지정하는 것으로 가정해 보겠습니다.

package1>=1.0,<2.0
Copy

이론적으로 API는 이러한 범위에서 릴리스된 버전에서 변경되지 않아야 합니다. 그러나 1.3 버전의 변경으로 호환성이 유지되지 않는 경우 상한 버전이 변경되어 1.3 이상 버전이 제외됩니다.

package1>=1.0,<1.3
Copy

이러한 변경은 문제를 임시로 해결하기 위한 것입니다. 문제가 해결되면 Snowflake는 상한 버전을 라이브러리의 다음 주 버전으로 다시 변경합니다.

사례 2. 종속 라이브러리에 상한 이상의 새 버전 도입

이러한 경우 Python용 Snowflake 커넥터가 새 버전의 라이브러리와 작동하는지 확인한 후 Python용 Snowflake 커넥터의 다음 릴리스에서 지원되는 버전의 범위에 새 버전을 포함합니다. 예를 들어, 요구 사항 파일이 종속 라이브러리 package1 에 대한 이러한 버전 범위를 지정하는 것으로 가정해 보겠습니다.

package1>=1.0,<2.0
Copy

package1 버전 2.0이 릴리스된 경우 새 버전은 필수 버전의 범위를 벗어나므로 Python용 Snowflake 커넥터에서 새 버전을 사용할 수 없습니다. Snowflake는 이러한 사례를 감지하는 테스트를 자동화했습니다.

이 새 라이브러리 버전을 지원해야 하는 중요한 이유(예: 새 버전에 보안 패치가 포함된 경우)가 있는 경우, Snowflake는 문제가 보고된 이후의 다음 릴리스에서 업데이트된 Snowflake 커넥터를 릴리스하기 위해 최선을 다합니다.