OpenFlow gen 1과 gen 2

OpenFlow gen 1과 gen 2

gen 2 배포·런타임 SQL 객체는 AWS, Azure, GCP에서 일반 공개(GA) 상태예요. gen 2 커넥터 구성은 Public Preview 상태예요(Connectors 참고).

출처: Snowflake 문서 — OpenFlow gen 1과 gen 2

본문

활성화된 계정은 gen 1과 gen 2 OpenFlow 리소스를 모두 사용할 수 있어요.

  • 1세대 (gen 1) — 런타임은 기존 gen 1 배포에서 OpenFlow UI로 만들어요. 새 gen 1 배포는 더 이상 만들 수 없어요. 커넥터는 Install(OpenFlow UI)로 커넥터 카탈로그에서 설치하고 런타임 캔버스에서 구성하는 Apache NiFi 프로세스 그룹이에요.
  • 2세대 (gen 2) — 배포·런타임·커넥터는 SQL 명령(CREATE OPENFLOW DEPLOYMENT, CREATE OPENFLOW RUNTIME, CREATE OPENFLOW CONNECTOR)으로 만들거나 OpenFlow UI의 커넥터 카탈로그에서 설치하는 일급 Snowflake 객체예요. gen 2 커넥터는 버전 관리 구성을 가진 FBE(파일 기반 엔티티)이며 설정 마법사를 사용할 수 있어요.

새로 만드는 모든 OpenFlow 배포는 gen 2예요. 기존 gen 1 배포는 마이그레이션할 때까지 gen 1로 남고, gen 1 배포의 새 런타임은 gen 1이에요. gen 2 런타임은 gen 1과 gen 2 커넥터를 모두 지원하므로, 커넥터의 gen 2 버전을 기다릴 필요 없이 gen 2 런타임에서 사용할 수 있어요. 이 주제는 gen 1과 gen 2가 어떻게 다른지, 각각 어떤 문서를 따라야 하는지 설명해요.

개요 (Overview)

gen 1과 gen 2 리소스는 같은 OpenFlow 플랫폼 개념 — BYOC와 OpenFlow - Snowflake Deployment 배포 유형, NiFi 기반 데이터 이동, 대상으로서의 Snowflake — 을 공유하지만, 객체를 만들고 보안을 적용하고 관리하는 방식에서 달라요.

gen 2는 장기적인 OpenFlow 관리 모델이에요: SQL로 접근 가능한 객체, 세분화된 권한, 커밋된 구성 버전을 가진 커넥터예요. 이미 보유한 gen 1 리소스는 계속 변경 없이 작동해요. 새 gen 2 리소스는 별도로 만들어지고 gen 2 생명주기 규칙을 따르며, 그렇지 않아요.

왜 gen 2로 마이그레이션하나? (Why migrate to gen 2?)

모든 것을 SQL로 관리 (Manage everything with SQL) — gen 2 배포·런타임·커넥터는 일급 Snowflake 객체예요. SQL 명령(CREATE OPENFLOW DEPLOYMENT, ALTER OPENFLOW CONNECTOR ... START 등)이나 OpenFlow UI로 만들고, 구성하고, 시작하고, 중지하고, 제거할 수 있어요. 이들이 표준 SQL 연산이므로, 비업무 시간대에 런타임 중지를 프로그래밍 방식으로 예약해 총 소유 비용(TCO)을 줄일 수 있어요.

CI/CD 및 인프라-as-코드 (CI/CD and infrastructure as code) — gen 2 커넥터는 구성을 버전 관리 파일(FBE)로 저장해요. Draft 변경을 만들고, 커밋하고, 이전 버전으로 롤백할 수 있어요. Git 워크플로를 통해 검증된 구성을 여러 환경에서 재사용하고, 클릭이 아닌 방식으로 구성을 dev에서 prod로 승격하고, 커넥터 관리를 CI/CD 파이프라인에 통합할 수 있어요. gen 2 객체는 인프라-as-코드 워크플로를 위해 Snowflake Terraform 프로바이더도 지원해요.

