홈으로 돌아가기

asapBI의 오프라인 BI: Docker와 ClickHouse

이 기사는 asapBI에서 로컬 Docker 스택 PostgreSQL과 ClickHouse를 사용한 오프라인 개발 설정을 설명합니다. 상세히: 컨테이너 실행, dbcopy-json을 통한 데이터 복사, Git 버전 관리를 사용한 그래픽 Views 생성 및 문서 통합.

asapBI 오프라인: 네트워크 없이 로컬 데이터베이스와 View
Advertisement 728x90

asapBI에서의 오프라인 BI 개발: 로컬 스택과 시각적 뷰

asapBI는 BI 개발에 완전한 오프라인 지원을 제공합니다. 시스템은 PostgreSQL과 ClickHouse를 사용하는 로컬 Docker 스택, JSON 파일로 저장된 시각적 SQL 뷰, Git 버전 관리를 기반으로 합니다. 이로 인해 원격 서버에 의존하지 않고도 쿼리 작성, 데이터 실험, 논리 문서화가 가능하며, 불안정한 인터넷 연결으로 인한 다운타임을 완전히 제거할 수 있습니다.

로컬 환경은 데이터 격리, 안전한 실험, 버전 관리를 보장합니다. 개발자는 컨테이너 볼륨, CPU, 메모리 할당에 대해 완전한 통제권을 가집니다.

로컬 스택의 장점

로컬 개발은 팀 협업에서 발생하는 핵심 문제를 해결합니다:

Google AdInline article slot
  • 데이터 격리: Docker 볼륨은 외부 변경 사항으로부터 보호됩니다. 마이그레이션이나 정리 작업으로 인한 테스트 테이블 손실 위험이 없습니다.
  • 안전한 실험: 무거운 JOIN 연산이나 복잡한 뷰는 로컬 컨테이너에만 영향을 미치며, 공유 클러스터에는 영향을 주지 않습니다.
  • Git 버전 관리: 시각적 뷰는 JSON 파일로 저장되어 차이 분석, 코드 리뷰, 롤백이 가능합니다.
  • 데이터베이스 디지털 트윈: 스키마 변경, 데이터 타입, 관계 설정을 생산 환경에 영향 없이 테스트할 수 있습니다.

오프라인 환경 설정하기

설정은 세 단계로 이루어집니다.

1. Git에서 프로젝트 복제하기

프로젝트를 로컬 폴더에 다운로드하세요. 프로젝트 구조는 재무, 영업 등의 비즈니스 도메인별로 구성됩니다. 뷰 파일과 dbcopy-json 파일은 리포지토리에 저장됩니다.

2. Docker Compose로 BI 스택 실행하기

docker-compose.yml을 사용해 PostgreSQL과 ClickHouse를 실행합니다. 예시 구성:

Google AdInline article slot
services:
  asapbi-postgres:
    image: postgres:15-alpine
    container_name: asapbi-postgres
    restart: unless-stopped
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: admin
      POSTGRES_DB: demo
      PGDATA: /var/lib/postgresql/data/pgdata
    ports:
      - "15432:5432"
    volumes:
      - postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U admin -d demo"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 10s
    networks:
      - asapbi-net

  asapbi-clickhouse:
    image: clickhouse/clickhouse-server:24.8-alpine
    container_name: asapbi-clickhouse
    restart: unless-stopped
    environment:
      CLICKHOUSE_USER: admin
      CLICKHOUSE_PASSWORD: admin
      CLICKHOUSE_DB: analytics
    ports:
      - "18123:8123"   # HTTP
      - "19000:9000"   # Native
    volumes:
      - clickhouse-data:/var/lib/clickhouse
      - clickhouse-logs:/var/log/clickhouse-server
    healthcheck:
      test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:8123/ping || exit 1"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s
    networks:
      - asapbi-net

volumes:
  postgres-data:
    driver: local
  clickhouse-data:
    driver: local
  clickhouse-logs:
    driver: local

networks:
  asapbi-net:
    driver: bridge

asapBI 인터페이스 또는 CLI를 통해 실행합니다. Docker는 자동으로 필요한 이미지를 다운로드합니다.

3. 테스트 데이터로 데이터베이스 채우기

*.dbcopy-json 파일을 사용해 테스트 데이터셋을 복사합니다. 예시:

{
  "description": "클라이언트 복사 전 준비 및 정리",
  "beforeSQL": [
    "BEGIN;",
    "SET session_replication_role = replica;",
    "CREATE TEMP TABLE IF NOT EXISTS _copy_log (ts timestamptz, msg text);"
  ],
  "afterSQL": [
    "SET session_replication_role = DEFAULT;",
    "INSERT INTO _copy_log VALUES (now(), '복사 완료');",
    "COMMIT;"
  ],
  "tables": [
    {
      "schema": "reference",
      "table": "clients",
      "where": "is_active = true AND created_at >= '2024-01-01'",
      "beforeSQL": [
        "DROP INDEX IF EXISTS idx_clients_region_id",
        "DELETE FROM reference.clients WHERE created_at >= '2024-01-01'"
      ],
      "afterSQL": [
        "CREATE INDEX IF NOT EXISTS idx_clients_region_id ON reference.clients (region_id)",
        "ANALYZE reference.clients"
      ]
    },
    {
      "schema": "sales",
      "table": "orders",
      "where": "order_date >= '2024-01-01'",
      "beforeSQL": "ALTER TABLE sales.orders DISABLE TRIGGER ALL",
      "afterSQL": "ALTER TABLE sales.orders ENABLE TRIGGER ALL"
    },
    {
      "schema": "analytics",
      "table": "user_sessions",
      "where": "",
      "beforeSQL": null,
      "afterSQL": null
    }
  ]
}

인터페이스에서 소스와 대상 데이터베이스를 선택하세요. 개발 서버에서만 테스트 데이터를 사용해야 합니다.

Google AdInline article slot

시각적 SQL 뷰

로컬 ClickHouse 인스턴스에 연결하여 시각적 뷰를 생성하세요. 이들은 버전 관리와 코드 리뷰를 지원하는 JSON 파일입니다. 뷰는 대시보드와 분리되어 있어 계산 논리의 유일한 진실성 소스를 유지합니다.

이점:

  • 계산 논리의 중앙 집중식 저장소.
  • 여러 대시보드에서 재사용 가능.
  • Git diff를 통한 변경 추적.

문서 통합

뷰와 동일한 폴더에 문서 파일(MD, draw.io)을 직접 첨부하세요. 모델이 변경되면 문서도 자동으로 업데이트됩니다. 텍스트 파일은 AI 처리 및 자동 문서 생성에 이상적입니다.

핵심 요약

  • 지속적인 볼륨을 갖춘 로컬 Docker 스택은 데이터 격리와 신뢰성을 보장합니다.
  • JSON 파일로 저장된 시각적 뷰는 분석 작업에 대한 Git 버전 관리와 피어 리뷰를 가능하게 합니다.
  • *.dbcopy-json 파일은 안전하고 반복 가능한 테스트 데이터 복사를 자동화합니다.
  • 프로젝트 폴더 내에 문서(MD, draw.io)를 포함하면 항상 최신 상태를 유지할 수 있습니다.
  • 생산 환경의 안정성을 해치지 않는 완전한 샌드박스 환경을 제공합니다.

— Editorial Team

Advertisement 728x90

다음 읽기