모던 데이터 스택 과거, 현재 그리고 앞으로 나아가야 할 방향 2
이전 글에서 살펴본 아키텍처 측면에서 야기된 다양한 문제점들을 해결하면서 새로운 비즈니스 요구사항을 빠르고 쉽게 수용하기 위한 다양한 시도들이 오늘날 이뤄지고 있으며, 모던 데이터 스택(MDS: Modern Data Stack)은 최근 새로운 해결책으로 주목받고 있다. MDS는 “사용자가 원하는 데이터를, 원하는 시점에, 자유롭게 사용하여 데이터 기반의 분석 및 의사결정을 도와주는 기술 스택”으로 정의된다. 데이터 스택은 단순한 데이터 웨어하우스 또는 데이터 레이크 솔루션을 넘어서 데이터 수집, 저장, 변환, 활용 및 분석을 위한 모든 계층을 아우른다. 최근 MDS가 주목받게 된 계기는 2021년 9월 데이터 스택 옵저버빌리티(Data Stack Observability) 솔루션 기업, 씨플렛(Sifflet)의 CEO인 살마 바쿠트 (Salma Bakouk)가 “2021년 최신 데이터 스택에 관한 트렌드(Trends that shaped the Modern Data Stack in 2021)”라는 블로그를 미디엄(Medium)에 기재하면서 시작됐다. 이 글에서 살마는 “속도”, “셀프-서비스” 그리고 “신뢰성”이 MDS가 갖춰야 할 기본 전제 조건이며, 2021년도 MDS가 나아가는 방향성으로 다음 다섯 가지를 정의했다.
1. 데이터 및 데이터 스택의 민주화
2. ETL에서 ELT로 전환 및 Reverse ETL 중요도 증가
3. 데이터 플랫폼의 성능 및 속도 개선
4. 데이터 메쉬
5. 데이터 옵저버빌리티(Observability)
또한 2022년 아틀란(Atlan)의 공통 창업자인 프루칼파(Prukalpa)가 미디엄에 “2022년 모던 데이터 스택의 미래(The Future of the Modern Data Stack in 2022)”라는 블로그를 게재하면서 지난 1년 동안 데이터 스택 발전 내용과 MDS에 대해 알아야 할 6가지 중요 내용으로 첫째, 데이터 메시, 둘째, 메트릭 계층, 셋째, Reverse ETL, 넷째, 액티브 메타데이터 및 3세대 데이터 카탈로그, 다섯째, 데이터 상품화를 위한 팀, 그리고 여섯째, 데이터 옵저버빌리트라고 밝혔다.
이제 데이터 플랫폼 영역으로 한정해서 살펴보고자 한다. 전통적인 데이터 스택(TDS: Traditional Data Stack)은 온-프레미스 환경을 위해 설계 및 개발되었기 때문에 다양한 이슈들을 근본적으로 해결할 수 없다. 이런 이유로 데이터 솔루션들의 실행 환경은 이전 온-프레미스에서 퍼블릭 클라우드 환경으로 변경돼야 하며, 무제한의 객체 저장소, 유연한 확장이 가능한 컴퓨팅 리소스 활용성과 같은 퍼블릭 클라우드의 다양한 혜택을 활용하기 위해 IaaS, PaaS 기반의 서비스 방식이 아닌 SaaS 기반의 서비스 방식으로 새롭게 설계되어 제공돼야 한다. 또한, 이 데이터 플랫폼 아키텍처는 데이터 증가에 유연하게 대응하기 위해 스토리지와 컴퓨팅 계층이 완벽하게 분리되어야 한다.
오늘날 대다수 데이터 플랫폼 트랜드는 플랫폼 통합과 분산이라는 상반된 접근법을 취하고 있다. 통합 관점은 사일로 하게 존재하는 여러 데이터 플랫폼을 단일 플랫폼으로 통합하는 기술적 접근법이라 할 수 있으며, 플랫폼 분산 관점은 업무 단위로 사일로 되어 구축된 여러 데이터 플랫폼을 하나의 데이터 플랫폼으로 논리적으로 통합하여 활용하는 방향성을 의미한다. 기술적인 데이터 플랫폼 통합 접근법은 스노우플레이크와 같이 단일 데이터 플랫폼에서 데이터 웨어하우스 및 데이터 레이크 워크로드와 같은 복합적인 워크로드를 통합하여 지원하는 것을 의미하며, 비즈니스적인 데이터 플랫폼 통합의 접근법은 데이터 패브릭이나 데이터 메쉬를 활용하는 방법을 의미한다.
플랫폼 통합과 분산 관점에서 본 스노우플레이크 (스노우플레이크 MDS 특장점을 중심으로)
모던 데이터 스택으로써 데이터 플랫폼이 갖춰야 하는 기본 특성은 기술에 대한 진입 장벽을 낮춘 셀프 서비스(Self-Service)로 정의할 수 있다. 이 관점에서 보면 스노우플레이크(Snowflake)는 매우 혁신적인 특장점들을 제공하고 있다.
첫째, 플랫폼 구축 및 사용 편의성 관점에서 스노우플레이크는 타 솔루션과 비교하여 매우 큰 차이점을 제공하고 있다. 스노우플레이크는 SaaS 서비스로 제공되는 데이터 플랫폼으로 사용자는 데이터 플랫폼 구축을 위한 인프라 준비나 구성 작업이 불필요하다. 사용자는 스노우플레이크 계정을 생성하면 바로 사용할 수 있기 때문에 플랫폼 구축 과정을 혁신적으로 단축할 수 있다. 또한 이전 데이터 플랫폼에서 필요한 하드웨어, 소프트웨어에 대한 유지 관리, 업그레이드 및 보안에 관련된 업무를 수행할 필요가 없는 ‘제로 유지보수 (Zero-Maintenance)’ 기능을 제공하기 때문에 비용을 절감할 수 있으며, 시스템 관리 업무보다는 데이터 분석에 중점을 둘 수 있게 도와준다.
둘째, 과거 데이터 분석 솔루션에서 소프트웨어 패치 및 장애로 인한 일시적인 다운타임은 운영에 큰 영향을 미치지 않은 경우도 있었지만, 오늘날 데이터 분석이 기업 환경에서 매우 중요해짐에 따라 고가용성은 데이터 플랫폼 솔루션에 매우 중요한 기능 요구사항이다. 스노우플레이크는 아키텍처의 모든 수준에 장애를 허용하도록 설계됐기 때문에, 노드 또는 데이터 센터에 장애가 발생하더라도 지속적인 서비스를 제공하도록 설계 및 구축되어 있다. 또한, 스노우플레이크는 장애가 발생한 경우뿐 만 아니라 다음 그림과 같이 소프트웨어 업그레이드 중에도 지속적인 가용성을 제공한다. 스노우플레이크에서 고가용성은 선택사항이 아닌 기본 옵션이며 별도의 비용을 지불할 필요도 없다.
셋째, 데이터 플랫폼에서 실행되는 데이터 분석, 애플리케이션, 엔지니어링 및 AI/ML 파이프라인과 같은 워크로드는 시간 경과에 따라 다양해지고 중요해 졌다. 또한, 기업이 분석에 활용하는 데이터의 양도 급증하고 있으며, 유형도 다양화되었다. 아키텍처 유연성은 오늘날 데이터 플랫폼에 요구되는 가장 중요한 요소이다. 요구사항
이 변경될 때마다 기존 플랫폼을 고도화 하거나 플랫폼을 새롭게 구축해야 한다면 이 과정이 얼마나 오랜 시간이 소요되고 비효율적일지는 우리는 익히 잘 알고 있다. 스노우플레이크는 요구사항 변경에 유연하게 대처하기 위해 기존 데이터 플랫폼 아키텍처를 재활용하지 않고 클라우드 환경에 맞게 새롭게 아키텍처를 설계하고 구현했다.
스노우플레이크 아키텍처는 다음 그림과 같이 높은 수준의 사용성, 가용성, 그리고 높은 수준의 내결함성 및 스토리지/컴퓨팅 계층이 독립적으로 확장할 수 있도록 설계됐다. 스노우플레이크 사용자는 기술적, 시간적 제한 없이 다양한 데이터 워크로드에 필요한만큼 온-디맨드로 프로비저닝하여 사용할 수 있다.
스토리지와 컴퓨팅 리소스가 독립적으로 확장되어, 둘 다 사용한 만큼만 요금이 부과된다.
개별 워크로드는 동일한 데이터를 사용하지만, 물리적으로 격리된 독립 실행환경(일반적으로 워크로드 유형별로 별도의 실행 환경을 구성하여 사용하며, 이 실행 환경을 Virtual Warehouse라 한다)에서 작업을 수행함으로써 다른 워크로드 성능에 영향을 받지 않고 실행된다. 또한, 스노우플레이크의 개별 워크로드 실행 환경은 동적으로 할당되기 때문에 사실상 무제한의 확장성과 탄력성을 제공한다. 이를 통해 필요 시점에 리소스를 사용하고 워크로드가 없는 시간 동안은 자동 중지되어 불필요한 비용을 지불할 필요가 없다. 만일 새로운 분석 TF팀에서 신규 프로젝트를 시작하고, 기존에 분석하지 못했던 분기, 반기 또는 년 단위의 대용량 데이터가 포함된 쿼리를 수행해야 하는 요구사항이 있는 경우, 스노우플레이크는 매우 능동적으로 이 요구사항을 수용할 수 있다.
스노우플레이크에 저장된 데이터는 데이터 유형 및 특성에 따라 컬럼별로 최적의 압축 알고리즘을 자동으로 적용해 높은 압축 수준으로 저장된다. 저장 비용은 압축 후 1TB당 $25로 공급되기 때문에 더 많은 데이터를 더 저렴하게 저장하여 활용할 수 있게 도와준다. 또한, 여러 실행 환경에서 단일 스토리지 계층에 저장된 동일한 데이터를 통해 분석 업무를 수행할 수 있다. 오늘날 사용자 분석 환경에 대한 요구 사항은 매우 빠르게 변화하기 때문에 민첩하게 대응해야 한다. 스노우플레이크 실행 엔진(Virtual Warehouse)은 다음과 같은 확장성을 제공한다:
1) Auto-Suspend / Resume 기능: 스노우플레이크 실행 환경은 서비스 계층(Cloud Service)과 실행 엔진(Virtual Warehouse)
으로 구분되어 있다. 이 아키텍처는 Worker node를 항상 실행해야 하는 다른 솔루션과 다르게 사용자 요청이 없는 경우 실행 엔진을 중지된 상태로 유지할 수 있다. 새로운 작업 요청이 서비스 계층에서 수신된 경우, 스노우플레이크는 프로비저닝 시간을 최소화하기 위해 동일 CSP 환경에 일정 수준의 인스턴스 노드를 실행 상태로 유지하고 있다. 이 아키텍처 설계는 실행환경을 사용자 요구사항에 따라 빠르게 조정할 수 있게 도와준다.
2) 워크로드 격리: 특정 리소스-집약적인 작업이 다른 작업에 미치는 영향도를 최소화하기 위해서는 물리적으로 격리된 실행환경을 워크로드별로 제공하여 다중-워크로드 간의 자원 경합으로 인한 성능 저하 현상을 제거한다. 스노우플레이크의 “멀티 클러스터 쉐어드 데이터(Multi Cluster Shared Data)” 아키텍처는 워크로드 별로 필요한 시점에 격리된 실행 환경을 유연하게 제공하여 리소스 경합으로 인한 성능 저하 현상을 아주 간단하게 해결할 수 있다.
3) 컴퓨팅 클러스터 크기 조정: 일반적으로 클러스터 확장성 관점에서 “Scale-up”은 물리적 노드의 CPU / Memory와 같은 리소스를 증설하는 용어로 사용되지만, 스노우플레이크의 Scale-up은 실행 엔진에 노드를 추가하여 병렬도를 높이는 개념이다. 이 기능을 활용하면, 느린 작업에 대해 복잡한 쿼리 튜닝 없이 실행 환경을 단순하게 변경하여 성능을 쉽게 개선할 수 있다.
4) 많은 동시 사용자 요청 처리: 스노우플레이크 Scale-out은 피크 시간대에 지연 없이 동시 처리 작업을 지원하는 확장 방식이다. 고정된 리소스 환경에서 많은 동시 작업이 집중되는 경우, 큐잉 및 성능 저하 현상이 발생하지만, 스노우플레이크는 워크로드 패턴에 맞게 컴퓨팅 클러스터가 자동으로 확장되고, 사용자 요청이 줄어들면 자동으로 스핀-다운되어 많은 양의 동시 작업 요청을 성능저하 없이 처리하면서 비용을 최소화하도록 설계되었다.
넷째, 대다수 기업 환경의 분석 플랫폼은 정형 데이터 분석을 위한 EDW 시스템과 반정형 및 비정형 데이터 분석을 위한 데이터 레이크 시스템이 공존한다. 이는 데이터 중복 저장, 동기화 이슈, 관리 복잡도 및 비용 증가와 같은 다양한 이슈를 야기한다. 데이터 레이크 시스템에 한정하여 살펴보면, 오픈 소스에서 주도했던 1세대 빅 데이터 플랫폼은 불과 10년 전에 불가능하게 간주 되었던 대용량 데이터 분석, 정형 뿐만 아니라 반정형 및 비정형 데이터를 분석 용도로 활용할 수 있게 했다는 점은 분명히 높게 평가받아야 하지만 다양한 에코 시스템으로 인한 호환성 이슈, 아키텍처 복잡도 증가, 특정 기술-셋을 가진 전문가에 의존적인 시스템과 같은 다양한 과제들을 남겼다. 현재 다양한 고객 환경에서 1세대 온-프레미스 데이터 레이크를 2세대 퍼블릭 클라우드 데이터 레이크로 마이그레이션 하는 사례가 점차 증가하고 있다. 퍼블릭 클라우드 기반의 2세대 데이터 레이크 아키텍처에서 주목해야 하는 점은 1) 스토리지와 컴퓨팅이 결합 된 아키텍처에서 스토리지와 컴퓨팅이 분리된 아키텍처 그리고 2) 데이터 저장소 역할을 담당했던 HDFS가 S3, Blob 스토리지, GCS와 같은 퍼블릭 클라우드의 Object 스토리지로 변경된 것이다. 하지만, 여러 에코 프로젝트의 복잡성, 전문가에 의존적인 시스템 등의 이슈는 여전히 해결되지 않고 있다. 스노우플레이크는 이 문제를 매우 쉽게 해결했다. 초기 스노우플레이크는 정형 데이터를 분석하는 용도로 많이 사용되었다. 오늘날 스노우플레이크는 정형, 비정형 및 JSON, Parquet과 같은 반정형 데이터를 지원한다. 이는 단일 데이터 플랫폼에서 전통적인 데이터웨어하우스 워크로드와 데이터 레이크 워크로드를 통합할 수 있다는 것을 의미한다. 반정형 데이터를 직렬화 처리하는 방법이 관계형 DBMS에서 반정형 데이터를 지원하기 위한 일반적인 설계 전략이지만, 반정형 데이터를 관계형 데이터로 변환(Schema-on-Write)하는 접근 방식은 컬럼형 데이터 처리보다 데이터 저장 및 처리 효율성이 떨어진다. 또한, 빅데이터 기반의 기술에서 반정형 데이터는 파일 자체를 그대로 저장하고 사용자가 읽는 시점에 스키마를 별도 정의해서 처리해야 한다. 스노우플레이크는 데이터 레이크의 주요 사용 목적인 반정형 데이터를 효율적으로 처리하기 위해 스키마 없는 직렬화 처리 유연성과 컬럼형 DBMS 의 성능 이점을 모두 달성하기 위해 새롭고 자동화된 접근 방식을 도입했다. 스노우플레이크는 반정형 데이터를 전처리 없이 “베리언트(Variant)”라는 독창적인 데이터 타입에 키(Key)와 밸류(Value) 기반으로 컬럼화하여 저장하기 때문에 정형데이터와 동일한 성능을 제공할 수 있다.
반면, 동일한 성능을 제공하면서도, 반정형 데이터들도 DBMS에 저장된 다른 정형 데이터와 동일하게 처리하기 위해서는 기존 데이터 레이크의 ‘읽기 스키마 (Schema-on-Read)’ 방식이 아닌 ‘쓰기 스키마 (Schema-on-Write)’ 방식으로 처리돼야 한다. 스노우플레이크는 파일 내부에 스키마 정보가 저장된 Parquet, ORC, JSON과 같은 반정형 데이터의 빠른 통합을 위해 ‘스키마 탐지(Schema Detection) 및 ‘스키마 에볼루션(Schema Evolution )’ 기능을 지원한다. 이 기능은 반정형 데이터를 분석용도로 사용하기 위한 별도의 데이터 파이프라인을 간소화하는데 도움이 된다.
마지막으로 오늘날 데이터 분석 플랫폼은 데이터 분석가, 엔지니어, 과학자, 애플리케이션 개발자 뿐만 아니라 현업 사용자와 같은 다양한 사용자들이 선호하는 분석 언어와 환경을 지원해야 하는 요구사항이 증가하고 있다. 때문에 오늘날 데이터 플랫폼은 데이터 분석을 위해 표준 SQL 뿐만 아니라 자바, 스칼라 및 파이썬과 같은 다양한 개발언어와 분석 환경을 지원해야 한다. 스노우플레이크는 데이터 애플리케이션, 엔지니어 및 AI/ML과 같은 다양한 워크로드 요구사항을 단일 플랫폼에서 모두 충족하기 위해 표준 SQL 뿐만 아니라 스노우파크 개발 프레임워크도 지원한다. 스노우플레이크 사용자들은 선호하는 개발 언어(자바, 스칼라 및 파이썬)로 데이터 관련 작업을 쉽게 수행할 수 있으며, 데이터 파이프라인, 애플리케이션 및 AI/ML 워크플로우도 동일한 환경에서 빠르게 개발하여 사용할 수 있다.
이는 서로 다른 워크로드 개발을 위해 데이터를 이기종 환경으로 복사나 이동하지 않고 동일한 데이터에 대한 작업할 수 있음을 의미하며, 동시에 스노우플레이크에 내장된 거버넌스 및 보안 제어 기능을 다양한 워크로드 사용자들에게 동일하게 적용할 수 있다는 것을 의미한다. 또한, 아나콘다(Anaconda)와의 파트너십으로 스노우플레이크 환경 내에는 파이썬 오픈소스 라이브러리가 내장되어 별도의 라이브러리를 위한 리파지토리를 구축 및 관리할 필요가 없다.
2012년 스노우플레이크가 설립된 시점만 하더라도 12개 이상의 새로운 데이터베이스 솔루션들이 등장했으며, 대다수 하둡 기반의 SQL 처리 모델을 채택했다. 그 당시에는 클라우드를 위한 “클래식” 데이터 웨어하우스 시스템을 완전히 새로운 기술로 설계하고 구축하는 것은 위험한 도전으로 간주되었지만, 10년이 지난 오늘날에는 스노우플레이크의 접근 방식이 옳았다는 것을 시장에서 확신시켜 주고 있다. 지난 시간 동안 하둡은 DBMS를 대체하지 못했으며, 단순하게 DBMS의 단점을 보완하는 데 그쳤다. 시장은 여전히 관계형 데이터베이스를 원하지만, 동시에 더 효율적이고 유연하며 클라우드에 더 적합한 데이터베이스를 원하고 있다. 이와 같은 시장 요구 사항을 충족하기 위해 스노우플레이크는 클라우드 환경에 맞는 데이터솔루션을 새롭게 설계하여 개발했다. 다중 클러스터 공유 데이터 아키텍처의 탄력성은 사용자가 데이터 분석하는 작업 방식을 변화시켰다. SaaS 모델은 사용자가 시스템을 쉽게 테스트해 보고 사용할 수 있게 했을 뿐만 아니라 개발 및 테스트에 큰 도움이 되었다. 단일 프로덕션 버전과 온라인 업그레이드를 통해 기존 개발 모델에서 할 수 있는 것보다 훨씬 빠르게 새로운 기능을 출시하고 개선 사항을 적용하여, 문제를 해결할 수 있게 되었다. 우리는 반정형 데이터 활용이 유용할 것이라고 기대했지만 실제 고객 환경에서 채택 속도에 기대 이상이었다. 우리는 대다수의 기업 환경에서 JSON과 같은 반정형 데이터를 저장하고 DBMS에 로드 할 수 있는 형식으로 변환하는 두 가지 용도로 하둡을 사용하고 있다는 사실을 발견했으며, 스노우플레이크는 반정형 데이터를 클라우드 스토리지에 저장하고 SQL 인터페이스로 반정형 데이터를 처리할 수 있는 기능을 제공함으로써, 기존 데이터베이스 시스템 뿐만 아니라 하둡 클러스터도 스노우플레이크로 대체할 수 있다는 사실을 알게 되었다. 오늘날 스노우플레이크 사용자들은 점점 더 많은 양의 데이터와 더 복잡한 워크로드를 스노우플레이크 시스템에서 사용하고 있다. 더 이상 데이터 솔루션 아키텍처로 인해 야기된 문제를 해결하는데 시간을 낭비할 필요가 없다. 이제 당신 차례다.