Cloudflare, Git 기반의 에이전트(Agent)용 버전 관리 파일 시스템 Artifacts 출시!

by DD
1개월 전
조회수 8

에이전트(Agent) 중심의 개발 환경을 위해 설계된 버전 관리 파일 시스템인 Artifacts 출시

Git을 기반으로 구축되어 익숙한 인터페이스 제공, REST APIWorkers API 지원

Durable Objects를 활용하여 수백만 개의 레포지토리(Repository)를 지원하며, Zig로 작성된 WASM 기반 Git 엔진 탑재

대규모 레포지토리(Repository)의 빠른 클론을 위한 ArtifactFS 제공, 초기 클론 시간 단축

에이전트(Agent)를 위한 Git, 왜 필요한가?

Artifacts는 에이전트(Agent)가 Git을 잘 알고 있다는 점에 착안하여, 익숙한 인터페이스를 제공한다. Git의 데이터 모델은 소스 코드 관리뿐만 아니라, 상태 추적, 시간 여행, 대용량 데이터 저장에도 적합하다. 에이전트는 코드, 설정, 세션 기록 등 작은 단위의 데이터를 커밋(Commit) 단위로 저장하고, 필요시 롤백(Rollback)할 수 있다. 새로운 프로토콜을 개발하는 대신, Git을 활용하여 에이전트가 인증된 HTTPS Git 원격 저장소(Remote Repository) URL을 통해 작업하도록 함으로써, 개발 생산성을 향상시켰다. 또한, REST APISDK를 제공하여 Git을 지원하지 않는 환경에서도 Artifacts를 사용할 수 있도록 지원한다.

Durable Objects 기반 아키텍처(Architecture)의 장점

Artifacts는 Durable Objects를 기반으로 구축되어, 수백만 개 이상의 격리된 상태를 지원한다. Durable Objects는 대규모 Git 레포지토리(Repository)를 효율적으로 관리하기 위한 핵심 요소이다. 내부적으로는 R2를 사용하여 스냅샷(Snapshot)을 저장하고, KV를 통해 인증 토큰(Authentication Token)을 추적한다. Durable Objects의 128MB 메모리 제한 내에서 효율적인 동작을 위해, 스트리밍(Streaming) 방식을 적극 활용한다. 특히, WASM으로 작성된 Git 엔진은 메모리 사용량을 최소화하고, Zig를 사용하여 메모리 할당을 수동으로 제어한다. 이러한 아키텍처는 에이전트(Agent) 기반 환경에서 확장성(Scalability)성능(Performance)을 동시에 확보하는 데 기여한다.

ArtifactFS: 대용량 레포지토리(Repository) 클론 속도 개선

대용량 레포지토리(Repository)의 경우, 초기 클론(Clone) 시간이 길어 에이전트(Agent)의 작업 시작을 지연시킬 수 있다. Artifacts는 이러한 문제를 해결하기 위해 ArtifactFS를 도입했다. ArtifactFS는 파일 내용을 즉시 다운로드하는 대신, 파일 트리와 참조(Ref)를 먼저 가져오는 Blobless Clone 방식을 사용한다. 에이전트(Agent)가 가장 먼저 필요로 하는 파일(패키지 매니페스트, 설정 파일, 코드)을 우선적으로 다운로드하고, 백그라운드에서 나머지 파일을 비동기적으로 다운로드한다. ArtifactFSGit 원격 저장소(Remote Repository)에 파일을 동기화하지 않으므로, 에이전트는 일반적인 Git 명령(Commit, Push)을 사용하여 작업할 수 있다. 이 방식은 대규모 레포지토리(Repository)의 클론 시간을 단축하여 에이전트(Agent)의 생산성을 향상시킨다.

Zig와 WASM을 활용한 Git 엔진 구현

Artifacts는 Zig로 작성된 WASM 기반의 Git 엔진을 사용한다. Zig는 메모리 관리에 대한 세밀한 제어를 제공하며, WASM은 Durable Objects와 같은 제한된 환경에서 효율적인 실행을 가능하게 한다. Zig로 구현된 Git 엔진은 SHA-1, zlib 압축/해제, 델타 인코딩/디코딩, 팩 파일 파싱, Git 스마트 HTTP 프로토콜을 포함한 전체 Git 프로토콜을 자체적으로 구현한다. 이로 인해 외부 종속성 없이 100KB 미만의 WASM 바이너리 크기를 달성했다. WASM 모듈은 11개의 호스트(Host) 임포트 함수와 스트리밍 출력을 위한 함수를 통해 JS 호스트와 통신하며, 테스트 용이성을 확보했다. 이러한 기술적 선택은 Artifacts가 성능(Performance)이식성(Portability)을 동시에 확보하는 데 기여한다.

Artifacts의 향후 계획

Artifacts는 현재 베타(Beta) 단계이며, 지속적인 기능 개선을 계획하고 있다. 주요 계획으로는 네임스페이스(Namespace), 레포지토리(Repository)별 주요 작업 횟수, 저장된 바이트(Byte) 수에 대한 메트릭(Metric) 제공을 통해 모니터링(Monitoring) 기능을 강화할 예정이다. 또한, 푸시(Push), 풀(Pull), 클론(Clone), 포크(Fork) 등의 이벤트(Event)를 구독(Subscription)할 수 있도록 지원하여, 웹훅(Webhook)을 활용한 CI/CD 파이프라인(Pipeline) 구축을 지원할 예정이다. 네이티브(Native) TypeScript, Go, Python 클라이언트 SDK를 제공하여 API 접근성을 높이고, 레포지토리(Repository) 및 네임스페이스(Namespace) 단위의 검색 API를 제공할 예정이다. 이러한 기능들은 Artifacts를 더욱 강력하고 유연한 버전 관리 시스템으로 만들 것이다.

Artifacts: versioned storage that speaks Git