본문 바로가기
카테고리 없음

Open Source Data Stack

by 조병희 2023. 4. 3.

이 기사에서는 모든 회사가 데이터 기반이 되는 데 필요한 핵심 오픈 소스 도구를 살펴보겠습니다. 통합, 변환, 오케스트레이션, 분석 및 ML 도구를 최신 개방형 데이터 스택에 대한 시작 가이드로 다룹니다.

최신 데이터 스택부터 시작하겠습니다. 그것에 대해 들어 보셨습니까 또는 그 용어가 어디에서 왔습니까? 다음은 데이터 용어집의 정의입니다.

MDS(최신 데이터 스택)는 수집에서 ML, 분석 BI 대시보드 백엔드를 사용하여 열 형식 데이터 웨어하우스 또는 레이크 솔루션에 이르기까지 엔드 투 엔드 분석을 달성하기 위한 오픈 소스 도구 힙입니다. 이 스택은 레고 블록처럼 확장 가능합니다. 일반적으로 데이터 통합, 변환 도구, 오케스트레이터  비즈니스 인텔리전스 도구로 구성됩니다. 데이터가 증가함에 따라 데이터 품질 및 관찰 가능성 도구, 데이터 카탈로그, 의미 체계 계층 등을 추가할 수 있습니다.

그렇다면 오픈 데이터 스택이란 무엇일까요? 오픈 데이터 스택은 최신 데이터 스택에 대한 더 나은 용어이지만 데이터 엔지니어링 수명 주기를 포괄하는 오픈 소스 및 개방형 표준을 기반으로 구축된 솔루션에 중점을 둡니다. 여전히 최신 데이터 스택과 동일한 목표를 가지고 있지만 개방성으로 인해 도구가 더 잘 통합되므로 더 유용한 데이터 실무자가 사용합니다.

개방이라는 단어는 여기서 매우 중요하며 종종 간과됩니다. 이는 도구 또는 프레임워크가 오픈 소스이거나 개방형 표준을 준수함을 의미합니다. 예를 들어, 데이터 레이크하우스 플랫폼인 Dremio는 폐쇄 소스이지만 Apache Iceberg 및 Apache Arrow와 같은 개방형 표준을 기반으로 하므로 대규모 조직의 공급업체 종속을 제거합니다.

📑 면책 조항 : 여기에 제시하는 핵심 도구는 개인적으로 가장 좋아하는 도구입니다. 그러나 선택할 수있는 도구가 100 가지가 넘기 때문에 해당 분야를 면밀히 연구 할 기회가 없다면 초보자 가이드를 제공하고 싶습니다. (또한 저는 Airbyte :)에서 일한다는 것을 기억하십시오.)

개방형 데이터 스택

개별 도구를 소개하기 전에 개방형 데이터 스택(모든 사람이 유지 관리하는 스택)을 사용해야 하는 이유를 살펴보겠습니다. 개방형 데이터 스택을 통해 기업은 데이터 스택의 각 구성 요소에 대해 데이터 엔지니어링 수명 주기의 주요 구성 요소를 다시 구현하여 휠을 재발명할 필요 없이 실전 테스트를 거친 기존 솔루션을 재사용하고 그 위에 구축할 수 있습니다.

과거에는 이러한 도구를 사용할 수 없었지만 이야기는 일반적으로 다음과 같이 진행되었습니다.

  • 추출 : "X에서 데이터를 추출하는 스크립트를 작성하십시오."
  • 시각화: "올인원 BI 도구를 구입해 보겠습니다."
  • 일정 : "이제 우리는 매일 크론이 필요합니다."
  • 모니터링 : "왜 우리는 대본이 깨진 것을 몰랐습니까?"
  • 구성: "이 코드를 약간 다르게 재사용해야 합니다."
  • 증분 동기화: "새 데이터만 필요합니다."
  • 스키마 변경: "이제 다시 작성해야 합니다."
  •  소스 추가 : "좋아, 새 스크립트 ..."
  • 테스트 + 인증 + 페이지 매김: "스크립트가 깨진 것을 왜 몰랐습니까?"
  • 크기 조정: "이 워크로드를 어떻게 확장 및 축소합니까?"

위의 스크립트는 한 회사(때로는 한 부서만)에만 사용되는 사용자 지정 코드로 작성 되었습니다. 오픈 데이터 스택에서 어떻게 이익을 얻는지 알아보고 위와 같은 문제를 해결하기 위해 데이터를 빠르게 스택하고 실행하는 방법을 알아보겠습니다.

