릴리스 노트
GenD 제품 버전별 변경 사항입니다.
:::info 버전 정책 (v1.0.0 부터, ADR-0036)
- 제품 버전은 SemVer (
X.Y.Z) 단일 버전으로 관리합니다. 저장소 루트VERSION파일이 단일 소스이며, API / UI / CLI / Relay 컴포넌트 버전은 여기서 기계 동기화됩니다 (scripts/sync_version.py, CI 게이트). - 릴리스는 main 브랜치의 annotated git tag
vX.Y.Z로 확정됩니다. - 실행 중인 설치본의 버전은 UI 하단 StatusBar 또는
GET /version으로 확인할 수 있습니다. 가이드 문서에 "vX.Y+" 표기가 있으면 해당 버전 이상 설치본에만 적용되는 기능입니다. - 버전별 지원 범위(보안 백포트·EOL)와 업그레이드 규칙은 지원 정책을 참조하세요.
:::
v1.2.0 (2026-08-07)
학습 데이터셋과 실험 추적이 사내 클러스터 밖으로 확장된 릴리스입니다. HuggingFace
스타일 데이터셋을 CLI·Python 으로 올리고 내려받을 수 있고, wandb 스타일 실험 추적을
외부 GPU 학습 서버에서 표준 mlflow SDK 그대로 쓸 수 있습니다. 함께 감사 로그 적재
중단·품질 스캔 무실행 등 조용히 멈춰 있던 운영 경로를 복구했습니다.
학습 데이터셋 — 외부 도구 호환·대용량·비디오 (#2989, #3009, #3010, #3011)
- CLI·Python 으로 올리고 내려받기:
gend dataset list / create / upload / download. 업로드는 배치 자동 분할(기본 45MB, 413 시 절반씩 재시도)과 중복 건수 가시화를, 다운로드는 버전 고정 export 재사용(--fresh로 강제 재생성)과--with-blobs(원본 동봉)를 지원합니다. 다중 파트 export 는X-Export-Part-Count헤더로 순차 수신합니다. → 학습 데이터셋 — CLI·Python 으로 올리고 내려받기 - HF
imagefolder호환 적재: zip 폴더 구조에서 split·label 을 자동 추론하고 (train/cat/1.jpg→ split=train·label=cat,valid→validation정규화), zip 내metadata.jsonl(file_name키)로 label·caption·임의 메타를 지정합니다. 우선순위는metadata.jsonl> 폴더 구조 > 요청 파라미터(?split=·?label=) > 기본값. - HF TRL 4형식 무변환 수용:
text/messages/prompt+completion(또는response) /chosen+rejected를 키 변환 없이 그대로 받습니다. - 비디오 modality: MP4/WebM 업로드(컨테이너 시그니처 검증으로 위장 파일 거부, content_hash 중복 제거) + HTTP Range 부분 응답 기반 인라인 플레이어. 목록 스크롤 중에는 원본을 내려받지 않고 클릭한 클립만 로드합니다.
- 청크 업로드: API 릴레이 + 서버측 S3 멀티파트 조립으로 대용량 파일 업로드를 지원합니다 (ADR-0042).
- 갤러리 보기: 이미지·비디오 데이터셋의 데이터 탭이 갤러리로 열리고, 토글로 테이블 보기와 전환합니다(행 선택·삭제는 테이블 보기 전용). 텍스트 데이터셋은 기존대로 테이블만 표시합니다.
- 워크스페이스 스토리지 쿼터: 적재 원장 기반 사용량 계상 + soft/hard 한도 시행
(hard 초과 업로드는 HTTP 413 거부). 사용자에게는 사용량 게이지와 증설 신청 흐름을,
관리자에게는 전 워크스페이스 매트릭스 화면(
/admin/dataset-quotas)을 제공합니다. 기본값은 무제한(GEND_DATASET_DEFAULT_QUOTA_BYTES=0) 이라 기존 워크스페이스는 영향받지 않습니다. → 학습 데이터셋 스토리지 쿼터
실험 추적 — wandb 스타일 + 외부 학습 서버 (#2889, #3015, #2968)
- 런 비교 차트·라이브 갱신·시스템 메트릭: MLflow 를 스토어로 쓰는 wandb 스타일 추적 UI.
별도 SDK 없이 표준
mlflowSDK 로 기록하면 그대로 표시됩니다 (ADR-0037). - ML 허브 1급 스테이지 승격: 실험이 개발 스테이지의 탭에서 ML 허브 → 실험
(
/ml-hub/experiments) 독립 스테이지로 올라왔습니다. 구 경로/models/experiments와/ml-hub/develop?tab=experiments는 자동 리다이렉트됩니다. - 외부 학습 서버 지원: 사내 클러스터 밖 GPU 서버에서도 표준
mlflowSDK 로 로깅합니다. tracking 프록시(allowlist·JWT·워크스페이스 태깅) → artifact 스트리밍 서빙 → 토큰 자동 갱신 플러그인까지 3단계로 완성했습니다 (ADR-0038, 운영 문서). - 개인 트래킹 키 셀프서비스: ML 허브 → 실험 → 외부 학습 서버 연결 에서 관리자 개입 없이 개인 자격증명(per-user Keycloak client)을 직접 발급·회전합니다. 설정 스니펫을 값이 채워진 채로 복사할 수 있습니다. secret 은 발급 시 한 번만 표시됩니다 (ADR-0043). 팀 공용 서버·CI 는 기존 M2M 서비스 클라이언트 트랙을 씁니다.
- 시스템 메트릭 기본 수집 (#3053): wandb 처럼 CPU·메모리·GPU 등 시스템 메트릭을 별도 설정 없이 기록합니다. 학습 코드에 추가할 것은 없습니다.
- 비교·차트 UX 수정: 빈 run 이 아무 신호도 주지 않던 문제, 단일 run 곡선 표시, run 이름 표기, 다크모드 대비를 정리했고, 곡선 기본 선택이 시계열을 가진 메트릭을 우선하도록 바꿨습니다(시계열 판정 기준을 포인트 수가 아닌 distinct step 으로 교정).
- metrics-history 정렬·null 방어·404 UX·청크 부분 실패·카운트 드리프트 등 후속 정리.
감사 로그 신뢰성 (#2974, #3027, #3038, #3050, #3060)
- 감사 로그 적재 26시간 중단 복구: ISM rollover 전제 오류와 샤드 상한 도달이 겹쳐 자정에 새 인덱스 생성이 거부되던 결함을 해소했습니다. 이어서 수습 과정에 들어간 ISM 정책이 새 인덱스를 곧바로 읽기전용으로 전환해 적재를 다시 막던 문제를 hot 단계 복원으로 해소했습니다.
- 적재 중단 탐지 체계 신설: 하트비트 CronJob 으로 탐지 지연을 24시간 → 1시간으로 줄이고, 전용 exporter + 알람 4종을 추가했습니다(사고 당시 탐지 0건이던 구간을 메움).
- 탐지기 자체의 침묵 구멍 차단: 위 알람은 메트릭이 존재할 때 값을 보는 형태라
exporter 가 죽어 메트릭이 사라지면 함께 침묵했습니다.
absent()기반 탐지를 더해 "관측이 끊긴 상태"도 알람이 되도록 했습니다. - 접근 게이트 판정을 구조화 감사 레코드로: 워크스페이스 네임스페이스 게이트가 차단을
모듈 로거의 평문으로만 남겨, 로그 수집 필터를 통과하지 못했습니다. 그 결과 알람이
"감사 로그에서 어느 워크스페이스인지 확인하라"고 안내하는데 정작 그 레코드가 한 건도
적재되지 않았습니다(prod 실측 0건). 읽기·쓰기 게이트 모두
event키를 가진 JSON 레코드로 남기도록 고쳐, 알람에서 주체·카탈로그·스키마·사유를 되짚을 수 있습니다. → 쿼리 권한 시행 - 감사 체인 검증 정확도: 불연속 발생 시 재정착 처리, 알람에 carryover 맥락 추가, 검증 대상 일자를 UTC 기준으로 교정 — 한 지점의 불일치가 이후 전체로 전파돼 알람이 부풀던 문제를 해소했습니다.
알람·모니터링 노이즈 (#2850, #2896, #3029)
- 알람 60건/일 → 6건/일: 그룹 배칭 + 메타 알람(Watchdog·InfoInhibitor) 누수 차단 + 조치 대상이 아닌 알람의 라우팅 제외. Slack 템플릿을 정리하고 해소 알림은 껐습니다.
- 중복 발송 3종 차단: ① 집계에서 파드 라벨을 떨어뜨려 같은 문제가 파드 수만큼 쪼개지던
것, ②
backoffLimit재시도가 같은 알림을 한 번 더 보내던 것, ③ 같은 내용이 Slack 과 KubeJobFailed 로 이중 보고되던 것. 무결성 결함은 보고할 결과이지 잡의 실패가 아니므로, 보고에 실패했을 때만 잡을 실패시켜 폴백 신호로 씁니다. - 수신 채널 분리: 운영 알람을 베타 피드백 채널에서 분리했습니다.
- 유지보수 잡 신선도 알람: 실패뿐 아니라 정지(장기 미실행) 도 탐지하고, 조회 실패를 정상으로 오독하지 않도록 sentinel 을 도입했습니다.
- Alertmanager 시크릿이 무효 키(
alertmanager.secrets)로 마운트되지 않던 결함 수정. → 모니터링 가이드에 알람 수신(Slack) 설정 절 추가.
데이터 파이프라인 정상화 (#2911, #2909)
- 품질 스캔 30일간 성공 0건 복구:
quality_scan이 API 상한(200)을 넘는limit=500으로 호출해 422 로 첫 줄에서 죽고 있었습니다. 동일 결함이 남아 있던 5곳(preprocessing 계열)을 전수 정리하고 범용 회귀 가드를 추가했습니다. - 스키마 드리프트 베이스라인 복구: 스냅샷을 채우는
schema_sync를 주기 실행하는 배선이 아예 없어 6.5주간 정지 상태였습니다(감지 이력 0건). 일 1회 동기화를 배선했습니다. - compaction 센서의 run_key 에 시간 버킷을 넣어, 동일 조합이 영구히 1회만 실행되던 제약을 해소했습니다.
보안·접근 제어
- Trino 엔진 ACL 회귀 2건 해소 (#2891, #2905): 서비스 계정의 객체 생성 권한 누락으로
신규 객체 생성이 전면 거부되던 문제와,
security.refresh-period누락으로 acl-sync 자동화가 엔진에 반영된 적이 없던 문제를 고쳤습니다. acl-sync CronJob 의 NetworkPolicy 배선을 완성하고, 역할 기반 기본 grant 를 생성기로 이관해 ACL 롤백 원인을 제거했으며, 운영 런북을 추가했습니다. 파일 ACL 활성화 상태를 반영해 Trino JWT·코드스페이스 보안 문서도 정정했습니다. - 매니페스트 Secret 격리 (#2991): 여러 컴포넌트의 Secret 이 한 파일에 혼재해 배포 시 운영 자격증명을 덮어쓸 수 있던 구조를 분리하고, create-if-missing 처리와 CI 가드를 추가했습니다 (ADR-0040).
- 공급망·CVE 게이트 강화 (#2917~#2923): 배포 시 CVE 게이트, 출하 SBOM·digest 증빙,
워크플로 권한 최소화, 억제 만료 강제, 드리프트 재스캔 확대,
workflow_dispatch입력 injection 차단, 도구 설치 sha256 검증. - 의존성 취약점 정리 (#2880, #2894, #2902): Python
cryptographyHIGH 2건(상한이 수정 버전을 배제하던 문제 포함), JS 의존성 HIGH 다수, 런타임 이미지에서 pip 제거로 Trivy HIGH 2건을 억제가 아닌 실제 해소. Python 의존성에uv.lock9개를 도입해 재현 가능한 빌드를 확보하고, Kyuubi·docs-site 의존성을 최신으로 올렸습니다.
스키마·마이그레이션 정합 (#2869, #2927)
- prod 스키마 드리프트 133 → 0: 정합 리비전 적용(133→17) → 모델 오류·ontology 유니크 인덱스 교정(17→13) → 인덱스 소유권을 모델로 단일화(13→0). 인덱스를 alembic 과 init_db 가 이중 소유해 autogenerate 가 영구히 "삭제 대상"을 보고하던 구조를 정리했습니다.
workspace_idNOT NULL 정렬 완료: 모델 32개 정렬 + 죽은 분기 28개 제거.- alembic 이 온프렘·prod 환경에서 실제로 동작하도록 TLS CA 처리·JSON 비교 크래시·잔재 테이블 필터를 수정하고, alembic 1.19.0 이 드러낸 CHECK 제약 이름 드리프트 4건을 해소했습니다.
안정성·성능
- 프로브 분리 (#2791): k8s 프로브 3종이 모두 Trino·PG 를 왕복하는
/health를 쳐서, API 가 Trino 없이도 서빙 가능한 바로 그 상황(Trino 지연)에서만 파드가 죽는 역전이 있었습니다./health/live로 분리해 Trino 무관 트래픽(카탈로그 캐시·저장 쿼리·관리·인증)이 함께 죽는 경로를 차단했습니다. - CPU request 전면 재산정 (#2961): 7일 실측 기반 재산정으로 사이드카에서만 1.3코어를 회수해, 노드 증설 없이 요청 포화를 해소했습니다.
- PostgreSQL NetworkPolicy allowlist 미등재로 alembic Job 이 실패하고 db-backup 에 잠복 결함이 있던 문제 수정 (#2967).
- 온프렘 동거 환경을 위한 CephFS 활성화 + llmops LimitRange·ResourceQuota (#2883).
:placeholder매니페스트가 실수로 apply 되는 것을 막는 가드 추가.
개발·릴리스 체계
- CI 테스트 잡(API·UI)을 8-core 러너로 전환해 병합 임계 경로를 크게 단축했습니다.
- 리뷰 게이트가 "리뷰 자체가 없는 상태"를 탐지하도록 보강하고, 배포 경합과
:latest승격 경합을 차단했습니다. /release슬래시 커맨드로 릴리스 절차를 고정했습니다.- 버전 동기화 대상에
uv.lock을 포함했습니다.uv.lock은 자기 패키지 버전을 복사해 두는데 이 목록에 없어, 버전을 올리면uv sync --locked가 "lockfile out of date" 로 실패했습니다 (락 도입이 v1.1.0 릴리스 뒤라 이번 bump 에서 처음 드러남).
참고
- DB 마이그레이션이 필요합니다. v1.1.0 → v1.2.0 에 신규 alembic 리비전 9개가 포함됩니다.
표준 업그레이드 절차(마이그레이션 → 이미지 교체 →
/version확인)를 따르세요. - AKS prod 의 alembic 이력이 정합화되어, v1.1.0 에서 "기존 AKS prod 는 비적용" 으로 안내했던 alembic upgrade Job 을 이제 정상 경로로 사용할 수 있습니다.
- 알려진 제약 — 키 방식 토큰(개인 트래킹 키·M2M 서비스 클라이언트)에는 데이터셋 워크스페이스 격리가 아직 적용되지 않습니다 (#3040). 키는 신뢰된 사용자에게만 발급하고, 발급 내역을 주기적으로 점검하세요.
- 알려진 제약 — 데이터셋 스토리지 쿼터는 export 산출물을 사용량에 계상하지 않으며, v1.2 이전에 적재된 기존 데이터는 0 으로 계상됩니다.
- 중복 판정이 content_hash 기준이라, 같은 이미지를 다른 라벨로 다시 올려도 라벨은 바뀌지 않습니다 — 라벨을 고치려면 해당 행을 삭제 후 재업로드하세요.
v1.1.0 (2026-08-04)
릴리스 파이프라인이 처음으로 실주행된 릴리스입니다 — 이 버전부터 정확 태그
이미지 4종(gend-api/gend-ui/gend-pipelines/gend-relay, 태그 v1.1.0)과
GitHub Release 가 자동 발행됩니다.
릴리스·업그레이드 체계 (#2864, #2868)
- tag-trigger 릴리스 파이프라인:
vX.Y.Ztag push → 태그↔VERSION 검증 → 릴리스 노트 섹션 추출(없으면 릴리스 실패) → 정확 태그 이미지 4종 push → GitHub Release 자동 생성. 리허설용 dry-run 지원. - 온프렘 DB 마이그레이션 표준 경로: alembic upgrade Job
(
infra/onprem/alembic-upgrade-job.yaml) + 업그레이드 절차 규격화. alembic 이 파드 표준 환경변수(GEND_DATABASE_URL)에서 동작하도록 수정 (기존엔 파드 내 alembic CLI 가 항상 실패). ⚠ 기존 AKS prod 는 비적용 (런북 경고 참조). - 에어갭 반입 번들: 에어갭 반입 —
make_airgap_bundle.sh(공급자측) + 번들 동봉load-airgap-images.sh(고객측, 무결성 검증→적재→push). 오프라인 사이트 설치·업그레이드 표준화. - 지원 정책 제정: 지원 정책 — 보안 백포트 N-2 minor·minor 순차 업그레이드·EOL 기준.
- 부트스트랩 스크립트 이미지 태그를 VERSION 파생으로 통일, 3rd-party 미러 목록 단일 소스화 (커스텀 keycloak 빌드를 업스트림 미러가 덮어쓰던 결함 제거).
워크스페이스 격리 강화 (#2798 PR-14·18 시리즈)
- NULL workspace_id 청산: 단계 시맨틱 전환 + 백필 + NOT NULL 제약 +
Workspace.status시행. 의도적 전역 데이터(LLM 전역·L3 공용 팩·PS 파티션 10개 테이블)는 시맨틱 재분류로 명시. - 워크스페이스 프로비저닝: 생성 시 물리 스키마 CREATE + owner 쓰기 바인딩
- 파생 가시성 자동 구성 — 전 워크스페이스가 자기 네임스페이스와 쓰기 권한을 보유한 상태로 시작합니다.
참고
- 업그레이드: v1.0.x → v1.1.0 은 표준 절차를
따르세요 (DB 마이그레이션 Job → 이미지 교체 →
/version확인).
v1.0.0 (2026-08-04)
첫 정식 버전. 기존 기능 스냅샷 위에 제품 버전 체계를 도입했습니다 (#2860).
신규
- 제품 버전 단일화: 루트
VERSION파일 → 전 컴포넌트(API/UI/CLI/Relay) 버전 자동 동기화. CI 가 드리프트를 차단합니다. GET /version엔드포인트: 제품 버전 + 빌드 sha/일시. 인증 불필요, DB 무접근 — 설치 버전 확인·지원 문의의 1차 판별 수단.- UI 버전 표시: 로그인 후 StatusBar 의 버전이 릴리스 노트(본 페이지) 링크로 연결됩니다.
- 이미지 태그 규칙: main 상시 배포 이미지는
<VERSION>-dev.<날짜>-<sha>, 릴리스는vX.Y.Z태그 기준 (Phase 1 에서 tag-trigger 빌드 추가 예정).
참고
- v1.0.0 시점의 전체 기능 목록은 아래 v0.2.0 및 2026-05-25 항목 누적분과 기능 문서를 참조하세요.
2026-05-25 — 미니 릴리스 (catalog / collection / db drift fix 묶음)
신규 기능
- 카탈로그 — 스키마 생성 (#836): 사이드바 헤더의
+액션으로iceberg.temp_1같은 신규 namespace 를 만들 수 있습니다. CSV → Table 적재 흐름이 더 이상 사전 스키마 생성을 위해 admin 콘솔에 의존하지 않습니다. ABAC: admin 또는 catalog INSERT/ALL grant 보유자. - 카탈로그 — 컬럼 코멘트 노출 (#849 Phase 1):
GET .../{table}/columns응답에comment필드 추가. PGcolumn_metadata테이블이 source-of-truth, Trino column listing 에 join 됩니다. Phase 2-4 (LLM 정규화 + UI + Text2SQL agent enrichment) 는 ADR-009 에서 추적.
개선
- Web Crawl —
allowed_domains실제 적용 (#841):/source-types카탈로그가 노출하는 필드를 collector 가 실제로 읽도록 fix. CSV (a.com, b.com) / 리스트 / URL-prefix 모두 지원. 비어있으면start_urlnetloc 만 허용 (1.x 호환). - Collections i18n 보강 (#857): Tabs, Loading, Delete dialog, toast 등 잔여 영문 하드코드를
t(...)로 전환. - DB 드리프트 정리 (#1015):
data_marts.layerserver_default 인용 부호 수정,retention_policies의action/retention_daysCHECK 제약 +created_at NOT NULL백필. - UI — ResizablePanel
withHandle제거 (#1025): SchemaGraphPage / DocumentPreviewDialog 의 1px 분할자에 떠 있던 12×16 grip 박스 제거. 회귀 가드 vitest 추가. - 인프라 — dagster-webserver replicas=1 영구화 (#894 Option D): AKS prod cluster CPU 포화로 임시 적용된 1-replica 를 manifest 정합화 + CI lint 회귀 가드. Phase 1+ 재상향은 #828 / #897 prerequisite.
Design ADRs (구현 추적)
- ADR-007 AKS Standard tier + Multi-AZ migration (#828)
- ADR-008 Tenant retention override (Workspace + Keycloak group) (#982)
- ADR-009 LLM column name normalisation + description (#849 P2-4)
- ADR-010~012 P1 Epics — Data Map UI / A2A Protocol / NL Catalog Search
- ADR-013~018 P2 Epics — Hybrid RAG / MLOps / GPU Quota / Publish / Agent Builder / SQL AI UDF
- ADR-019~025 stream/auth + P3 phase/4 Epics
Tier B PG TLS Phase 3a 운영 검증 대기
- #908 / #923 / #924 / #927 — manifest PR 모두 머지 완료. AKS prod
pg_stat_ssl검증 후 close 대상.
v0.2.0 (2026-04-05)
Core Platform
- Federation SQL: Trino 기반 cross-catalog JOIN 지원 (
iceberg+sourcedb) - SQL 에디터: Monaco Editor 기반, 쿼리 탭 관리, 가상 스크롤 결과 테이블
- 카탈로그 탐색기: 카탈로그/스키마/테이블/컬럼 트리 뷰
- 쿼리 저장: Saved Query 및 Notebook 관리
AI / Retrieval
- NL2SQL: 자연어를 SQL로 변환하는 AI 채팅 인터페이스
- RAG 검색: 스키마 메타데이터 벡터 검색 기반 컨텍스트 증강
- AI Provider 추상화: 다중 LLM 프로바이더 동적 선택
거버넌스
- PII 탐지/마스킹: Presidio 연동, 텍스트/이미지/오디오 마스킹
- ABAC 정책: 속성 기반 접근 제어 엔진
- 승인 워크플로우: pending/approved/rejected 상태 머신
- 감사 로그: AuditMiddleware 전 요청 JSON 감사 + OpenSearch 저장
- 데이터 품질: completeness, uniqueness, freshness, consistency 4축 점수
- 데이터 계보: Lineage 추적 및 시각화
- 스키마 변경 탐지: Schema Change Detector
- 보존/컴플라이언스: Retention 및 Compliance 엔진
데이터 수집
- Connector 관리: 데이터 소스 연결 CRUD
- 인제스천 파이프라인: 8종 Collector (SMB, SFTP, S3, SharePoint, REST, IMAP, NFS, WebCrawl)
- 문서 처리: 8종 Parser (PDF, DOCX, HWP, XLSX, Image, Audio, Text)
- CDC: Debezium 연동 실시간 변경 캡처
ML / BI
- MLflow 프록시: ML 실험 추적 및 모델 레지스트리
- Superset BI: 대시보드 프록시 연동
- Feature Store: Feature 관리 및 Serving
보안
- Keycloak SSO: JWT 기반 인증
- ContextGateway + SqlGuard: SQL 인젝션 방지 보안 가드레일
- HMAC-SHA256: Relay DMZ 서명 검증
- Vault: 시크릿 관리 및 자동 unseal
인프라
- Kind 클러스터(
gend-local) 기반 전체 스택 운영 - ARM64(Apple Silicon) 호환
- ArgoCD GitOps 배포
- 3-Layer 시드 데이터 (tiny / demo / perf)