사진과 음악을 좋아하는 개발자 지망생의 블로그

[데이터 웨어하우스 - 중급] 1. 다양한 데이터 웨어하우스 옵션 - 3) 데이터 웨어하우스 옵션들, 실리콘밸리 회사들의 데이터 스택트렌드 본문

개발/데이터 웨어하우스 - 중급

[데이터 웨어하우스 - 중급] 1. 다양한 데이터 웨어하우스 옵션 - 3) 데이터 웨어하우스 옵션들, 실리콘밸리 회사들의 데이터 스택트렌드

devculture309 2023. 5. 24. 17:56
반응형

1. 데이터 웨어하우스 옵션들

1) AWS Redshift

AWS Redshift은 2012년에 시작된 AWS 기반의 데이터 웨어하우스이며, 페타바이트 규모의 데이터 분산 처리를 지원합니다. SQL 쿼리를 사용하여 데이터를 처리할 수 있으며, PostgreSQL과 호환되는 문법을 제공합니다. 또한 Python 사용자 정의 함수 (UDF)를 작성하여 기능을 확장할 수도 있습니다.

 

AWS Redshift는 처음에는 고정 비용 모델로 제공되었지만, 현 가변 비용 모델 (Redshift Serverless)도 지원하고 있습니다. 온디맨드 가격 외에도 예약 가격 옵션도 제공됩니다. 또한 CSV, JSON, Avro, Parquet 등 다양한 데이터 형식을 지원합니다.

 

AWS Redshift는 AWS 내의 다른 서비스와 쉽게 연동할 수 있습니다. 예를 들어 S3, DynamoDB, SageMaker와 같은 서비스와 연결하여 사용할 수 있습니다. 또한 Redshift의 기능을 확장하기 위해 Redshift Spectrum, AWS Athena 등의 서비스와 함께 사용할 수도 있습니다. 또한 배치 데이터 중심이지만 실시간 데이터 처리도 지원하며, 웹 콘솔 외에도 API를 통해 관리 및 제어할 수 있습니다.

 

2) Snowflake

Snowflake는 2014년에 클라우드 기반 데이터 웨어하우스로 시작되어 현재는 데이터 클라우드로 발전하였습니다. Snowflake는 데이터 공유(Data Sharing) 및 마켓플레이스(Data Marketplace)를 통해 데이터 판매를 가능하게 해주는 기능을 제공합니다. 또한 ETL 및 다양한 데이터 통합 기능도 제공합니다.

 

Snowflake는 SQL을 기반으로 하여 빅데이터의 저장, 처리 및 분석을 가능하게 해 줍니다. 비구조화된 데이터 처리와 머신러닝 기능도 제공되어 다양한 데이터 유형을 처리할 수 있습니다. 또한 CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 형식을 지원하며, S3, Google Cloud Storage, Azure Blob Storage 등의 클라우드 스토리지도 지원합니다.

 

Snowflake는 배치 데이터 중심이지만 실시간 데이터 처리도 지원하며, 웹 콘솔 외에도 API를 통해 관리 및 제어할 수 있습니다.

 

3) Google Cloud BigQuery

Google Cloud BigQuery는 2010년에 구글 클라우드에서 시작된 데이터 웨어하우스 서비스입니다. 구글 클라우드의 대표적인 서비스 중 하나로, BigQuery SQL을 사용하여 데이터를 처리할 수 있습니다. BigQuery SQL은 일반적인 SQL 기능 외에도 Nested fields와 repeated fields와 같은 기능을 지원합니다. 또한 가변 비용과 고정 비용 옵션을 제공하여 유연한 가격 모델을 선택할 수 있습니다.

 

Google Cloud BigQuery는 CSV, JSON, Avro, Parquet 등 다양한 데이터 포맷을 지원합니다. 또한 구글 클라우드 내의 다른 서비스들과의 연동이 용이하며, 클라우드 스토리지, 데이터플로우, AutoML 등과 통합하여 사용할 수 있습니다.

 

