SFTP를 이용한 ETL 문제 해결 방법
SFTP를 사용하면 데이터에 대한 API가 구축되어 있지 않은 여러 당사자 간의 안전한 데이터 공유가 놀랍도록 쉬워집니다. 이 글에서 자세히 알아보겠습니다!
ETL(추출, 변환, 저장)은 데이터를 다루는 조직에서 중요한 역할을 담당하고 있으며, ETL 프로세스는 다양한 소스에서 데이터를 추출하여 모델이나 데이터 구조로 변환하고 그 구조를 데이터베이스에 저장하는 과정입니다. 일반적으로 '데이터 웨어하우스'라고 불리는 이 데이터베이스는 쿼리 및 보고 프로세스를 더 빠르고 쉽게 만들어 더 나은 비즈니스 의사결정을 지원합니다.
ETL에 대한 개념은 이미 오래전부터 널리 알려져 왔으며, ETL 프로세스 오케스트레이션을 위한 도구와 프레임워크가 존재한다는 것은 그리 놀라운 일이 아닙니다. 많은 조직에서 기존의 Informatica나 Fivetran, Integrate.io (Xplenty에서 리브랜딩)와 같은 새로운 시대의 클라우드 솔루션과 같은 상용 ETL 제품을 활용하고 있지만, 다양한 프로그래밍 언어와 프레임워크를 사용하여 자체적인 도구를 구축하는 조직도 있습니다.
과거 많은 기업들은 자체 데이터 분석을 위해 ETL을 활용해 자체적으로 보유하고 있는 다양한 데이터 소스의 데이터를 단일 데이터웨어하우스에 모아 비즈니스를 보다 명확하게 파악할 수 있었습니다. 그리고 대부분 SQL을 사용하여 데이터베이스로부터 데이터를 가져오는 경우가 많았습니다.
최근 기업들은 사내 데이터베이스에 존재하는 데이터와 타사 서비스를 통해 수집한 데이터를 결합해야 하는 경우가 많아졌습니다. 예를 들어, Salesforce나 Pipedrive와 같은 CRM(고객관계관리)을 사용하는 조직은 이러한 서비스에서 고객에 대한 데이터를 가져와야 하고, 페이스북 광고나 구글 광고를 마케팅 캠페인에 사용하는 조직은 캠페인 성공에 대한 데이터를 이 서비스에서 가져와야 합니다.
이 작업은 여러 가지 기술이 개입되어 있고, API(데이터에 대한 인터페이스)나 데이터 자체가 기업의 소유가 아니기 때문에 훨씬 더 복잡합니다. 또한, 이러한 외부로부터의 연계는 데이터의 인터페이스나 데이터 구조를 변경하여 ETL 프로세스를 망가뜨릴 수 있습니다.
그렇다면 분석하고자 하는 데이터에 대한 API를 제공하지 않는 벤더나 고객으로부터 데이터를 가져오는 것은 어떨까?
SFTP (Secure File Transfer Protocol, 보안 파일 전송 프로토콜)는 30년 이상의 역사를 가지고 있으며, 파일 전송을 위한 표준적이고 안전한 프로토콜로 널리 알려져 있습니다. 그리고 그 보급으로 SFTP는 조직 내 또는 조직 간 안전한 파일 공유를 위한 사실상의 표준으로 자리 잡았습니다.
SFTP는 그 전신인 FTP (ETL의 개념만큼이나 오래된)만큼이나 단순하지만, 보안 측면에서도 큰 발전을 이루었습니다. 이 때문에 일반 사용자의 SFTP 서버 접속도, IT 담당자의 파일 이동을 위한 대략적인 자동 스크립트 작성도 가능한 모든 OS에서 SFTP가 GUI (Graphical User Interface) 및 CLI (Command Line Interface) 툴을 통해 광범위하게 지원되는 이유입니다. 또한, SFTP 서버에 원활하게 연결할 수 있는 모든 프로그래밍 언어용 라이브러리 및 SDK (소프트웨어 개발 키트)도 제공되고 있습니다.
또한, 대기업과의 거래에서 SFTP를 안전한 파일 전송 수단으로 사용하는 것이 기본이 된 것도 SFTP의 보편적인 보급의 한 예입니다. 오랜 역사와 높은 신뢰성도 기업에서 널리 사용되는 이유 중 하나입니다. 또한, 추가 개발이 필요하지 않기 때문에 다른 방식에 비해 설치에 걸리는 시간이 훨씬 짧습니다. 시간은 귀중한 자원이니까요.
따라서 ETL 프로세스에서 데이터를 수신하거나 벤더, 고객 또는 기타 제3자에게 전송해야 하는 경우 SFTP는 매우 유용한 솔루션이 될 수 있습니다. SFTP는 안정성과 효율성, 그리고 기업들 사이에서 자주 사용되기 때문에 많은 사람들이 데이터 전송 방법으로 사용하고 있습니다. 또한 SFTP를 소스와 목적지 간의 프로토콜, 방법, 중간 저장소로서 SFTP를 선택하는 경우, 데이터 구조에 대한 합의가 필요합니다.
최근에는 파일에는 데이터의 스키마도 함께 기술되어 있기 때문에 JSON이나 JSONL 형식(JSON Lines 또는 줄 바꿈이 있는 JSON)으로 데이터를 파일에 저장하는 것이 일반적이며, 하위 호환성을 유지하면서 시간이 지남에 따라 진화하는 동적 스키마에도 대응할 수 있습니다.
SFTP To Go의 SFTP 클라우드 솔루션은 ETL 및 데이터 처리 플랫폼에서 사용할 경우 다음과 같이 일반 SFTP보다 뛰어난 기능을 갖추고 있습니다:
- 다중 프로토콜 지원: 사용자나 애플리케이션은 데이터 파일을 읽고 쓰는 데 필요한 프로토콜을 선택할 수 있으며, SFTP가 기본 프로토콜이지만 FTPS도 사용할 수 있으며, 조직에 따라서는 FTPS가 더 중요할 수도 있습니다. 또한, Amazon S3도 유효한 선택이며, Amazon Athena를 통해 직접 데이터를 조회하거나 Amazon EMR, Spark, Map/Reduce를 통해 확장 가능한 데이터 처리를 실행할 수 있습니다.
- 파일 시스템 변경에 대한 웹 후크 알림: 많은 경우 ETL 프로세스는 시간 기반 스케줄러에 의해 트리거되며, 예를 들어 '심야에 고객 데이터 불러오기'와 같은 예약된 명령이 있을 수 있습니다. 파일이 내려올 때마다 프로그램 트리거를 통해 ETL 처리를 시작할 수 있습니다. 이를 통해 수시로 데이터 처리가 가능해져 필요한 처리 용량을 확장할 수 있습니다. (예: 새로운 파일이 없을 때는 리소스를 사용하지 않고, 많은 파일이 업로드될 때는 리소스를 많이 사용하는 등)
- 용량 무제한: 모든 스토리지에서 우려되는 것은 디스크 용량이며, 중간 스토리지나 대상 데이터웨어하우스의 디스크 용량 부족으로 인한 ETL의 파탄이 자주 발생합니다. 이에 반해 SFTP To Go의 스토리지는 사실상 무제한이며, 임계치를 초과하면 알려주기 때문에 디스크 용량 부족을 걱정할 필요가 없습니다.