안내 설치를 위한 설정 마법사 (Setup wizard for guided installation) — gen 2 커넥터는 시작 전에 연결성과 구성을 검증하는 단계별 설정 마법사로 설치할 수 있어요. gen 1 커넥터 설치는 캔버스에서 프로세서, 컨트롤러 서비스, 파라미터 컨텍스트를 수동으로 구성해야 해요.

세분화된 접근 제어 (Granular access control) — gen 2 런타임과 커넥터는 표준 Snowflake RBAC를 가진 스키마 범위 객체예요. GRANT USAGE와 GRANT OPERATE로 누가 배포를 보고, 런타임을 운영하고, 커넥터를 관리할 수 있는지 제어해요.

시작하려면: gen 1에서 gen 2로의 마이그레이션은 Private Preview로 제공돼요. 포함되려면 Snowflake 계정 담당자에게 문의하세요.

리소스 유형별 비교 (Comparison by resource type)

배포 (Deployments)

gen 1 gen 2
생성 사용 불가 — 새 gen 1 배포를 만들 수 없어요. CREATE OPENFLOW DEPLOYMENT (UI 또는 SQL)
필요한 권한 N/A 계정에 대한 CREATE OPENFLOW DEPLOYMENT
문서 OpenFlow - BYOC 설정, OpenFlow - Snowflake Deployment 설정 - 작업 개요 Quickstart: gen 2 OpenFlow, 2세대 OpenFlow 객체와 인터페이스
이벤트 테이블 데이터 플레인 통합에 설정(ALTER OPENFLOW DATA PLANE INTEGRATION ... SET EVENT_TABLE). 생성 시 통합에 저장된 값. DESCRIBE OPENFLOW DATA PLANE INTEGRATION으로 확인. [선택] OpenFlow 특정 이벤트 테이블 구성 배포 객체의 선택적 EVENT_TABLE. 설정하지 않으면 계정 수준 이벤트 테이블을 상속. SHOW PARAMETERS LIKE 'EVENT_TABLE' IN OPENFLOW DEPLOYMENT <name>으로 확인.
가용성 기존 gen 1 배포는 계속 변경 없이 작동. 새 gen 1 배포는 만들 수 없음. 모든 새 배포는 gen 2이며 CREATE OPENFLOW DEPLOYMENT로 생성.

참고: Snowflake 배포 한도 — 각 계정은 최대 3개의 Snowflake OpenFlow 배포를 지원해요. gen 1과 gen 2 배포가 이 한도를 공유하며, 계정에 이미 Snowflake 배포가 3개 있으면 세대와 무관하게 CREATE OPENFLOW DEPLOYMENT WITH DEPLOYMENT_TYPE = SNOWFLAKE가 실패해요.

런타임 (Runtimes)

gen 1 gen 2
생성 CREATE OPENFLOW RUNTIME INTEGRATION (UI 또는 SQL) CREATE OPENFLOW RUNTIME ... IN DEPLOYMENT ... (UI 또는 SQL)
계정 또는 스키마 수준 객체 계정 수준 OPENFLOW RUNTIME INTEGRATION 객체 스키마 수준 객체; 정규화된 이름 <database>.<schema>.<runtime_name>. 커넥터 실행 중 읽기·쓰기 접근은 런타임 객체가 있는 스키마가 아니라 런타임의 EXECUTE_AS_ROLE에 의해 결정돼요.
필요한 권한 계정에 대한 CREATE OPENFLOW RUNTIME INTEGRATION 대상 스키마에 대한 CREATE OPENFLOW RUNTIME, 포함 데이터베이스에 대한 USAGE, 배포에 대한 USAGE(스키마 소유자는 명시적 CREATE OPENFLOW RUNTIME 부여 없이 생성 가능)
런타임 객체 권한 OPENFLOW RUNTIME INTEGRATION 객체에 대한 USAGE, OPERATE, MONITOR 런타임에 대한 USAGE, OPERATE, MONITOR 및 데이터베이스·스키마에 대한 USAGE
삭제 중지 후 UI에서 삭제(런타임 삭제 워크플로 참조) UI: Runtimes 탭의 런타임 메뉴에서 Suspend → Delete → Drop(런타임 삭제 워크플로 참조). SQL: ALTER OPENFLOW RUNTIME ... SUSPEND → TERMINATE → DROP
문서 OpenFlow - Snowflake Deployment 설정: 런타임 생성, Manage Openflow Quickstart: gen 2 OpenFlow, 2세대 OpenFlow 객체와 인터페이스
세대 부모 배포에서 결정. gen 1 배포에 추가된 모든 런타임은 gen 1. 부모 배포에서 결정. gen 2 배포에 추가된 모든 런타임은 gen 2.