배치 데이터를 중심으로 처리하면서도 실시간 데이터 처리도 지원하며, 웹 콘솔 외에도 API를 통해 BigQuery를 관리하고 제어할 수 있습니다.

 

4) Apache Hive

Apache Hive는 Facebook에서 2008년에 시작된 아파치 오픈소스 프로젝트입니다. 하둡 기반으로 동작하는 SQL 기반 데이터 웨어하우스 서비스로, HiveQL이라고 불리는 SQL을 지원합니다. Hive는 MapReduce 위에서 동작하는 버전과 Apache Tez를 실행 엔진으로 사용하는 버전 두 가지가 있습니다. 또한 다른 하둡 기반의 오픈소스 프로젝트들과 연동이 용이하며, Spark, HBase 등과의 통합이 가능합니다. Hive에서는 자바나 파이썬을 사용하여 UDF (User Defined Function)를 작성할 수도 있습니다.

 

CSV, JSON, Avro, Parquet 등 다양한 데이터 포맷을 지원하며, 배치 빅데이터 프로세싱 시스템으로 사용됩니다. 데이터 파티셔닝이나 버킷팅과 같은 최적화 작업을 지원하여 처리 속도보다는 대량의 데이터 처리에 최적화되어 있습니다. Hive는 웹 UI와 커맨드라인 인터페이스 (CLI) 두 가지를 지원합니다. 그러나 Spark의 등장으로 인해 Hive에 대한 관심이 줄어들고 있는 추세입니다.

 

5) Apache Presto

Apache Presto는 Facebook에서 2013년에 시작된 아파치 오픈소스 프로젝트입니다. Presto는 다양한 데이터 소스에 존재하는 데이터를 대상으로 SQL을 실행할 수 있습니다. HDFS (Hadoop Distributed File System), S3, Cassandra, MySQL 등과 같은 데이터 소스를 지원하며, PrestoSQL이라 불리는 SQL을 사용합니다.

 

Presto는 CSV, JSON, Avro, ORC, Parquet 등과 같은 다양한 데이터 포맷을 지원합니다. 배치 빅데이터 프로세싱 시스템으로 사용되며, Hive와는 달리 빠른 응답 속도에 더 많은 최적화를 집중시킵니다. Presto는 웹 UI와 커맨드라인 인터페이스 (CLI) 두 가지를 지원합니다. 또한, AWS Athena는 Presto를 기반으로 만들어진 서비스입니다.

 

Presto는 대량의 데이터를 처리하는 데 있어서 뛰어난 성능과 유연성을 제공하며, 다양한 데이터 소스에 접근하여 데이터를 분석할 수 있는 강력한 도구입니다.

 

6) Apache Iceberg

Apache Iceberg는 Netflix에서 2018년에 시작된 아파치 오픈소스 프로젝트입니다. Iceberg는 데이터 웨어하우스 기술이 아닌 대용량 SCD (Slowly-Changing Datasets) 데이터를 다룰 수 있는 테이블 포맷입니다.

 

Iceberg는 HDFS, S3, Azure Blob Storage와 같은 클라우드 스토리지를 지원합니다. ACID 트랜잭션과 타임 여행 기능을 제공하여 과거 버전으로 롤백하고 변경 기록을 유지할 수 있습니다. 또한, 스키마 진화 (Schema Evolution)를 지원하여 테이블의 컬럼을 제거하거나 추가할 수 있습니다. 이를 위해 테이블을 다시 작성할 필요가 없습니다.

 

Iceberg는 자바와 파이썬 API를 지원합니다. 또한, Spark, Flink, Hive, Hudi 등과 같은 다른 Apache 시스템과 연동할 수 있습니다. Iceberg는 대용량의 데이터를 안정적으로 처리하고 유연한 데이터 조작을 위한 강력한 도구로 사용됩니다.

 

7) Apache Spark

