탐색하기
안녕하세요, TROCCO 팀입니다.
이 글에서는 TROCCO를 사용하여 Databricks로 데이터를 통합하는 과정을 실제 조작 방법을 포함하여 상세히 소개해 드리려 합니다.
이 글은 앞으로 데이터 기반을 구축하려는 분들이나 기존 데이터 기반으로의 데이터 통합 과정정을 간소화하고 싶은 분들에게 추천합니다.
이번에 DWH로 사용하는 Databricks는 데이터 엔지니어링부터 AI까지 커버하는 강력한 통합 플랫폼입니다.
그러나 그 힘을 최대한 발휘하기 위해서는 다양한 데이터 소스에서 데이터를 통합하는 것이 필수적입니다.
여기서 활약하는 것이 클라우드 기반 ETL 서비스 "TROCCO(TROCCO)"입니다.
TROCCO는 SaaS, 온프레미스, 광고, 파일, DB 등 100가지 이상의 커넥터를 갖추고 있으며, 노코드로 복잡한 데이터 통합을 자동화할 수 있는 SaaS 솔루션입니다. 인프라 관리도 필요 없어 바로 서비스 이용을 시작할 수 있습니다.
TROCCO를 통해 Databricks로 데이터를 통합함으로써, 마케팅 데이터, 업무 데이터, 로그 데이터 등을 일원화하여 통합·가공하고, Databricks에서의 SQL 분석, ML 모델링, BI 대시보드 활용을 더욱 가속화합니다. 즉 TROCCO는 Databricks를 "데이터 활용의 본거지"로 삼기 위한 강력한 파트너 솔루션으로서, 기업의 데이터 기반 (Data-Driven) 의사결정을 지원합니다.
자, 그럼 바로 TROCCO에 로그인하여 데이터 파이프라인 구축을 시작해 보겠습니다.
TROCCO 계정을 아직 가지고 있지 않으시다면, 여기에서 무료 체험을 신청하실 수 있습니다.
https://global.trocco.io/ko/free-trial
trocco.io 링크를 통해서 홈페이지로 들어가 보겠습니다.
이 화면이 로그인하면 처음 보시게 되는 화면이고, 구성 메뉴를 대시보드 형태로 한눈에 보실수 있습니다.
또한, 현재 본인에게 권한이 주어진 파이프라인의 처리 현황도 확인이 가능합니다. 예를들면, 처리시간 요약, 전송시간 요약, 전송량 요약, 최근 작업 내역, 어떤 커넥터를 사용하고 있고 소스와 타겟으로 어떤 데이터가 활용되고 있는지를 한꺼번에 확인 하실 수 있습니다.
자, 그럼 대시보드에 노출이 되어 있는 메뉴부터 먼저 설명 드리겠습니다.
먼저 [전송 설정]입니다.
이 전송 설정이란 것은, 데이터 파이프라인의 기본구성이 이루어지는 곳입니다.
우리가 흔히 ETL 또는 ELT라고 할 때, 데이터 추출 및 로드에 대한 환경 구성이 이루어지는 곳이라고 이해하시면 무리가 없을 것 같습니다.
[데이터마트]는 Extraction과 Loading을 제외한 Transformation, 즉 데이터 변환 작업이 이루어지는 공간이라고 이해하시면 될 것 같습니다.
그 다음, [워크플로우 정의]는 전체 프로세스를 하나로 통합해서 자동화할 수 있게 해주는 기능입니다.
그리고 연결정보는 데이터 소스와 타겟에 연결하기 위한 접속 정보를 만들고 저장해 두고 재사용할 수 있도록 해 주는 기능입니다. 한번 만들어 두면, 파이프라인을 만들 때마다 매번 인증 정보를 입력할 필요는 없게 되겠죠.
그리고 기타, 파이프라인의 구성 현황이나 처리 현황 정보를 한눈에 확인 할 수 있는 대시보드가 아래에 표출이 되어 있습니다.
본 데모는, 파이프라인이 어떻게 구성이 되고 실행 되는지 설명을 드리기 위한 자리이므로, 바로 기본구성부터 진행해 보도록 하겠습니다.
서두에서 언급했듯이, 이 글에서는 간단한 데이터 파이프라인을 만들어 보겠습니다.
소스는 세일즈포스(Salesforce) 이고요, 타겟은 데이터브릭스(Databricks)가 될 겁니다.
소스에서 Opportunity와 Account 객체를 가지고 오는 두 개의 파이프라인을 만들 예정이고요, 두 파이프라인인들을 워크플로우를 사용해서 묶어 보겠습니다.
3. [전송 설정] – ETL Configurations
먼저 기본 구성인 “전송 설정”부터 시작해 보겠습니다.
파이프라인을 신규로 만들때 가장 먼저 사용하게 되는 기능입니다.
여기서는 '신규 추가' 버튼을 클릭해서 소스/타겟을 정의하는 단계로 들어 가겠습니다.
여기서는 소스, 즉 데이터 원본과 타겟, 즉 목적지를 선택하게 됩니다.
먼저 소스를 클릭해서 원본 데이터를 선택하겠습니다.
소스로는 세일즈포스를 지정하고,
그 다음, 타겟을 클릭해서,
Databricks를 선택합니다. 데이터브릭스는 DWH탭에서도 쉽게 찾아 볼 수 있습니다.
현재, TROCCO에서 지원하고 하고 있는 여러 DW플랫폼을 확인 하실 수 있고요.
이렇게 소스와 타겟 설정이 끝났습니다.
이제 아래에 있는 '이 내용으로 작성' 버튼을 클릭해 보겠습니다.
그다음에 보시는 것은 설정 유형을 선택하는 단계인데요, 기본으로 '일반 모드'가 선택이 되어 있습니다.
만약, 여러 테이블이나 오브젝트를 한꺼번에 선택하고 적재하려는 경우에는 아래에 있는 '관리형 데이터 적재'를 선택하면 됩니다.
지금은 기본값 설정인 일반 모드 그대로 놔두고 '계속'을 클릭 합니다.
이제 데이터 소스 및 타겟 상세 설정 단계로 들어 왔습니다.
먼저, 개요 설정 섹션에서는 이 데이터 파이프라인에 대한 기본 설정을 입력해야 됩니다.
파이프라인 이름부터 정해볼까요? 저는 '[JJ] SF-DB-Acct'라고 지정할게요. Account 객체를 가져올 것이라라 포함해 주는 것이 좋겠죠.
여기에 메모도 추가할 수 있습니다. 팀원들이 이 파이프라인의 목적이 무엇인지 이해하는 데 도움이 되겠죠. 저는 이렇게 입력해 보겠습니다.
세일즈포스 --> 데이터브릭스
1. 소스: Salesforce
2. 타겟: Databricks
3. 데이터: Account
타이틀로 쓰려는 라인에는 헤딩 마커도 (###) 을 사용 해주고요.
아래 본문을 강조하기 위해 인용 마커도 사용 합니다. (>)
미리보기 해 볼까요?
리소스 그룹 설정은 이 구성을 다른 팀원들과 공유할 수 있게 해주는 기능입니다. 이를 통해 거버넌스 체계를 구축할 수 있어요. 누가 어떤 파이프라인에 접근할 수 있는지 등을 관리할 수 있죠. 저는 이미 만들어져 있는 것 중에 "Korean Team Resources"를 지정 하겠습니다.
[전송원 Salesforce 설정]:
이제 데이터 소스 연결 설정인 세일즈포스 설정으로 넘어가 보겠습니다. 화면에는 '소스 Salesforce 설정이라고 되어 있죠.
여기서는 세일즈포스 소스 커넥터에 필요한 정보를 입력하게 됩니다. 이미 이 단계를 시작하기전에 소스 데이터를 세일즈포스로 선택했기 때문에, 현재 선택가능한 연결 정보를 보여주는 리스트를 열어보면, 세일즈포스로 연결하는 구성만 선택가능한 것으로 나타납니다.
저는 미리 설정해 둔 것이 있어서, 이걸 선택 할 겁니다.
하지만, 여러분이 처음 설정하신다면 '연결 정보 추가' 버튼을 클릭하시면 새로 만들기 페이지로 이동하시고 그곳에서 새로운 연결 정보를 만드실 수도 있습니다.
자, 여기에서 Oauth방식 인증을 하실수도있고요, 또는 사용자 비밀번호 인증방식을 사용하실수도 있습니다.
사용자 ID, 비밀번호, 보안 토큰 같은 인증 정보를 입력하면 세일즈포스 계정에 연결 할 수 있습니다.
자세한 내용은 여기에서 확인하실 수 있습니다.
https://documents.trocco.io/docs/ko/connection-configuration-salesforce
오늘은, 이미 만들어 둔 global-Salesforce-Account를 사용하도록 하겠습니다.
다음으로 API 버전을 지정해야 하는데, 기본값이 54.0로 설정되어 있으니 그대로 두시면 됩니다.
이제 오브젝트를 선택하겠습니다. 여기서는 Account 객체를 선택하겠습니다. 그 다음으로 객체 획득 방식을 선택합니다. 모든 필드를 가져올지, 아니면 특정 필드만 가져올지 지정할 수 있습니다. 특정 필드만 필요하다면 SQL 쿼리를 작성해서 원하는 필드만 지정할 수 있죠. 하지만 이 데모에서는 모든 필드를 가져오도록 하겠습니다.
삭제 및 보관된 레코드 추출은 '추출하지 않음'으로 두고, 형 변환 모드는 '유형 추측 결과 사용 타입'을 선택할게요. 이렇게 하면 세일즈포스에 있는 것과 동일한 데이터 타입으로 가져오게 됩니다.
타겟 Databricks 설정
이제 목적지인 타겟 설정으로 넘어가겠습니다. 이 경우에는 Databricks죠. 마찬가지로 연결 구성이 필요한데, 저는 이미 설정된 것을 사용하겠습니다.
다음으로 데이터를 받을 카탈로그와 스키마이름을 지정합니다. 그 다음으로 데이터를 로드할 테이블명을 입력합니다. 입력한 테이블이 현재 스키마에 존재하지 않을 경우엔 자동으로 생성됩니다.
적재 모드는 목적지 테이블에 데이터를 어떻게 추가할지 결정하는 설정입니다. 삽입(INSERT), 삽입(INSERT DIRECT), 전체 교체(TRUNCATE INSERT), 전체 교체(REPLACE) 그리고 갱신 및 삽입 모드가 있습니다. 이를 통해 신규 테이블을 생성 할 것인지, 기존 테이블에 데이터를 삽입 할 것인지, 아니면 데이터를 교체할지 선택할 수 있어요. 저는 여기서 '전체교체(Replace)'를 선택하겠습니다.
전송 방식의 상세 내용은 여기에서 확인하실 수 있습니다.
https://documents.trocco.io/docs/ko/data-destination-databricks
이제 '다음Step으로' 이동해서 데이터 미리보기 및 상세 설정단계로 가 보겠습니다.
데이터 미리보기 및 상세 설정
여기서는 스키마와 데이터 미리보기를 확인할 수 있어요. 지금 TROCCO가 데이터 미리보기를 로딩 중입니다. 이 단계에서는 변환 작업을 실행하면서 데이터가 어떻게 변하는지 확인할 수 있어요. 아래쪽에는 템플릿 변환 기능들이 있습니다.
필터 설정을 통해 특정 컬럼을 선택하고, 연산자를 지정해서 데이터를 필터링할 수 있어요.
편의상 Type== Customer- Direct 로 설정해 보겠습니다.
중간중간에 설정이 제대로 반영이 되고 있는지 확인은 “미리보기”로 돌아가서 변경 사항 미리보기로 확인 할 수 있습니다.
여러 컬럼을 적용할 때 조건은 AND나 OR로 적용 할 수 있습니다.
마스킹 설정은 특정 컬럼의 데이터를 마스킹하는 기능입니다. 오늘은 전화번호를 가지고 마스킹 사례를 보여 드리겠습니다.
먼저 대상 컬럼으로 Phone을 지정하고 마스킹 타입은 부분 문자열을 지정합니다. 그리고 시작 위치는 1로 종료 위치는 4로 지정하겠습니다. 기타 옵션은 따로 설정하지 않고 넘어 가겠습니다. 미리보기를 한번 해 볼까요?
전송날짜 및 시간 컬럼 설정을 사용하면 데이터가 마지막으로 로드된 시간을 기록 할 수 있습니다. 테이블에 추가 컬럼이 생성됩니다. 이렇게 하면 데이터가 최신인지를 파악하는 데 유용하겠죠. Inserted라는 이름으로 지정해 보겠습니다. 타입은 timestamp로 그냥 둡니다.
그 외에도 아래와 같은 데이터 가공을 설정할 수 있습니다:
자세한 내용은 여기를 참조해주시면 됩니다: https://documents.trocco.io/docs/template-etl
또한, 프로그래밍 ETL 기능을 사용하면 전송원에서 가져온 데이터에 대해 직접 작성한 프로그램(Python·Ruby)을 실행할 수 있습니다: https://documents.trocco.io/docs/programming-etl
자, 이렇게 미리보기 데이터가 로딩되었습니다! 여기서 데이터 소스의 각 필드를 확인할 수 있습니다.
변환 작업을 적용하면 그 결과가 바로 여기에 반영되니까, DW에 실제로 로드하기 전에 변환 결과를 미리 확인할 수 있죠.
아래 컬럼 정의에는 모든 필드가 다시 표시됩니다. 여기서 필드명을 변경하거나, 필요 없는 필드를 삭제하거나, 데이터 타입을 변경할 수 있어요. 지금은 그냥 두고 변환을 적용하지 않을 거니까, '확인'을 클릭하겠습니다.
이제 마지막 3단계인 '확인 및 적용' 화면으로 넘어왔습니다. 여기서는 데이터 파이프라인의 구성이 YAML 형식으로 표시됩니다. 원하신다면 테스트 실행을 해볼 수도 있고, 아래에서 풀 리퀘스트를 생성할 수도 있어요. TROCCO는 Git 통합을 지원하기 때문에 이 구성을 GitHub이나 GitLab 같은 버전 관리 시스템으로 푸시할 수 있습니다. 이렇게 하면 파이프라인을 실제로 실행하기 전에 팀에서 구성을 검토할 수 있죠. 저는 여기서 그냥 '저장'을 클릭하겠습니다.
이제 파이프라인이 생성되었습니다! 이 파이프라인은 세일즈포스에서 Account 객체의 모든 필드를 가져와서 지정된 데이터셋과 테이블을 Databricks에 로드하는 용도 입니다. 여기서 '실행' 버튼을 클릭하면 작업이 바로 실행되겠지만, 저는 이따 워크플로우를 통해 통합해서 실행할 거라서 그냥 넘어가겠습니다.
동일한 절차로 Opportunity 테이블에 관해서도 전송 설정을 생성합니다.
두개의 파이프라인이 만들어진 것을 직접 확인하고 다음 단계로 넘어 가도록 하겠습니다.
먼저, 전송 설정 목록으로 이동 합니다. 방금 만든 두개의 파이프라인을 확인 할 수 있네요.
워크플로우 정의
이제 다음으로 이 두개의 파이프라인을 하나로 묶어서 실행 할 수 있도록 워크플로우를 만들어 보겠습니다.
홈페이지에서 워크플로우에서 “신규 추가”을 클릭하겠습니다.
워크플로우 이름으로 [JJ] Workflow-SF-DB-Acct-Oppty
메모에 다음과 같이 기재합니다.
### SF-DB-Acct-Oppty 워크플로우
Pipelines:
1. [JJ] SF-DB-Acct
2. [JJ] SF-DB-Oppty
나머지 옵션은 기본 설정 그대로 두고,
리소스 그룹은 이전과 동일하게 Korean Team Resources를 선택합니다.
라벨을 지정 합니다.
그리고 “저장”버튼을 클릭합니다.
이제 워크플로우 편집을 할 수 있는 캔버스로 들어 왔습니다.
여기서 기존에 만들어진 두개의 파이프라인을 추가 하겠습니다.
“TROCCO 전송 작업”을 선택 합니다.
방금 제가 만든 파이프라인을 선택합니다.
‘추가’ 버튼 클릭
캔버스에서 ‘START’와 연결되지 않은 나머지 하나의 파이프라인을 연결해 주고
그다음 ‘자동 레이아웃’을 클릭합니다.
그러면 이와 같이 작업 배치가 자동으로 정리됩니다. 매우 이해하기 쉽네요.
그리고 ‘저장’ 버튼 >> 다시 ‘저장 및 적용’ 버튼을 클릭 합니다.
이제 워크플로우가 만들어 졌습니다.
추가로 필요한 옵션이 있으면 여기서 설정이 가능합니다.
예를들어, 워크플로우를 스케쥴을 걸어서 실행되도록 할 수도 있고, 작업 결과 알림을 설정할 수도 있습니다. Slack이나 이메일을 통해 알림을 받아 보실 수 있습니다.
이제 이 워크플로우를 실행해 보겠습니다.
‘실행’ 버튼을 클릭해서 워크플로우를 시작 합니다.
워크플로우 캔버스가 다시 열리고,여기서 각각의 파이프라인을 클릭해서 보면 해당 파이프라인을 실행하는 상세 내용을 로그로 반영해서 보여 줍니다.
제 두개의 파이프라인 실행이 완료된 것이 캔버스의 파이프라인에 표시되는 초록색으로 확인이 되네요.
이제 데이터가 실제로 적재되었겠죠? 데이터브릭스로 들어가서 한번 더 확인을 해 보겠습니다.
데이터 브릭스로 들어와서 카탈로그내 스키마에 두개의 테이블이 만들어져 있고요, sf_account와 sf_opportunity테이블에는 데이터가 성공적으로 적재된 것이 확인이 됩니다. 전화번호도 잘 마스킹되어 있는게 보이고요. 필터링도Customer – Direct가 적용되어 있는게 확인이 됩니다.
이렇게 Salesforce에서 Databricks로 데이터를 읽어와서 적재하는 과정을 파이프라인으로 만들고 워크플로우에서 묶어서 일관 실행하도록 했습니다.
이처럼 TROCCO를 사용하면 파이프라인을 깔끔하게 오케스트레이션하고 작업 간의 종속성을 설정할 수 있습니다. 참고로 지금은 세일즈포스 객체를 하나씩 가져오고 있지만, 모든 객체를 한 번에 가져오고 싶다면 '관리 ETL'이라는 기능을 활용하면 됩니다.
이 글에서는 TROCCO의 가장 기본적이고 필수적인 기능만을 활용하여, 세일즈포스에 있는 소스에서 데이터를 이동하여 데이터브릭스로 전송하는 전체 과정을 시연해 보았습니다.
데이터브릭스라는 훌륭한 DW플랫폼을 TROCCO와 함께 사용하시면 더 쉽고도 강력한 데이터 분석 환경을 구축하고 운영 하실 수 있을 것 같습니다.
이 블로그를 읽고 TROCCO에 대해 "더 자세히 알고 싶다" "실제로 사용해 보고 싶다"고 생각하신 분들은 아래 링크에서 부담 없이 상담해 주시기 바랍니다. 무료로 사용할 수 있는 프리 플랜도 준비되어 있습니다.
→ 상담·프리 플랜 신청은 여기에서
https://global.trocco.io/ko/free-trial