Data Connection 핵심 개념
Data Connection에서는 연결 대상과 인증 정보를 담은 소스, 연산 위치를 정하는 워커, 통신 경로를 정하는 외부 통신 정책, 실제로 수행할 연결 기능을 구분합니다. 외부 시스템에 연결할 수 있다는 것과 그 연결에서 특정 수집 또는 내보내기 기능을 실행할 수 있다는 것은 별개의 조건입니다.
소스와 커넥터
소스(Source)는 외부 시스템으로 연결하는 하나의 연결 리소스입니다. 대상 시스템의 위치를 나타내는 URL 등의 설정과 인증에 필요한 정보를 포함합니다. 소스에는 연결 기능을 실행할 워커도 지정합니다.
커넥터(Connector)는 소스를 구성하는 구현 유형입니다. 같은 맥락에서 소스 유형(Source type)이라고도 부릅니다. 조직에서 사용하는 여러 데이터 시스템에 대응하는 커넥터가 제공되며, 선택한 커넥터와 워커에 따라 사용할 수 있는 연결 기능이 달라집니다.
전용 커넥터가 없는 시스템에는 범용 커넥터나 REST API 소스를 사용할 수 있습니다. 여기에 외부 연결 변환, 외부 연결 함수나 Compute modules를 결합하여 코드로 연결 기능을 구현할 수 있습니다.
인증 정보
인증 정보(Credential)는 외부 시스템에 접근할 때 필요한 비밀번호, 토큰, API 키 등의 비밀값입니다. 플랫폼은 인증 정보를 암호화하여 관리합니다. 워커 구성에 따라 비밀 정보의 관리 위치가 Data Connection 에이전트 또는 플랫폼이 될 수 있으며, 저장 위치와 복호화 키의 위치는 연결 구조에서 구분합니다.
소스에 비밀값을 저장하지 않는 인증 방식도 있습니다. 지원되는 소스에서는 OpenID Connect(OIDC), 외부 인증 애플리케이션(Outbound application)이나 클라우드 신원(Cloud identity)을 사용할 수 있습니다. 다만 소스가 어떤 인증 방식을 지원하는지와 그 인증 방식을 코드에서 사용할 수 있는지는 별도로 확인해야 합니다.
외부 인증 애플리케이션은 Foundry가 외부 OAuth 2.0 서버의 클라이언트로 동작하도록 구성하는 조직 수준의 인증 설정 묶음입니다. 클라우드 신원은 정적 인증 정보 없이 클라우드 리소스에 접근하는 데 사용하며 플랫폼 인스턴스 수준에서 관리합니다.
워커와 연산 위치
워커(Worker)는 연결 기능의 연산 위치를 결정하고, 네트워크 설정은 대상 시스템까지의 통신 경로를 결정합니다. 사용할 수 있는 워커는 소스 유형에 따라 다릅니다.
Foundry 워커
Foundry 워커(Foundry worker)는 연결 기능의 연산을 Foundry의 컨테이너화된 실행 환경에서 수행합니다. 작업에 맞추어 자원을 확장할 수 있고, 연산을 실행하는 별도의 고객 관리 에이전트 호스트가 필요하지 않습니다.
외부 시스템까지의 경로는 외부 통신 정책으로 구성합니다. 직접 연결 정책과 에이전트 프록시 정책을 모두 사용할 수 있습니다. 에이전트 프록시를 사용해도 연산 위치는 Foundry입니다.
Foundry 워커 소스는 코드에서 사용할 수 있습니다. 실제 사용 가능 여부에는 인증 방식의 제한도 적용됩니다.
에이전트 워커
에이전트 워커(Agent worker)는 고객이 준비한 호스트의 에이전트에서 연결 기능을 실행합니다. 호스트에서 원천 시스템에 접근할 수 있어야 하며 방화벽과 프록시도 호스트에서 직접 구성합니다.
에이전트 워커는 기존 기능 유지 단계(Legacy)입니다. 기존 소스는 계속 동작하고 지원받을 수 있지만, 새 연결에는 Foundry 워커가 권장됩니다. 차이와 전환 절차는 워커 비교와 마이그레이션에서 설명합니다.
외부 통신 정책과 네트워크 경로
외부 통신 정책(Egress policy)은 Foundry가 어느 외부 목적지에 어떤 경로로 접근할 수 있는지 정합니다. Foundry 워커 소스에서는 이 정책으로 네트워크 연결을 구성합니다.
| 정책 | 용도와 조건 |
|---|---|
| 직접 연결 정책(Direct connection policy) | Foundry에서 직접 도달할 수 있는 시스템에 사용합니다. 클라우드 Foundry에서는 보통 인터넷상의 시스템이며, 사설 호스팅에서는 Foundry가 설치된 네트워크의 시스템이 해당합니다. |
| 에이전트 프록시 정책(Agent proxy policy) | Foundry와 다른 네트워크에 있는 시스템에 사용합니다. 에이전트를 설치하고 그 호스트에서도 대상 시스템에 접근할 수 있도록 구성해야 합니다. Rubix 기반 Foundry 플랫폼 인스턴스에서만 사용할 수 있습니다. |
Rubix는 Palantir의 Kubernetes 기반 인프라입니다.
한 소스에 직접 연결 정책과 에이전트 프록시 정책을 함께 지정할 수도 있습니다. 가령 인터넷상의 인증 서비스에서 인증 정보를 얻고, 그 정보로 사내 시스템에 접근하는 구성을 만들 수 있습니다.
에이전트 워커 소스는 외부 통신 정책 대신 에이전트 호스트에서 네트워크를 직접 구성합니다.
Data Connection 에이전트
Data Connection 에이전트(Agent)는 조직 네트워크 안에 설치하고 Data Connection 화면에서 관리하는 프로그램입니다. 조직 안의 여러 외부 시스템에 연결할 수 있으며, 에이전트 프록시 경로와 기존 에이전트 워커 연결에 사용합니다.
이 에이전트는 AI 에이전트나 Apollo의 소프트웨어 배포 에이전트와 다른 역할을 수행합니다. Data Connection에서는 외부 시스템의 네트워크 접근과, 에이전트 워커 방식일 경우 연결 기능의 실행을 담당합니다.
연결 기능 선택
연결 기능(Capability)은 소스를 통해 실행하는 기능입니다. 수집, 내보내기, 외부 데이터의 가상화와 대화형 요청 등을 포함합니다.
| 연결 기능 | 데이터의 이동 또는 작업 대상 |
|---|---|
| 배치 동기화(Batch sync) | 외부 시스템에서 Foundry 데이터셋으로 수집 |
| Iceberg 동기화(Iceberg sync) | 외부 시스템에서 Foundry Iceberg 테이블로 수집 |
| 스트리밍 동기화(Streaming sync) | 외부 메시지 큐에서 Foundry 스트림으로 수집 |
| CDC 동기화(CDC sync) | 데이터베이스 변경을 변경 메타데이터와 함께 스트림으로 수집 |
| 미디어 동기화(Media sync) | 외부 미디어를 미디어 집합으로 수집 |
| HyperAuto | SAP 시스템의 스키마 탐색과 동기화, 파이프라인 및 온톨로지 생성 자동화 |
| 파일 내보내기(File export) | 데이터셋의 파일을 외부 파일시스템으로 전달 |
| 테이블 내보내기(Table export) | 데이터셋의 행을 외부 테이블로 전달 |
| 스트리밍 내보내기(Streaming export) | Foundry 스트림의 레코드를 외부 큐나 토픽으로 전달 |
| 웹훅(Webhook) | 외부 시스템에 구조화된 대화형 요청 실행 |
| 가상 테이블(Virtual table) | 외부 데이터 웨어하우스 등의 테이블을 Foundry의 가상 테이블로 등록 |
| 가상 미디어(Virtual media) | 외부 미디어를 복사하지 않고 미디어 집합의 항목으로 등록 |
| 원천 데이터 탐색(Exploration) | 다른 연결 기능을 실행하기 전에 외부 데이터와 스키마를 대화형으로 확인 |
| 코드에서 사용(Use in code) | 화면 기반 기능을 확장하거나 사용자 지정 연결을 구현. Foundry 워커 소스에서만 사용 가능 |
지원 기능은 커넥터마다 다릅니다. 새 소스 화면의 커넥터 카드에서도 지원 기능을 확인할 수 있으며 커넥터 이름이나 기능으로 검색할 수 있습니다. 다음 화면은 virtual을 검색한 예시입니다.
배치 동기화
배치 동기화에는 읽을 외부 데이터와 Foundry의 출력 데이터셋을 지정합니다. 증분 동기화를 구성할 수 있으며 스키마가 있는 데이터와 없는 데이터를 모두 처리할 수 있습니다.
각 실행 건은 출력 데이터셋의 단일 트랜잭션 안에서 데이터를 씁니다. 실행 도중 어느 지점에서든 실패하면 트랜잭션을 중단하고 해당 실행 건의 데이터를 커밋하지 않습니다. 따라서 부분 실패가 일부 데이터만 반영된 결과로 남지 않으며 출력 데이터셋은 실패한 실행 전 상태를 유지합니다.
실패 원인과 전체 스택 추적은 동기화의 Runs 탭에서 확인할 수 있습니다.
| 배치 유형 | 데이터 형식과 처리 | 대표적인 연결 대상 |
|---|---|---|
| 파일 배치 동기화 | 스키마 없이 파일을 데이터셋으로 가져옵니다. 후속 파일 기반 변환에서 파일에 접근할 수 있습니다. | S3, ABFS, Google Cloud Storage, SMB, SharePoint Online 등 파일시스템과 객체 저장소 |
| 테이블 배치 동기화 | 스키마가 있는 데이터를 가져옵니다. 동기화 정의에 외부 타입과 Foundry 타입 사이의 변환도 포함합니다. | Microsoft SQL Server, Postgres, SAP, Salesforce, NetSuite 등 데이터베이스와 SaaS |
Iceberg 동기화
일반 데이터셋 대신 Foundry Iceberg 테이블에 직접 기록합니다. 비증분 및 증분 수집과 여러 쓰기 모드를 지원합니다. Foundry 워커에서만 실행할 수 있고 일부 커넥터에서 제공합니다.
스트리밍 동기화와 CDC 동기화
스트리밍 동기화는 지연 시간이 짧은 데이터 피드를 제공하는 시스템에서 데이터를 받아 스트림에 전달합니다. Kafka, Amazon Kinesis와 Google Pub/Sub 등이 대표적인 대상입니다.
변경 데이터 캡처(Change data capture, CDC) 동기화는 변경 로그 메타데이터를 스트림에 함께 전달합니다. 일반적으로 지연 시간이 짧은 복제를 지원하는 데이터베이스에 사용합니다.
미디어 동기화와 가상 미디어
PDF, 이미지와 동영상 등의 미디어에는 일반 데이터셋보다 미디어 집합을 사용하는 것이 권장됩니다. 미디어 집합은 수집뿐 아니라 미디어의 변환과 활용에 맞춘 도구를 제공합니다.
미디어 동기화는 미디어 데이터를 Foundry로 수집합니다. 가상 미디어는 외부 시스템의 파일을 Foundry로 복사하지 않고, 해당 파일을 특정 미디어 집합의 가상 항목으로 등록합니다.
HyperAuto
HyperAuto는 SAP 시스템의 스키마를 동적으로 탐색하고 동기화와 파이프라인, 대응하는 온톨로지 생성을 자동화합니다. 현재 지원 대상은 SAP입니다.
내보내기
파일 내보내기는 Foundry 데이터셋의 기반 파일을 그대로 대상 파일시스템에 기록합니다. 테이블 내보내기는 스키마가 있는 데이터셋에서 행을 읽어 대상 시스템의 테이블에 씁니다. 스트리밍 내보내기는 스트림의 레코드를 지정한 외부 큐나 토픽에 기록합니다.
동기화가 외부 데이터를 Foundry로 가져오는 작업이라면 내보내기는 Foundry의 데이터를 외부로 전달하는 작업입니다. 동기화라는 용어 자체가 양방향 동기화를 뜻하지는 않습니다.
웹훅
웹훅은 Foundry 밖의 원천 시스템에 보내는 요청입니다. Data Connection에서 요청을 유연하게 정의하여 다양한 외부 시스템의 기능을 호출할 수 있습니다. 이벤트 알림만을 위한 기능으로 한정하지 않습니다.
가상 테이블
외부의 테이블 데이터를 Foundry의 가상 테이블 리소스로 등록할 수 있습니다. 개별 테이블을 등록하는 방식 외에 외부 시스템의 테이블을 동적으로 발견하고 자동으로 등록하는 방식도 지원합니다.
원천 데이터 탐색
동기화, 내보내기 등의 작업을 실행하기 전에 원천 시스템에 어떤 데이터가 있는지 살펴봅니다. 연결이 예상대로 작동하는지, 올바른 권한과 인증 정보를 사용하는지 확인하는 데 자주 사용합니다.
코드 기반 연결
코드 기반 연결은 전용 커넥터와 화면 설정으로 수행하는 기능을 확장하고, 외부 통신이 필요한 작업의 세부 동작과 성능을 직접 제어하는 방법입니다. 모든 커넥터를 코드에서 사용할 수 있지만, 새 코드 연결에는 보통 REST API 소스나 범용 커넥터가 권장됩니다.
에이전트 워커 소스는 코드에서 사용할 수 없습니다. Foundry 워커 소스에서도 클라우드 신원과 OIDC 등 인증 유형에 따라 사용할 수 있는 실행 경로를 확인해야 합니다.
외부 인증 애플리케이션으로 설정한 OAuth 인증은 Python 함수와 TypeScript v2 함수에서 사용할 수 있습니다. TypeScript v1 함수에서는 웹훅을 사용해야 합니다. 따라서 소스의 인증 방식이 지원되는지 판단할 때는 함수의 언어와 버전도 구분합니다.
| 코드 기반 수단 | 지원 범위와 제한 |
|---|---|
| 외부 연결 변환(External transform) | Python 변환에서 외부 시스템과 통신합니다. 파일 및 테이블 배치 동기화, 파일 및 테이블 내보내기, 미디어 동기화의 코드 대안이며 가상 미디어와 가상 테이블 등록에도 사용할 수 있습니다. |
| 외부 연결 함수: 기존 웹훅 | TypeScript v1에서는 소스를 가져와 이미 정의된 웹훅을 호출하고 사용자 지정 로직과 오류 처리를 추가합니다. TypeScript v2와 Python에서는 웹훅을 함수로 게시한 뒤 가져와 Ontology SDK로 호출할 수 있습니다. |
| 외부 연결 함수: 직접 호출 | TypeScript의 fetch 또는 Python의 requests로 외부 시스템을 직접 호출합니다. 웹훅의 코드 대안입니다. |
| Compute modules | 장시간 연산과 여러 언어로 작성한 연결을 지원합니다. 스트리밍 동기화와 내보내기, CDC 동기화, 웹훅의 코드 대안으로 사용할 수 있습니다. |
| 외부 모델(External model) | 현재 소스 가져오기를 지원하지 않습니다. 외부 통신 정책을 직접 사용해야 합니다. |
| Code Workspaces | 현재 소스 가져오기를 지원하지 않습니다. 외부 통신 정책을 직접 사용해야 합니다. |
| Code Workbook | 외부 연결을 지원하지 않습니다. |
기존 용어와 기능의 상태
Sync
Sync는 데이터를 Foundry로 가져오는 작업을 넓게 가리키던 용어입니다. 실제 기능을 구분할 때는 배치 동기화, 스트리밍 동기화, CDC 동기화, 미디어 동기화처럼 구체적인 종류를 사용합니다.
Tasks
Tasks는 Data Connection 플러그인의 사용자 지정 확장으로, YAML 설정과 Java 구현으로 정의하는 기능 단위입니다.
Tasks는 종료 예정 단계(Sunset)입니다. 아직 전체 지원은 제공하지만 새로운 Tasks 개발은 중단되었으며, 공식 지원 연결 기능은 Tasks를 사용하지 않는 방식으로 전환되었습니다. 기존 작업은 코드 기반 연결 방식으로 옮기는 것이 권장됩니다.
Direct connection
Foundry에서 실행하던 연결이 직접 외부 통신만 지원하던 시기에는 이를 direct connection 소스라고 불렀습니다. 현재 Foundry 워커는 직접 연결과 에이전트 프록시를 모두 지원하므로, 연산 방식과 네트워크 경로를 나누어 표현합니다.