Apache Spark는 UC Berkeley의 AMPLab에서 2013년에 시작된 아파치 오픈소스 프로젝트입니다. Spark는 빅데이터 처리를 위한 종합적인 솔루션으로서 다양한 기능을 제공합니다.

 

Spark는 배치 처리, 실시간 처리, 그래프 처리, 머신러닝 기능을 포함한 다양한 기능을 제공합니다. API 및 SQL을 통해 배치 처리를 수행할 수 있으며, 실시간 처리, 그래프 처리, 머신러닝과 같은 기능도 제공합니다.

 

Spark는 다양한 분산 처리 시스템과 연동이 가능합니다. 하둡의 YARN, AWS EMR, Google Cloud Dataproc, Mesos, Kubernetes(K8s) 등과 연동하여 사용할 수 있습니다.

 

또한, Spark는 다양한 파일 시스템과 연동이 가능합니다. HDFS, S3, Cassandra, HBase 등과 같은 파일 시스템과 데이터를 처리할 수 있습니다.

 

Spark는 CSV, JSON, Avro, ORC, Parquet 등과 같은 다양한 데이터 포맷을 지원합니다. 이를 통해 다양한 형식의 데이터를 처리할 수 있습니다.

 

또한, Spark는 다양한 프로그래밍 언어를 지원합니다. 자바, 파이썬, 스칼라, R 등을 사용하여 Spark를 개발하고 실행할 수 있습니다. 이는 사용자들이 익숙한 언어를 선택하여 작업할 수 있도록 유연성을 제공합니다.

 

 

2. 데이터 플랫폼의 발전단계

데이터 플랫폼의 발전은 일반적으로 다음과 같은 단계를 거칩니다

 

1) 초기 단계: 데이터 웨어하우스 + ETL

 데이터 웨어하우스와 ETL(Extract, Transform, Load) 프로세스를 기반으로 데이터를 수집, 변환 및 저장합니다. 이는 전통적인 데이터 통합과 분석 방식입니다.

 

2) 발전 단계: 데이터 양 증가

 데이터 양이 급격히 증가하면서 대규모 데이터 처리를 위해 빅데이터 처리 시스템이 도입되며 다음과 같은 조치가 이루어집니다

 

② - 1. Spark과 같은 빅데이터 처리 시스템 도입

  대규모 데이터 처리를 위해 분산 처리 시스템인 Apache Spark를 도입합니다. Spark는 데이터를 효율적으로 처리하고 분석할 수 있는 기능을 제공합니다.

 

② - 2. 데이터 레이크 도입

 데이터 레이크는 로그 데이터 및 기타 대용량 비구조화 데이터를 저장하고 관리하기 위한 저장소입니다. 데이터 소스에서 데이터 파이프라인을 통해 데이터를 데이터 레이크로 이동시키고, 필요에 따라 데이터 웨어하우스로 이동시킵니다.

  • 데이터 소스 -> 데이터 파이프라인 -> 데이터 웨어하우스
  • 데이터 소스 -> 데이터 파이프라인 -> 데이터 레이크
  • 데이터 레이크 -> 데이터 파이프라인 -> 데이터 웨어하우스

이러한 데이터 이동 및 처리과정에서 Spark나 Hadoop과 같은 기술이 사용됩니다. 데이터 레이크는 대용량 데이터를 저장하고 유연한 분석을 위해 필요한 형태로 가공할 수 있는 환경을 제공합니다.

 

② - 3. Hadoop 기반의 기술 활용

Hadoop은 데이터 레이크의 구성 요소로 많이 사용되며, Hive와 Presto와 같은 도구를 기반으로 데이터를 처리하고 분석할 수 있습니다. Hive는 SQL 쿼리를 사용하여 데이터를 조회하고 처리하는 기능을 제공하며, Presto는 다양한 데이터 소스에 존재하는 데이터를 대상으로 SQL을 실행할 수 있습니다. 이러한 Hadoop 기반의 기술은 대규모 데이터 처리와 분석을 지원하며, 데이터 웨어하우스와 데이터 레이크 간의 연계를 용이하게 합니다

 

