에이전틱 폴리레포 개발을 위한 누락된 워크스페이스 레이어

발행: (2026년 2월 24일 오전 02:24 GMT+9)
10 분 소요
원문: Dev.to

Source: Dev.to

번역을 진행하려면 번역하고자 하는 전체 텍스트를 제공해 주세요. 텍스트를 주시면 요청하신 대로 한국어로 번역해 드리겠습니다.

문제 개요

코딩 에이전트는 하나의 저장소에서 사양을 기능으로, 그리고 작업 중인 PR까지 단일 흐름으로 처리할 수 있습니다—이 부분은 기본적으로 해결되었습니다.
하지만 엔드‑투‑엔드로 기능을 구현한다는 것은 보통 여러 저장소에 걸쳐 작업한다는 의미입니다. 다음과 같은 작업이 필요합니다:

  1. 전체 저장소에 걸친 아키텍처 이해 – 코딩 표준, 서비스 간 관계, 연결 방식 등을 파악합니다.
  2. 브랜치 조정 – 변경 사항에 포함된 모든 저장소에서 동일한 기능 브랜치를 유지합니다.
  3. 크로스‑저장소 검증 – 테스트를 실행하고 상태를 확인하며, 단일 체크아웃에 국한되지 않고 전체 스택을 검증합니다.

단일 저장소에서는 에이전트가 이러한 작업을 자연스럽게 처리합니다. 하지만 여러 저장소에 걸쳐서는 각 저장소마다 컨텍스트를 수동으로 설정하고, 브랜치를 하나씩 만들고, 터미널을 전환하면서 검증해야 하는 불편함이 발생합니다.

워크스페이스 레이어

Mars는 모든 레포가 하나의 트리 아래에 존재하는 워크스페이스를 생성합니다:

workspace/
├── .claude/          # or .cursor/, .aider.conf — any agent config
├── CLAUDE.md         # shared context: architecture, standards, patterns
├── mars.yaml         # workspace definition
└── repos/
    ├── backend-api/
    ├── frontend-app/
    ├── shared-lib/
    └── infra/
  • 워크스페이스 루트에 있는 에이전트 구성은 모든 레포에 상속됩니다.
  • 에이전트를 한 번 설정하면—아키텍처 개요, 코딩 표준, 서비스 관계—각 레포가 자동으로 해당 컨텍스트를 받습니다. 레포별 중복이 없습니다.

Mars는 그 위에 구조 교차 레포 작업을 제공합니다.

Mars와 코딩 에이전트와 함께하는 하루

아침 동기화

mars sync              # pull latest across all repos
mars status            # one table: every repo's branch, dirty state, ahead/behind

기능 시작

mars branch feature-auth --tag backend    # coordinated branch across backend repos

에이전트는 워크스페이스‑레벨 설정에서 전체 아키텍처 컨텍스트를 이미 가지고 있으므로, 서비스 간 관계, 코딩 표준, 그리고 따라야 할 패턴을 모든 레포지토리에서 파악합니다.

검증

mars exec "npm test" --tag frontend   # targeted tests on frontend repos
mars status                           # which repos changed? any drift?

리뷰 및 병합

표준 git/GitHub 도구를 사용하세요. Mars가 워크스페이스를 조정하고, 나머지 워크플로우는 그대로 유지됩니다.

Source:

워크스페이스 자체가 Git 저장소가 될 수 있습니다

git clone git@github.com:org/platform-workspace.git
cd platform-workspace
mars clone    # mars.yaml에 정의된 모든 저장소를 복제합니다
# 완료 — 공유 에이전트 설정과 모든 저장소가 포함된 전체 워크스페이스가 준비됩니다
  • mars.yaml 에이전트 설정을 버전 관리합니다.
  • 모든 개발자(또는 CI 작업)는 해당 저장소를 하나만 복제하고 mars clone을 실행하면 두 명령만으로 완전하게 부트스트랩된 워크스페이스를 얻을 수 있습니다.
  • 팀 온보딩: 몇 분 안에 생산성을 확보하고, 몇 시간은 걸리지 않습니다.
  • CI 환경: 교차 저장소 검증을 설정하기 위해 동일한 두 명령만 사용합니다.
  • 표준화: 어떤 저장소가 함께 묶여야 하는지, 에이전트가 어떻게 동작해야 하는지에 대한 단일 진실 소스를 제공합니다.

