Epic Games, 오픈소스 버전 관리 시스템 Lore 발표

6 days ago 35
  • Epic Games가 유지관리하는 Lore는 코드와 대형 바이너리 자산을 함께 다루는 프로젝트를 겨냥한 차세대 오픈소스 버전 관리 시스템임
  • 로컬에서 빠르게 시작한 뒤 필요에 따라 확장할 수 있고, 공유·재사용 데이터와 필요한 시점의 다운로드로 대규모 저장소와 팀을 지원함
  • 중앙집중형 콘텐츠 주소 기반 저장소를 사용하며, Merkle tree와 불변 revision chain으로 저장소 상태와 변경 이력을 표현함
  • 대형 파일은 재사용 가능한 청크로 저장되고, sparse workspace와 on-demand hydration으로 처음부터 모든 데이터를 내려받지 않아도 됨
  • MIT 라이선스로 공개됐으며 CLI, C/C++, C#, Rust, Go, Python, JavaScript API와 여러 SDK 저장소를 제공함

코드와 대형 자산을 함께 다루는 버전 관리

  • Lore는 Epic Games가 유지관리하는 차세대 오픈소스 버전 관리 시스템임
  • 데이터 규모, 팀 규모, 팀 분산, 저장소 규모에서 높은 확장성을 목표로 설계됨
  • 코드와 대형 바이너리 자산을 함께 사용하는 프로젝트에 최적화됨
    • 게임 및 엔터테인먼트 산업 프로젝트가 예시로 제시됨
    • 개발자와 아티스트의 협업 요구를 함께 다룸
  • 로컬 모드에서 몇 분 안에 시작할 수 있고, 이후 필요에 따라 확장 가능함
  • 팀이 빠르고 직관적이며 실용적인 협업 워크플로를 구축할 수 있는 기반을 제공함

확장성과 대형 파일 처리를 위한 구조

  • 공유 데이터와 API

    • 주요 기능은 확장성과 대형 자산 처리에 맞춰 구성됨
    • 공유·재사용 데이터와 필요한 시점의 다운로드로 속도 저하 없이 확장하는 것을 목표로 함
    • 브랜치를 빠르게 만들고 관리하며 동기화할 수 있음
    • CLI를 통해 Lore 전체 기능에 일대일로 접근 가능함
    • C/C++, C#, Rust, Go, Python, JavaScript용 API로 확장, 커스터마이즈, 통합을 지원함
  • 콘텐츠 주소 기반 저장소

    • 저장소 구조는 중앙집중형 content-addressed 버전 관리 시스템임
    • 저장소 데이터는 콘텐츠 해시로 저장·참조되며 Merkle tree로 표현됨
    • 빠른 비교, 무결성 검사, 이력과 브랜치 간 데이터 재사용을 지원함
    • revision의 해시 서명은 부모 revision 해시와 포함된 데이터 해시를 포함한 revision 상태에서 파생됨
    • 이 구조는 암호학적 무결성을 가진 불변 체인을 형성함
  • 청크 저장과 필요한 시점의 다운로드

    • 대형 파일과 워크스페이스 처리는 청크 저장과 on-demand hydration을 사용함
    • 파일은 재사용 가능한 청크로 저장되고 인덱스 기반 조회를 사용함
    • 중복을 줄이고 대형 바이너리 자산의 업데이트와 전송을 효율화함
    • workspace는 필요한 파일 데이터만 가져와 가볍게 유지될 수 있음
    • sparse workspace를 통해 처음부터 모든 데이터를 다운로드하지 않아도 됨
  • 서버와 브랜치 모델

    • 서버 구조는 캐싱을 포함한 서비스 기반 아키텍처임
    • durable storage 앞단의 캐싱으로 대형 팀과 대형 저장소의 처리량 확장을 지원함
    • 브랜치는 가벼운 mutable reference로 동작해 생성과 전환 비용이 낮고, 기본 데이터 중복이 없음

공개 저장소와 문서

Read Entire Article