i️ 이 시나리오와 함께 제공되는 나머지 수명 주기(예: 보안, 배포, 유지 관리, 데이터 관리 및 소프트웨어 엔지니어링 모범 사례 정의)는 무시하고 있습니다. 또한 대부분의 표준 스토리지 레이어와 상호 교환 할 수 있으므로 스토리지를 남겨 둡니다. 나는 또한 Data Lake 및 Lakehouse Guide에서 그들에 대해 심층적으로 썼습니다.

에어바이트와의 통합

첫 번째 작업은 데이터 통합입니다. 조직이 데이터베이스, CRM 시스템, 애플리케이션 서버 등과 같은 다양한 시스템에서 대량의 데이터를 수집하는 경우 통합이 필요합니다. 여러 시스템에 분산된 데이터에 액세스하고 분석하는 것은 어려울 수 있습니다. 이 문제를 해결하기 위해 데이터 통합을 사용하여 조직의 데이터에 대한 통합 보기를 만들 수 있습니다.

높은 수준에서 데이터 통합은 서로 다른 소스 시스템의 데이터를 하나의 통합된 보기로 결합하는 프로세스입니다. 이는 수동 통합, 데이터 가상화, 애플리케이션 통합 또는 여러 소스의 데이터를 통합 대상으로 이동하여 수행할 수 있습니다.

Airbyte는 이 직업에 대한 최고의 선택이 될 것입니다. Airbyte가 데이터 통합을 위해 데이터 엔지니어링 수명 주기에서 사용해야 하는 첫 번째 도구인 프리미어 오퍼링을 통해 테이블에 제공하는 것을 설명하겠습니다.

왜 에어바이트인가?

Airbyte는 모든 통합 데이터 파이프라인을 통합하고 사전 구축된 데이터 및 사용자 지정 커넥터를 복제합니다. 몇 가지 주요 기능은 안정성, 확장성, 통합 및 투명성입니다.

Airbyte는 소스 API 및 스키마가 변경될 때 커넥터를 업데이트하는 대규모 커뮤니티를 제공하여 데이터 팀이 ETL 대신 통찰력과 혁신에 집중할 수 있도록 합니다. 오픈 소스를 사용하면 사전 구축된 커넥터를 편집하고 몇 시간 만에 새 커넥터를 빌드할 수 있습니다. 더 이상 별도의 시스템이 필요하지 않습니다. Airbyte는 데이터베이스를 포함하여 모든 것을 처리하고 대부분의 오케스트레이터와 통합됩니다.

이 값은 커넥터의 긴 꼬리를 해결하기 위해 즉시 사용 가능한 300+ 커넥터에서 비롯됩니다. 모두 오픈 소스이며 쉽게 사용자 정의 할 수 있으며 선택한 언어를 지원합니다 (커넥터는 Docker 컨테이너로 실행되기 때문에). 구성된 모든 대상에서 전체 새로 고침, 증분 및 로그 기반 CDC 복제를 예약하는 옵션을 사용하면 시간을 절약할 수 있으며 Debezium 통합을 통한 최첨단 변경 데이터 캡처를 통해 동기화 시간과 오버헤드를 줄일 수 있습니다.

에어바이트를 시작하는 방법

그것은 매우 간단합니다 : 터미널에 두 줄의 코드를 입력하고 Airbyte UI (문서에 대한 자세한 내용)를 얻습니다

:

git clone https://github.com/airbytehq/airbyte.git
cd airbyte && docker-compose up

DBT를 사용한 데이터 변환(SQL)

다음 단계는 데이터 변환입니다. 데이터 변환은 데이터를 한 형식에서 다른 형식으로 변환하는 프로세스입니다. 이렇게 하는 이유는 원래 의도한 것과 다른 사용 사례에 맞게 데이터를 최적화하거나 다른 시스템에 데이터를 저장하기 위한 요구 사항을 충족하기 위한 것일 수 있습니다. 데이터 변환에는 데이터 정리, 정규화, 구조화, 유효성 검사, 정렬, 조인 또는 보강과 같은 단계가 포함될 수 있습니다. 본질적으로 핵심 비즈니스 논리는 변환 계층에 저장됩니다.

SQL의 가장 큰 선택과  dbt 인 이유를 살펴 보겠습니다.

왜 dbt인가?