이렇게 하면 Git 히스토리, CI 파이프라인, 릴리스 주기와 결합하지 않으면서도 모노레포와 같은 공유 컨텍스트와 재현성을 얻을 수 있습니다.

태그 기반 필터링

mars.yaml의 모든 레포는 태그를 가집니다—프로젝트에 맞게 자유롭게 지정하세요:

repos:
  - url: git@github.com:org/frontend.git
    tags: [frontend, web]
  - url: git@github.com:org/backend-api.git
    tags: [backend, api, payments]
  - url: git@github.com:org/shared-lib.git
    tags: [shared, backend, frontend]

모든 명령은 --tag 옵션을 지원하여 특정 서브셋을 대상으로 할 수 있습니다:

mars branch feature-x --tag backend          # backend 레포만 브랜치
mars exec "npm test" --tag frontend          # frontend 레포만 테스트
mars status --tag payments                    # payments 관련 레포 상태 확인
mars sync --tag shared                        # shared 레포만 최신 상태로 동기화

레포당 여러 태그를 지정하면 교차 작업이 가능해집니다. [backend, payments]와 같이 태그된 레포는 --tag backend--tag payments 쿼리 모두에 나타납니다. 기능, 팀, 배포 그룹 등 팀이 코드베이스를 생각하는 방식에 맞게 태그를 지정하세요.

다른 멀티‑레포 도구와의 비교

ToolLanguageConfigApproach
git submodulesgit‑native.gitmodules레포를 git 수준에서 연결하고, 특정 커밋을 추적합니다
gitaPythonCLI‑based레포를 그룹화하고 관리하며, Python이 필요합니다
myreposPerl.mrconfig구성 파일 기반이며, 강력하지만 복잡합니다
metaNodemeta.jsonJSON 구성, 플러그인 시스템
MarsBashmars.yaml태그 기반 필터링, 의존성 제로, 워크스페이스를 에이전트‑구성으로 설계

Mars는 확장성과 플러그인 시스템을 무의존성과 단순성으로 교환합니다. 주요 차별점은 설계 의도이며, 워크스페이스 구조가 에이전트‑구성 공유를 자연스럽게 발생시키는 특성을 갖습니다. 다른 도구들은 레포를 관리하지만, Mars는 에이전트가 거주할 수 있는 워크스페이스를 생성합니다.

설치

npm install -g @dean0x/mars
# or:
brew install dean0x/tap/mars
# or:
curl -fsSL https://raw.githubusercontent.com/dean0x/mars/main/install.sh | bash

빠른 시작

# Create a workspace
mars init

# Add repositories (tags are optional but recommended)
mars add https://github.com/org/frontend.git --tags frontend
mars add https://github.com/org/backend.git  --tags backend

# Clone everything and see the status
mars clone
mars status

Full docs on GitHub:
Website:

언제 화성을 향해 나아가야 할까

  • Multiple repos를 함께 작업해야 할 때.
  • Coding agents는 워크플로우의 일부입니다.
  • 스택 전체에 걸쳐 shared contextcoordinated operations가 필요합니다.

Mars를 사용하면 안 되는 경우

  • 여러분의 코드베이스가 이미 단일 모노레포인 경우 (Mars가 해결하려는 문제가 존재하지 않음).
  • Mars가 단순성을 위해 의도적으로 피하는 무거운 커스텀 플러그인 생태계가 필요한 경우.
  • git‑history coupling이나 릴리즈 사이클 제약이 엄격하여 모노레포가 이미 충족하는 경우.

프로젝트 개요

  • 리포지토리 구조

    • 긴밀히 결합된 리포 – Git 서브모듈을 사용하세요.
    • 단일 리포 – 일반 Git을 사용하세요.
  • 플랫폼 지원

    • Windows 호환성이 필요합니다.
  • 라이선스

    • 오픈 소스, MIT 라이선스.
  • 커뮤니티 피드백

    • 피드백을 환영합니다—특히 다중 리포에서 코딩 에이전트를 다루는 분들의 의견을 듣고 싶습니다.
    • 여러분의 작업 공간은 어떻게 구성되어 있나요?
0 조회
Back to Blog

관련 글

더 보기 »

따뜻한 소개

소개 여러분, 안녕하세요! 여기서 진행되는 deep tech 토론에 매료되었습니다. 커뮤니티가 번창하는 모습을 보는 것은 정말 놀랍습니다. 프로젝트 개요 저는 열정적입니다...