커넥터 (Connectors, Public Preview)

gen 1 gen 2
생성 카탈로그에서 Install(OpenFlow UI)로 설치하거나 런타임 캔버스에서 레지스트리에서 가져오기(공존 참조) OpenFlow UI: 카탈로그에서 설치(gen 2 항목, 설정 마법사). SQL: CREATE OPENFLOW CONNECTOR ... FROM DEFINITION(Quickstart: gen 2 OpenFlow, gen 2 커넥터를 SQL로 구성 참조). 검증된 구성을 재사용하려면 gen 2 커넥터 구성 및 버전 관리의 알려진 구성에서 생성 참조.
객체 유형 런타임 캔버스의 NiFi 프로세스 그룹(별도 Snowflake 객체 아님) 스키마 수준 OPENFLOW CONNECTOR FBE(파일 기반 엔티티), 버전 스테이지 구성 포함
구성 런타임 캔버스: 파라미터 컨텍스트, 컨트롤러 서비스, 프로세서 설정 마법사, Installed Connectors » Edit, 또는 SQL/스테이지 명령(커넥터 live 버전에서 PUT/COMMIT). gen 2 커넥터 구성 및 버전 관리 참조.
캔버스 전체 읽기·쓰기 구성 표면 gen 2 커넥터에 대해 읽기 전용; 구성 변경에는 Installed Connectors » Edit 또는 SQL/API 사용
생명주기 캔버스에서 프로세서 시작/중지; 커넥터별 문서화된 캔버스·UI 단계로 제거 UI: Installed Connectors에서 Start/Stop; Stop → Delete → Drop으로 제거(gen 2 OpenFlow 커넥터 생명주기 관리 참조). SQL: `ALTER OPENFLOW CONNECTOR ... START
문서 OpenFlow 커넥터 및 커넥터별 설정 주제 설정 마법사로 커넥터 구성, gen 2 OpenFlow 커넥터 생명주기 관리, gen 2 커넥터 구성 및 버전 관리

권한 부여 차이 (Authorization differences)

배포에 대한 USAGE는 런타임 가시성을 부여하지 않음

gen 1에서는 배포에 대한 USAGE가 있는 사용자가 그 배포의 런타임을 볼 수 있어요.

gen 2에서는 배포에 대한 USAGE가 그 배포의 런타임에 대한 접근을 부여하지 않아요. 런타임에 접근하거나 관리하려면 사용자가 런타임 자체에 직접 부여된 USAGE, OPERATE, MONITOR 및 런타임의 데이터베이스·스키마에 대한 USAGE가 있어야 해요.

사용자는 배포를 보려면 배포에 대한 권한이 있어야 함

gen 1에서는 모든 사용자가 계정의 모든 배포를 볼 수 있어요.

gen 2에서는 사용자가 배포를 목록에서 보려면 그 배포에 대한 적격 권한을 가진 역할을 보유해야 해요. 보조 역할(secondary role)이 활성화되면 배포 가시성 결정에 보조 역할이 고려돼요.

런타임 객체 권한

gen 1 런타임은 계정 수준 OPENFLOW RUNTIME INTEGRATION 객체로 표시돼요. 그 통합 객체에 필요한 권한은 USAGE, OPERATE, MONITOR예요.

gen 2 런타임은 스키마 수준 객체예요. 필요한 권한은:

  • 런타임 객체 자체에 대한 USAGE, OPERATE, MONITOR, 그리고
  • 런타임의 데이터베이스·스키마에 대한 USAGE

커넥터 권한 (Public Preview)

대부분의 커넥터 연산은 부모 런타임에서 권한을 파생해요. 런타임에 대한 USAGE가 있으면 그 런타임의 커넥터를 시작·중지·구성·종료할 수 있어요. 메타데이터 변경, 이름 변경, DROP에는 커넥터 객체 자체에 대한 OWNERSHIP이 필요해요.

OWNERSHIP 전송 (Transferring OWNERSHIP)

gen 2 OpenFlow 배포·런타임·커넥터에 대한 GRANT OWNERSHIP은 현재 기본 기능을 깨뜨릴 수 있어요(예: 배포 에이전트 자격 증명이나 런타임 제어 플레인 바인딩). SQL에서는 명령이 받아들여지지만, 다가오는 업데이트가 이 동작을 해결할 때까지 소유권을 이전하지 마세요.

동작 차이 (Behavior differences)

런타임 삭제 워크플로 (Runtime deletion workflow)

어느 세대든 런타임을 삭제하기 전에 그 런타임의 커넥터를 먼저 중지하세요.

gen 1 런타임은 이 워크플로를 따라요:

ACTIVE → (커넥터 중지) → (중단) → SUSPENDED → (UI에서 삭제) → 제거됨

gen 2 런타임은 이 워크플로를 따라요:

ACTIVE → (커넥터 중지) → (중단) → SUSPENDED → (종료) → TERMINATED → (drop) → 제거됨

ALTER OPENFLOW RUNTIME ... TERMINATE는 제거 전에 이동 중인 커넥터 데이터를 비워요. 데이터 손실을 감수하고 큐를 비우려면 TERMINATE FORCE를 사용하세요.

UI에서:

  1. 런타임의 커넥터를 중지하세요.
  2. Launch Openflow를 선택하고 Runtimes 탭을 연 뒤 런타임 메뉴를 여세요.
  3. Suspend를 선택하세요.
  4. 같은 메뉴에서 Delete를 선택하세요(런타임 종료).
  5. 같은 메뉴에서 Drop을 선택하세요.

SQL에서:

ALTER OPENFLOW RUNTIME my_db.my_schema.my_runtime SUSPEND;
SELECT SYSTEM$WAIT_FOR_STABLE_OPENFLOW_RUNTIMES(600, 'my_db.my_schema.my_runtime');

ALTER OPENFLOW RUNTIME my_db.my_schema.my_runtime TERMINATE;
SELECT SYSTEM$WAIT_FOR_STABLE_OPENFLOW_RUNTIMES(600, 'my_db.my_schema.my_runtime');

DROP OPENFLOW RUNTIME my_db.my_schema.my_runtime;

UI 기반 워크플로에서는 각 단계가 끝나기를 기다렸다가 다음을 시작하세요. 스크립트에서는 비동기 ALTER 명령 뒤에 SYSTEM$WAIT_FOR_STABLE_OPENFLOW_*를 호출해 주세요. SYSTEM$WAIT_FOR_STABLE_OPENFLOW_DEPLOYMENTS, SYSTEM$WAIT_FOR_STABLE_OPENFLOW_RUNTIMES, SYSTEM$WAIT_FOR_STABLE_OPENFLOW_CONNECTORS를 참고하세요.

커넥터 삭제 워크플로 (Public Preview)

gen 1 커넥터는 런타임 캔버스의 NiFi 프로세스 그룹이에요. OPENFLOW CONNECTOR 객체가 아니므로 ALTER OPENFLOW CONNECTOR나 DROP OPENFLOW CONNECTOR로 제거할 수 없어요. 캔버스와 그 커넥터의 공개 설정·유지보수 주제에서 커넥터별 단계로 수집을 중지하고 프로세스 그룹을 제거하세요.

gen 2 커넥터는 중지 → 종료 → 삭제(stop → terminate → drop)로 제거하는 일급 Snowflake 객체예요. 일상적 제어에는 Installed Connectors에서 Start/Stop 또는 ALTER OPENFLOW CONNECTOR ... START|STOP을, 제거에는 Delete/Drop 또는 TERMINATE/DROP OPENFLOW CONNECTOR를 사용하세요. UI Delete는 TERMINATE에, UI Drop은 DROP OPENFLOW CONNECTOR에 매핑돼요. TERMINATE는 제거 전에 이동 중인 데이터를 비워요.

전체 UI·SQL 제거 단계, 대기 함수, 정리 지침은 gen 2 OpenFlow 커넥터 생명주기 관리를 참고하세요.

gen 2 커넥터 구성 (Public Preview)

gen 1 커넥터는 런타임 캔버스에서 구성돼요: 파라미터 컨텍스트, 컨트롤러 서비스, 프로세서를 그 커넥터의 공개 설정 문서에 따라 구성해요.

gen 2 커넥터는 버전 관리 구성을 사용해요(gen 2 커넥터 구성 및 버전 관리 참조). Draft 상태의 커넥터는 시작하기 전에 커밋해야 해요. 커밋된 default 버전과 함께 live 버전이 존재하면 UI가 Edits not applied를 표시해요.

gen 2 커넥터의 경우 런타임 캔버스는 구성에 대해 읽기 전용이에요. 설정을 변경하려면 Installed Connectors » Edit, 설정 마법사, 또는 SQL/API 명령을 사용하세요.

gen 1과 gen 2 리소스 식별 방법 (How to identify gen 1 and gen 2 resources)

리소스가 gen 1인지 gen 2인지 확실하지 않을 때 다음 확인을 사용하세요.

OpenFlow UI에서

가장 빠른 확인은 OpenFlow의 gen 2 라벨이에요.

  • 배포와 런타임 — gen 2 리소스는 OpenFlow UI에 gen 2 태그를 보여줘요. gen 1 리소스는 그렇지 않아요.

SQL에서의 배포·런타임

gen 1과 gen 2 객체는 다른 SHOW 명령을 사용해요. 이들은 일반 SHOW INTEGRATIONS 명령이 아닌 OpenFlow 특정 목록이에요.

  • gen 2 배포 — SHOW OPENFLOW DEPLOYMENTS로 나열돼요. 보려면 배포에 대한 적격 권한을 보유해야 해요.
  • gen 1 배포 — SHOW OPENFLOW DATA PLANE INTEGRATIONS로 나열돼요. SHOW OPENFLOW DEPLOYMENTS에는 나타나지 않아요.
  • gen 2 런타임 — SHOW OPENFLOW RUNTIMES IN ACCOUNT로 나열돼요. 각 행에 database_name과 schema_name 컬럼이 포함되며, 정규화된 이름은 <database>.<schema>.<runtime_name>이에요.
  • gen 1 런타임 — SHOW OPENFLOW RUNTIME INTEGRATIONS로 나열돼요. 런타임 이름은 스키마로 정규화되지 않으며 SHOW OPENFLOW RUNTIMES에 나타나지 않아요.

SHOW OPENFLOW DEPLOYMENTS가 SQL 오류(빈 결과가 아니라)를 반환하면 그 계정은 gen 2 SQL 객체를 지원하지 않아요. gen 1 SHOW OPENFLOW ... INTEGRATIONS 명령과 공개 gen 1 문서를 사용하세요.

커넥터 (Public Preview)

gen 2 커넥터는 일급 Snowflake 객체예요. gen 1 커넥터는 런타임 캔버스의 NiFi 프로세스 그룹일 뿐 — 별도 Snowflake 객체가 아니에요.

다음 중 어느 하나라도 해당하면 gen 2 커넥터예요:

  • 커넥터가 카탈로그나 Installed Connectors에 gen 2 라벨을 보여줘요.
  • 커넥터가 런타임의 Installed Connectors 탭에 나타나요.
  • SHOW OPENFLOW CONNECTORS 또는 DESCRIBE OPENFLOW CONNECTOR가 커넥터를 반환해요(접근 권한이 있을 때).

다음 중 어느 하나라도 해당하면 gen 1 커넥터예요:

  • 커넥터가 런타임 캔버스에는 보이지만 Installed Connectors에는 나타나지 않아요.
  • 커넥터가 캔버스에 설치됐어요(예: gen 1 런타임에서 카탈로그에서 Install, 또는 gen 2 런타임에서 레지스트리에서 Import — gen 1과 gen 2 공존 참조).

SQL로 gen 1과 gen 2 구분하기:

  • SHOW OPENFLOW CONNECTORS 또는 DESCRIBE OPENFLOW CONNECTOR가 커넥터를 반환하면(필요한 권한이 있을 때) gen 2예요.
  • 그 명령들이 행을 반환하지 않으면 커넥터가 gen 1이거나 부모 런타임에 대한 USAGE(또는 다른 필수 권한)가 없을 수 있어요. gen 1이라고 가정하기 전에 위의 UI 확인 — 특히 커넥터가 Installed Connectors에 나타나는지 — 을 사용하세요.

Installed Connectors에는 없는데 캔버스에 프로세스 그룹이 보이고 런타임에 접근 권한이 있다고 확인했다면, gen 1으로 취급하고 그 커넥터의 공개 설정 문서를 따르세요.

공존 (Coexistence)

gen 1과 gen 2 리소스는 같은 계정에 존재할 수 있어요. 규칙은 다음과 같아요.

  • 새 배포는 gen 2만 가능해요. 더 이상 새 gen 1 배포(BYOC 또는 Snowflake)를 만들 수 없어요 — 모든 새 배포는 CREATE OPENFLOW DEPLOYMENT를 사용해요. 기존 gen 1 배포는 계속 변경 없이 작동하고 마이그레이션할 수 있어요. gen 1에서 gen 2로의 마이그레이션은 Private Preview로 제공되며, 포함되려면 Snowflake 계정 담당자에게 문의하세요.
  • gen 2 런타임 — gen 1과 gen 2 커넥터를 모두 지원하며, 두 유형이 같은 런타임에 공존할 수 있어요. OpenFlow UI의 커넥터 카탈로그에서 gen 2 커넥터를 설치해요(설정 마법사 사용).

팁: 소스에 대한 gen 2 카탈로그 항목이 아직 없거나 gen 1 커넥터가 더 선호된다면 커넥터 카탈로그에서 설치하세요 — 같은 gen 2 런타임에서 실행되고 그 커넥터의 공개 설정 문서를 따릅니다.

  • gen 1 런타임 — gen 1 커넥터만 지원해요. gen 1 런타임에 gen 2 커넥터를 설치하지 마세요.
  • Snowflake 배포 한도 — 각 계정은 최대 3개의 Snowflake OpenFlow 배포를 지원해요. gen 1과 gen 2 배포가 이 한도를 공유하며, 계정에 Snowflake 배포가 이미 3개 있으면 세대와 무관하게 CREATE OPENFLOW DEPLOYMENT WITH DEPLOYMENT_TYPE = SNOWFLAKE가 실패해요.
  • 공유 소스 설정 — 소스 준비(데이터베이스 권한, 네트워크 접근, 시크릿)는 종종 gen 1과 gen 2에 대해 같은 공개 커넥터 설정 문서를 따라요. gen 2 주제는 해당되는 곳에서 그 지침에 연결돼요.

gen 1에서 gen 2로의 마이그레이션은 Private Preview로 제공돼요. 포함되려면 Snowflake 계정 담당자에게 문의하세요.

따라야 할 문서 (Which documentation to follow)

이 결정 가이드로 올바른 주제를 선택하세요.

원하는 것 따라야 할 것
gen 1 vs gen 2 이해 (이 페이지) OpenFlow gen 1과 gen 2
gen 2 시작하기 (권한, 첫 gen 2 리소스) 2세대 OpenFlow 객체와 인터페이스, Quickstart: gen 2 OpenFlow
기존 gen 1 배포 관리, 또는 gen 1 런타임 생성 공개 OpenFlow 설정 및 Manage Openflow 주제
gen 1 카탈로그 커넥터 설치 (캔버스에서 Install 또는 Import from Registry) OpenFlow 커넥터 및 커넥터의 설정 주제
설정 마법사로 gen 2 커넥터 설치 설정 마법사로 커넥터 구성
gen 2 커넥터를 SQL로 구성 gen 2 커넥터를 SQL로 구성
gen 2 커넥터 시작·중지·제거 gen 2 OpenFlow 커넥터 생명주기 관리
gen 2 커넥터 구성 버전 관리 (draft, commit, abort) gen 2 커넥터 구성 및 버전 관리
gen 2 배포·런타임·커넥터 SQL 참조 2세대 OpenFlow SQL 명령 참조
데이터 소스 준비 (예: PostgreSQL CDC) 커넥터의 공개 설정 주제; 커넥터 생성은 gen 2 문서로 돌아오기

더 알아보기 (Learn more)