모든 데이터 프로젝트는 일부 SQL 쿼리로 시작합니다. 기본값은 dbt를 사용하는 것이어야 하며, 이 경우 SQL에서 지원하지 않는 최상의 소프트웨어 엔지니어링 사례와 추가된 기능을 즉시 사용해야 합니다. 필수 요소는 문서 생성, 다른 SQL 문의 재사용 가능성, 테스트, 소스 코드 버전 관리, Jinja 템플릿을 사용하여 일반 SQL에 추가 된 기능 및 (새로 추가된) Python 지원입니다.

dbt는 트랜잭션을 관리하고, 테이블을 삭제하고, 스키마 변경을 관리하여 상용구 DML  DDL을 작성하지 않습니다. 필요한 데이터 세트를 반환하는 SQL select 문 또는 Python 데이터 프레임만으로 비즈니스 로직을 작성하면 dbt가 구체화를 처리합니다.

dbt는 장기 실행 쿼리를 찾는 데 중요한 메타데이터를 생성하며 전체 또는 증분 로드와 같은 표준 변환 모델을 기본적으로 지원합니다.

무료 알파 및 베타 커넥터를 통한 무제한 데이터 이동
소개: 무료 커넥터 프로그램 ->

dbt를 시작하는 방법

dbt는 먼저 설치해야 하는 CLI(명령줄 인터페이스) 도구입니다. 원하는 설치 방법을 선택하십시오. 초기화하려면 명령을 실행하여 빈 프로젝트를 설정할 수 있습니다 : dbt init my-open-data-stack-project.

다음으로, 매크로는 확장 된 Jinja 매크로가있는 SQL 문이고 모델은 테이블보기로 정의 된 대상에 포함하려는 물리적 요소 인 매크로  모델로 SQL 문을 설정할 수 있습니다 (아래 이미지 참조, dbt_project.yml에서 지정할 수 있음).

"dbt run"을 사용하여 테이블 및 뷰를 생성할 때 작동하는 dbt CLI의 예

💻 GitHub의 transformation_dbt 아래에 있는 오픈 데이터 스택 프로젝트에서 다양한 구성 요소(예: 매크로, 모델, 프로필 등)가 있는 위에 설명된 프로젝트를 찾을 수 있습니다.

dbt를 매우 강력하게 만드는 훨씬 더 많은 것이 있습니다. dbt 개발자 허브에서 후속 조치를 취하고 오픈 데이터 스택 프로젝트를 사용해 보세요.

메타베이스를 사용한 분석 및 데이터 시각화(SQL)

데이터가 추출되고 변환되면 모든 노력의 가치를 시각화하고 얻을 때입니다. 시각적 개체는 분석  비즈니스 인텔리전스 도구 중 하나를 통해 수행됩니다. BI 도구는 모든 사람이 보고 의견을 제시하는 시각화이기 때문에 데이터 엔지니어에게 가장 중요한 도구일 수 있습니다!

분석은 데이터 및 통계의 체계적인 계산 분석입니다. 데이터에서 의미 있는 패턴을 검색, 해석 및 전달하는 데 사용됩니다. 또한 효과적인 의사 결정을 위해 데이터 패턴을 적용하는 것도 수반됩니다.

i️ 이 범주에서는 사용 가능한 거의 모든 도구가 마음에 듭니다. 강력한 데이터 엔지니어링 기본 사항 및 데이터 모델링을 구현하는 경우 BI 도구, Notebook을 선택하고 데이터 앱을 빌드합니다. 거의 매일 얼마나 많은 BI 도구가 구축되는지 놀랍고 Rill Data는 흥미로운 도구입니다.

왜 메타베이스인가?

사용 가능한 많은 선택 중에서 메타베이스를 선택한 이유는 엔지니어가 아닌 사용자를위한 단순성과 설정 용이성 때문입니다.

메타베이스를 사용하면 데이터에 대해 질문하고 막대 차트나 세부 테이블 등 적절한 형식으로 답변을 표시할 수 있습니다. 질문과 그룹 질문을 친숙한 대시보드에 저장할 수 있습니다. 또한 Metabase는 팀 간의 대시보드 공유를 단순화하고 어느 정도 셀프 서비스를 가능하게 합니다.

메타베이스를 시작하는 방법

시작하려면 여기에서 메타베이스.jar 다운로드해야 합니다. 완료되면 다음을 실행하기만 하면 됩니다.

java -jar metabase.jar
메타베이스의 예제 대시보드

이제 데이터 원본을 연결하고 대시보드를 만들 수 있습니다.

Dagster를 사용한 데이터 오케스트레이션(Python)

