프로젝트 소개
OpenEverest Plugin Bench는 OpenEverest PostgreSQL 벤치마킹 MVP의 일부로 개발 중인 플러그인입니다. 사용자는 OpenEverest 데이터베이스 클러스터 뷰에서 pgbench 벤치마크를 실행할 수 있으며, 각 벤치마크는 임시 Kubernetes Job에서 실행됩니다. 이 프로젝트는 명시적으로 진행 중인 MVP로 표시되어 있으며 아직 프로덕션 사용을 위한 것이 아닙니다.
작동 방식: 플러그인 백엔드는 OpenEverest API를 통해 선택된 PostgreSQL 인스턴스의 연결 세부 정보를 확인하고, 데이터베이스 자격 증명이 포함된 임시 Secret을 생성하고, pgbench 러너 이미지를 사용하는 Kubernetes Job을 생성하고, Job이 완료될 때까지 대기한 후 러너 로그를 수집하고, Job과 임시 Secret을 삭제하여 벤치마크 실행을 조정합니다. 프론트엔드는 현재 PostgreSQL 클러스터 세부 정보 탭으로 표시됩니다. 드라이버 기반 설계를 통해 다른 데이터베이스 기술도 나중에 추가할 수 있습니다.
로컬 개발에는 Docker, kubectl, Helm, k3d, Tilt, Go, Node.js(npm 포함)가 필요합니다. 클러스터에서 플러그인을 실행하려면 OpenEverest 설치와 지원되는 PostgreSQL 제공자가 필요합니다. 개발 클러스터와 Tilt 환경은 make dev-up으로 시작하거나, 클러스터가 이미 존재하는 경우 tilt up -f dev/Tiltfile로 시작할 수 있습니다. Tilt는 프론트엔드, 코디네이터 이미지, pgbench 러너 이미지를 빌드합니다. 러너 이미지는 코디네이터가 벤치마크 Job을 시작할 때만 사용됩니다.
러너는 PGHOST, PGDATABASE, PGUSER, PGPASSWORD 또는 PGPASSFILE을 통해 PostgreSQL 연결 세부 정보를 받습니다. 벤치마크 옵션에는 BENCH_INITIALIZE(기본값 false), BENCH_DURATION(기본값 60초), BENCH_CLIENTS(기본값 1), BENCH_THREADS(기본값 1), BENCH_SCALE(기본값 1)이 포함됩니다. BENCH_INITIALIZE=true로 설정하면 pgbench 테이블을 삭제하고 다시 생성하므로 일회용 데이터베이스에서만 사용해야 합니다.
유용한 명령으로는 프론트엔드용 npm ci 및 npm run build, 백엔드에서 go test ./... 및 go vet ./..., helm lint charts/plugin-bench/, pgbench 러너 이미지용 docker build가 있습니다. 저장소는 React 프론트엔드용 src/, Go 백엔드용 backend/(OpenEverest API 클라이언트용 internal/everest 및 Kubernetes Job 및 Secret 오케스트레이션용 internal/coordinator 포함), 러너 이미지용 runners/pgbench/, Helm 차트 및 Plugin 리소스용 charts/plugin-bench/, Tilt 및 k3d 구성용 dev/, MVP 요구 사항용 spec.md로 구성되어 있습니다.
현재 제한 사항: MVP는 OpenEverest가 관리하는 PostgreSQL 인스턴스를 대상으로 하며, 벤치마크 출력은 러너에서 수집되지만 아직 외부 데이터베이스에 저장되지 않습니다. 실행 기록, 더 풍부한 결과 파싱, 추가 데이터베이스 기술 지원은 이후 반복에서 계획되어 있습니다. 이 프로젝트는 Apache License 2.0에 따라 라이선스가 부여됩니다.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.