머신러닝 실험과 배포 과정에서는 메타데이터, 레코드, 아티팩트가 여러 도구에 흩어지기 쉽고, 재현 가능한 observability 흐름을 유지하기 어렵습니다.
Contexta: 로컬 퍼스트 ML Observability 프로젝트
로컬 환경에서도 ML 실행 이력과 산출물을 일관된 contract로 추적, 비교, 복구할 수 있게 만든 observability 라이브러리 프로젝트입니다.
AI 실행 기록과 산출물을 추적, 비교, 복구할 수 있는 운영형 observability 설계 역량을 보여줍니다.
`.contexta/` workspace를 기준으로 메타데이터, 레코드, 아티팩트를 분리 저장했습니다.
ML 시스템의 실행 이력과 산출물을 로컬에서 일관되게 관리하고 조사할 수 있는 observability 기반을 구현했습니다.
Python facade, CLI, workspace storage, report/recovery 흐름이 같은 contract를 공유하는 로컬 퍼스트 ML observability 구조입니다.
사용자가 실험 코드에서 호출하는 facade
조회, 비교, 복구 명령 표면
metadata, records, artifacts의 스키마 기준
로컬 실행 기록과 산출물 저장소
비교 리포트, replay, backup, restore
배경
Contexta는 머신러닝 시스템을 위한 로컬 퍼스트 observability 라이브러리 프로젝트입니다. 저는 이 프로젝트에서 클라우드 의존 없이도 실험과 실행 데이터를 일관된 구조로 다룰 수 있도록, Python 라이브러리와 CLI, workspace 구조를 중심으로 제품 형태의 기반을 만드는 데 집중했습니다.
문제
머신러닝 프로젝트를 진행하다 보면 메트릭, 실행 로그, 아티팩트, 환경 정보가 여러 파일과 도구에 분산되기 쉽습니다. 이런 구조에서는 실행 이력을 다시 추적하거나 결과를 비교하고, 장애 이후 상태를 복구하는 과정이 번거로워집니다. 특히 로컬 환경이나 에이전트 기반 개발 흐름에서는 외부 백엔드 없이도 일관된 contract와 저장 구조를 갖춘 observability 계층이 필요했습니다.
구현
저는 Contexta를 단일 진입점과 일관된 데이터 계약을 가진 ML observability 라이브러리로 설계했습니다. Contexta facade, contexta.config, contexta.contract, contexta.capture 같은 표면을 정리하고, 메타데이터 저장소, 레코드 저장소, 아티팩트 저장소를 분리된 truth plane으로 구성해 기록과 조회 흐름을 명확히 했습니다. 또한 로컬 .contexta/ workspace를 기준으로 실행 데이터 저장, 스냅샷 조회, 비교 리포트 생성, replay·backup·restore 같은 recovery 워크플로를 연결해 실험 추적부터 운영 대응까지 이어지는 구조를 구현했습니다.
결과
프로젝트는 ML 실행 데이터를 로컬에서 안정적으로 수집, 저장, 비교, 복구할 수 있는 observability 기반을 갖추게 되었습니다. 개인적으로는 단순 실험 코드 수준을 넘어, Python 패키징, CLI, 문서화, 예제, 저장 구조 설계까지 포함한 제품형 ML 도구를 구축하면서 MLOps와 observability 관점의 설계 경험을 깊게 쌓을 수 있었습니다.