Skip to main content

왜 올바른 파이프라인 구성이 중요한가요?

Lakeflow Connect의 수집 파이프라인은 한번 설정하면 지속적으로 운영되는 시스템입니다. 초기 구성을 올바르게 하지 않으면 데이터 누락, 성능 저하, 불필요한 비용 증가 등의 문제가 발생할 수 있습니다. 이 문서에서는 수집 파이프라인의 각 구성 요소를 상세히 설명하고, 운영 환경에서의 모범 사례를 안내합니다.

Unity Catalog Connection 설정

Connection이란?

Unity Catalog Connection 은 외부 데이터 소스에 접속하기 위한 자격증명과 연결 정보를 중앙에서 안전하게 관리 하는 객체입니다. 한번 생성하면 여러 파이프라인에서 재사용할 수 있습니다.
구성 요소역할사용하는 파이프라인
Connection: mysql_prodMySQL 프로덕션 연결고객 데이터 수집, 주문 데이터 수집
Connection: salesforce_crmSalesforce CRM 연결CRM 동기화
Connection: postgres_analyticsPostgreSQL 분석 DB 연결분석 DB 수집

Connection 생성 옵션 상세

MySQL Connection

CREATE CONNECTION mysql_prod
TYPE MYSQL
OPTIONS (
    host = 'mysql-prod.example.com',    -- MySQL 서버 주소
    port = '3306',                       -- 포트 (기본값: 3306)
    user = 'databricks_reader',          -- 접속 계정
    password = secret('scope', 'mysql-password'),  -- Secret 참조
    useSSL = 'true',                     -- SSL 암호화 사용
    trustServerCertificate = 'false'     -- 서버 인증서 검증
);

PostgreSQL Connection

CREATE CONNECTION postgres_analytics
TYPE POSTGRESQL
OPTIONS (
    host = 'postgres.example.com',
    port = '5432',
    user = 'databricks_cdc',
    password = secret('scope', 'pg-password'),
    database = 'analytics',              -- 대상 데이터베이스 지정
    sslmode = 'require'                  -- SSL 모드 (require/verify-full)
);

SQL Server Connection

CREATE CONNECTION sqlserver_erp
TYPE SQLSERVER
OPTIONS (
    host = 'sqlserver.example.com',
    port = '1433',
    user = 'databricks_reader',
    password = secret('scope', 'mssql-password'),
    database = 'ERP',
    encrypt = 'true',
    trustServerCertificate = 'false'
);

Salesforce Connection

CREATE CONNECTION salesforce_crm
TYPE SALESFORCE
OPTIONS (
    sfUrl = 'https://mycompany.my.salesforce.com',
    oauthClientId = secret('scope', 'sf-client-id'),
    oauthClientSecret = secret('scope', 'sf-client-secret'),
    oauthRefreshToken = secret('scope', 'sf-refresh-token')
);

Connection 보안 모범 사례

항목권장 사항이유
비밀번호 관리secret() 함수 사용평문 노출 방지
계정 권한최소 필요 권한만 부여보안 원칙 준수
전용 계정Databricks 전용 계정 생성감사 추적 용이
SSL 사용SSL/TLS 활성화통신 구간 암호화
네트워크 제한IP 화이트리스트 설정비인가 접근 차단
비밀번호 로테이션주기적 갱신 (90일 권장)자격증명 유출 대비

테이블 선택 및 필터링

전체 스키마 수집 vs 개별 테이블 선택

방식장점단점적합한 경우
전체 스키마설정 간단, 새 테이블 자동 수집불필요한 테이블까지 수집소스 스키마의 모든 데이터가 필요한 경우
개별 테이블 선택필요한 데이터만 수집, 비용 절감새 테이블 추가 시 설정 변경 필요특정 테이블만 필요한 경우

테이블 선택 패턴

# 방법 1: 전체 스키마 수집
@dlt.table
def ingest_all():
    return mysql.read_changefeed(
        connection="mysql_prod",
        source_schema="ecommerce",
        # source_table 생략 시 전체 스키마 수집
    )

# 방법 2: 특정 테이블만 선택
@dlt.table
def ingest_customers():
    return mysql.read_changefeed(
        connection="mysql_prod",
        source_schema="ecommerce",
        source_table="customers"
    )

UI에서 테이블 필터링

Pipeline UI에서 테이블을 선택할 때 다음과 같은 필터링 옵션을 사용할 수 있습니다:
필터 옵션설명예시
스키마 선택특정 스키마의 모든 테이블ecommerce 스키마 전체
테이블 개별 선택체크박스로 필요한 테이블만 선택customers, orders만 선택
와일드카드 패턴이름 패턴으로 필터 (일부 커넥터)dim_*, fact_*
제외 패턴특정 테이블 제외임시 테이블, 로그 테이블 제외