데이터 양이 증가하는 단계에서는 분산 처리 시스템과 데이터 레이크를 활용하여 대용량 데이터의 저장, 처리, 분석을 효율적으로 수행할 수 있습니다. 이를 통해 조직은 다양한 데이터 소스로부터 가치 있는 통찰력을 얻을 수 있습니다.

 

3) 성숙 단계: 데이터 활용 증대

데이터 플랫폼의 성숙 단계에서는 데이터 활용이 더욱 증대됩니다. 실제 비즈니스 현업에서 데이터 활용이 가속화되며, ELT(Extract, Load, Transform) 단계가 더 중요해지면서 analytics engineering 도구인 dbt(Data Build Tool)와 같은 도구가 도입됩니다. 이를 통해 데이터를 추출하고 로드한 후 변환 및 가공하여 분석에 활용되며, 다음과 같은 조치가 이루어집니다

 

1. ELT 단의 중요성 강조

데이터의 추출(Extract), 변환(Transform), 로드(Load) 과정 중 변환 단계가 더 중요해지며, ELT(Extract, Load, Transform) 패턴이 주목받습니다. 데이터 레이크와 데이터 웨어하우스 간의 데이터 이동 및 변환 작업에 중점을 두고 데이터를 처리합니다. 이를 통해 데이터의 품질 향상과 변환 작업의 유연성을 높일 수 있습니다.

 

 -  2. Analytics Engineering 도구 도입

ELT 단계의 중요성이 커짐에 따라 analytics engineering을 위한 도구인 dbt(Data Build Tool)와 같은 도구들이 도입됩니다. dbt는 데이터 변환 및 모델링 작업을 관리하고 문서화하며, 데이터 웨어하우스의 데이터 품질과 일관성을 유지하는 데 도움을 줍니다. 이를 통해 데이터 엔지니어나 분석가가 데이터를 효율적으로 다룰 수 있고, 데이터 파이프라인의 유지보수 및 관리가 용이해집니다.

 

 -  3. MLOps를 통한 머신러닝 개발 운영 효율성 증대

 성숙 단계에서는 머신러닝(Machine Learning) 개발과 운영(MLOps)에 대한 노력이 증대됩니다. MLOps는 머신러닝 모델의 개발, 테스트, 배포, 모니터링 등 전체 라이프사이클을 관리하기 위한 프로세스와 도구의 적용을 의미합니다. 데이터 플랫폼은 머신러닝 모델의 효율적인 운영을 지원하기 위해 모델 버전 관리, 자동화된 배포, 모델 모니터링 등의 기능을 제공합니다. 이를 통해 머신러닝 개발과 운영의 효율성이 증대되며, 실시간 예측 및 의사 결정에 활용되는 머신러닝 모델의 가치를 극대화할 수 있습니다.

 

성숙 단계에서는 ELT 단계의 중요성과 데이터 활용에 대한 가속화, 그리고 머신러닝 개발 운영 관련 효율성 향상에 초점을 맞추게 됩니다. 이를 통해 조직은 데이터의 가치를 최대화하고, 데이터 주도적인 의사 결정과 혁신을 이끌어낼 수 있습니다

 

4) MLOps 및 효율성 증대

성숙한 데이터 플랫폼에서는 머신러닝(Machine Learning)과 관련된 작업의 효율성을 증대시키는 노력이 이루어집니다. MLOps(Machine Learning Operations) 및 관련 도구와 프로세스를 도입하여 머신러닝 모델의 개발, 배포, 관리 등을 효율적으로 수행합니다. 이는 데이터 플랫폼을 활용하여 머신러닝 기반의 예측, 추천 및 자동화 작업을 더욱 강화하는 데 중점을 둡니다.

반응형