마지막 핵심 데이터 스택 도구는 오케스트레이터입니다. 데이터 오케스트레이터로 빠르게 사용되어 복잡한 이기종 클라우드 환경의 작업 간 종속성을 종단 간 모델링합니다. 위에서 언급한 개방형 데이터 스택 도구와 통합됩니다. 특정 케이던스에서 실행해야 하는 글루 코드가 있거나, 이벤트에 의해 트리거되거나, 데이터 위에서 ML 모델을 실행하는 경우 특히 효과적입니다.

오케스트레이션의 또 다른 중요한 부분은 기능적 데이터 엔지니어링을 적용하는 것입니다. 기능적 접근 방식은 "순수한"기능에 명확성을 부여하고 부작용을 제거합니다. 그것들은 외부 맥락이나 실행을 둘러싼 사건의 역사를 이해하지 않고 고립되어 작성, 테스트, 추론 및 디버깅 될 수 있습니다. 데이터 파이프라인의 복잡성이 빠르게 증가하고 데이터 팀의 수가 증가함에 따라 명확성을 제공하는 방법론을 사용하는 것은 사치가 아니라 필수입니다.

왜 대그스터인가?

Dagster는 기능적인 파이썬 코드를 작성하도록 강요하는 프레임 워크입니다. dbt와 마찬가지로 선언적, 추상화, idempotent 및 형식 검사 함수 작성과 같은 모범 사례를 적용하여 오류를 조기에 catch합니다. Dagster에는 파이프라인을 견고하고 테스트 가능하며 유지 관리할 수 있는 간단한 단위 테스트와 편리한 기능도 포함되어 있습니다. 또한 Airbyte와 긴밀하게 통합되어 데이터로 데이터를 코드로 통합 할 수 있습니다. 최신 데이터 오케스트레이션 동향에 대해 자세히 알아보십시오.

Dagster를 시작하는 방법

쉽게 시작하려면 Airbyte, dbt 및 Python의 일부 ML 코드가 포함된 데이터 파이프라인이 포함된 예제 프로젝트 assets_modern_data_stack 스캐폴드할 수 있습니다.

pip install dagster dagit && dagster project from-example --name open-data-stack-project --example assets_modern_data_stack
cd open-data-stack-project && pip install -e ".[dev]"
dagit
Dagster에서 세 줄 이상의 코드를 실행할 때의 개방형 데이터 스택 파이프라인 예제

개방형 데이터 스택의 추가 구성 요소

지금까지 언급 한 도구는 데이터를 처음부터 끝까지 사용하려는 경우 개방형 데이터 스택의 핵심이라고 부르는 것을 나타냅니다. 데이터 스택의 장점은 이제 다른 도구 및 프레임워크를 사용하여 특정 사용 사례를 추가할 수 있다는 것입니다. 영감을 얻기 위해 여기에 몇 가지를 추가하고 있습니다.

무엇 향후 계획?

지금까지 최신 데이터 스택과 개방형 데이터 스택의 차이점을 살펴보았습니다. 우리는 그 초능력과 그것을 사용하려는 이유에 대해 논의했습니다. 또한 사용 가능한 데이터 스택의 일부로 핵심 오픈 소스 도구에 대해서도 논의했습니다.

이러한 네 가지 핵심 도구의 작동 방식을 보려면 GitHub 리포지토리를 스크랩하고 Airbyte와 통합하고, dbt를 사용하여 SQL 보기를 만들고, Dagster를 사용하여 오케스트레이션하고, 대시보드 메타베이스를 시각화하는 Python(Dagster)으로 Airbyte 연결 구성에 대한 자습서를 읽어보세요.

우리는 엔터프라이즈 데이터 플랫폼이나 소위 코드 없는 솔루션에 대해 논의하지 않았습니다. 다음 블로그 게시물에서는 개방형 데이터 스택을 사용한 기업 채택의 어려움에 대해 설명합니다. 특히 새로운 데이터 스택에 적응하려는 중견 및 대기업에 중점을 둘 것입니다.

항상 그렇듯이 Open Data Stack이라는 주제에 대해 더 자세히 논의하고 싶다면 커뮤니티 Slack에서 10k + 다른 데이터 엔지니어 또는 저와 채팅 할 수 있습니다. GitHub에서 열린 오픈 데이터 스택 프로젝트를 팔로우하거나 뉴스레터로 새 기사를 신청하세요.

출처: The Open (aka Modern) Data Stack Distilled into Four Core Tools | Airbyte

댓글