반응형

0. 실습 내용

  • airbyte 를 docker container 로 실행한다
  • airbyte 커넥션
    • mysql --> s3 (csv) 
    • sync mode : full refresh
  • mysql 역시 docker container 로 실행한다.
  • 데이터는 공공 데이터를 활용한다.

 

1.install & quick start

  • mysql docker compose
version: "3.7"

services:
  mysql:
    image: mysql:latest
    environment:
      - MYSQL_ROOT_PASSWORD=jssvs
    volumes:
      - ./data:/var/lib/mysql
    ports:
      - 3306:3306
  • airbyte docker compose
## airbyte clone & up 
$ git clone https://github.com/airbytehq/airbyte.git
$ docker-compose -f docker-compose.yaml up -d 



## mysql up
$ docker-compose -f docker-compose.yaml up -d

  • 서비스 진입

2.Sample 데이터 로드 

 

서울교통공사_지하철혼잡도정보_20211231

서울교통공사 1-8호선 30분 단위 평균 혼잡도로 30분간 지나는 열차들의 평균 혼잡도(정원대비 승차인원으로, 승차인과 좌석수가 일치할 경우를 혼잡도 34%로 산정) 입니다.(단위: %). 서울교통공사

www.data.go.kr

 

 

 

3.connection 생성 및 테스트

  • Source 생성하기

  • Destination 생성하기

 

  • 연결 생성하기

  • 연결에서 볼 수 있는 설정 정보들
    • Transfer
      • 복제 주기 - cron , manual 등.
    • Streams
      • 목적지 네임스페이스 설정
      • 목적지 스트림의 prefix 네이밍 설정
      • airbyte 에서는 stream 이 옮겨질 데이터의 대상이고, mysql 의 경우 sync 될 테이블을 의미한다.
    • 원하는 sync source 를 선택할 수 있다.
  • sync Job 및 로그 확인

  • sync 된 데이터 확인

 

반응형
반응형

1.airbyte 란?

  • 오픈소스 데이터 통합 플랫폼 (ELT)
  • api , database, warehouse , application 간 데이터 sync, 즉 동기화 를 돕는 , 가능하게 해주는 소프트웨어 라고 하지만 내생각엔 아직 툴..
  • 데이터 통합 상품
  • 장점
    • built for extensibility
      • 커넥터 추가가 쉽고 확장성을 제공한다.
    • optional nomalized schemas
      • 선택적으로는 스키마를 정규화 할 수 있다.
    • Full grade schfeduler
      • 필요한 만큼 replication 을 자동화 할 수 있다.
    • real - time monitoring
      • 모든 로그를 모니터링 하고, 기능으로 제공한다.
    • incremental updates
      • replication 이 증분 업데이트를 기반으로 동작하여 transfer cost 를 줄여준다.
    • manual full refresh
      • 원할 때 수동으로 refresh 가 가능하다.
  • 단점
    • Stable 릴리즈 버전 없음, 아직 알파
    • 사용자 액세스 관리에 대한 지원 부족

 

2. 왜 airbyte ?

  • 기존 ETL 기반의 아키텍쳐에서 ELT 기반으로 리아키텍쳐링 할 때, 원본 데이터 소스를 이관 및 sync 해주는 역할이 중요해졌고, airbyte 가 시장에 빠르게 진입 했다고 생각한다.
  • 손쉽게 커넥터 설치만으로 데이터 연동 및 sync 가 가능해졌고, 충분한 UI 를 제공하고 있다.
  • airflow 로도 비슷한 구현을 할 수 있지만 개발이 필요한데.. 얘는 개발도 안해도 되고 CDC 옵션까지 제공한다.
  • 커넥터가 정말 많고 다양하게 지원한다.

3. airbyte 구성 요소

  • UI
    • airbyte 사용자를 위한 GUI
  • WebServer
    • UI 와 API 사이에서 발생하는 이벤트를 핸들링 하는 웹 서버
  • Config Store
    • 커넥션 정보들을 담고 있음 ( credential, 주기 등등.)
  • Config API
    • airbyte 의 main controle plane. 직역하면 관리영역이고, airbyte 의 모든 operation(동작) 들. API 콜 포함하여 설정하고 Inovoke 를 수행한다.
  • Scheduler
    • API 로 요청을 받고 Temporal Service 로 병렬적으로 보낸다. 잡의 성공/실패를 트래킹 하는 역할도 있다.
  • Scheduler Store
    • 예약된 스케쥴 job 정보가 저장된 곳
  • Temporal Service
    • 큐에 쌓이는 Task 와 workflow. 를 관리한다.
  • Worker
    • 소스 커넥터에 연결하고, data 를 받아와 목적지에 쓰는 역할을 수행한다
  • 지원되는 동기화 모드
    • full refresh - overwrite - 전체 새로고침 덮어쓰기 , 모든 데이터를 다시 동기화 하고 교체
    • full refresh - append - 전체 새로고침 추가 , 모든 행을 다시 동기화 하고 복제
    • incremental append - 증분 추가 , 새 행을 동기화하고 이미 동기화된 행뒤에 추가
    • incremental dedupe history - 중복 제거된 증분 추가, 새 행을 동기화 하고 동기화된 행을 추가하며 증분 중복제거를 기록

위 구성 컴포넌트들의 이름이 조금 다르게 되있지만 컨테이너의 로그를 보면 대략적으로 어떤 데몬이 해당 컴포넌트 역할을 하는지 알 수 있다.

 

** airbyte 는 job 이 수행될 때 동적으로 해당 job의 컨테이너가 새로 생성되서 동작한다. 관리형 컨테이너 서비스를 써서 구축한다면 참고하길 바란다.

 

 

참조 

https://airbytehq.github.io/understanding-airbyte/high-level-view/

 

Architecture overview | Airbyte Documentation

A high level view of Airbyte's components.

docs.airbyte.com

 

 

 

반응형

+ Recent posts