2026 원격 Mac CI에서 rsync 압축을 켤지 말지: 사전압축 산출물과 openrsync·Homebrew

좁은 상행과 높은 RTT에서는 압축이 선로가 아니라 CPU를 막고 대화형 SFTP 체감을 나쁘게 합니다. 본문은 엔트로피별 분류와 매니페스트 기반 재현 절차를 정리합니다.

1. 문제 정리(이중 압축·암호화·바이너리 차이)

원격 Mac CI에서 rsync 압축은 평균 Mbps가 아니라 CPU p95와 디스크 await를 먼저 악화시키는 경우가 많습니다.

tar.gz·ipa 등은 이미 압축되어 있어 zlib을 겹치면 이중 압축이 되고 대화형 SFTP 체감이 나빠집니다.

openrsync와 Homebrew rsync 3.x는 기본값이 달라 runner와 맥 노드에서 dry-run 결과가 어긋날 수 있습니다.

manifest의 transport_hint로 텍스트 로그와 제품 번들을 분리하면 팀 간 재현성이 올라갑니다.

세 번의 dry-run과 200MB 슬라이스로 전후를 비교하고, VPN CPU도 함께 기록합니다.

partial-dir 규약을 먼저 고정한 뒤 압축 AB 테스트를 하면 롤백이 쉬워집니다.

SHA256 게이트는 symlink 승격 전에 두어 압축 논쟁과 무결성 검증을 분리합니다.

files-from·sparse-checkout 가이드와 연계해 walk 비용을 줄인 뒤 압축 효과를 측정합니다.

bwlimit 글과 역할을 나누어 CPU 병목이 어디에서 오는지 분류합니다.

카나리아 잡은 프로덕션 키와 동일한 RSYNC_RSH를 쓰되 부피는 작게 유지합니다.

변경 관리 창구에 압축 기본값 변경을 포함하고 대시보드에 공표합니다.

자체 노드에서 드리프트가 재발하면 호스트형 기본 템플릿을 검토하는 것이 비용 대비 낫습니다.

보충: 대형 구조화 로그는 디렉터리 전체 zlib보다 선행 gzip이 제어하기 쉬울 때가 있습니다.

보충: 미디어 밀집 경로는 디렉터리별 플래그로 나누어 리뷰 비용을 줄입니다.

보충: 벤치마크는 반드시 최종 목적지 경로에서 수행하고 노트북 로컬만 믿지 않습니다.

보충: zlib 결정을 JSON Lines로 남기면 컴플라이언스 추적이 쉬워집니다.

보충: AB 테스트는 카나리아와 묶어 빅뱅 전환을 피합니다.

보충: Spot 스로틀링이 zlib 효과를 가리므로 함께 기록합니다.

보충: rsync 인자는 Terraform/Ansible에 두어 드리프트를 잡습니다.

보충: SBOM형 산출물 목록과 압축 정책을 연결하면 감사가 수월합니다.

보충: 한 Mac에 여러 컨테이너를 밀 때는 CPU 예산을 네임스페이스별로 나눕니다.

보충: zlib을 임시로 되돌릴 담당·기한을 문서화하고 관측을 유지합니다.

추가 블록 1: 공유 원격 Mac에서는 CPU·AES·zlib 순으로 여유가 줄고 대화형 SFTP 지연으로 나타납니다. 스테이징에서 dry-run 3회, 200MB 슬라이스로 p95·await 기록, openrsync와 Homebrew 차이 로그화, transport_hint로 텍스트와 번들 분리, 승격 전 SHA256 게이트, bwlimit 글과 역할 분담, 변경 관리에 명시, 관측 유지로 운영에 고정합니다.

추가 블록 2: 공유 원격 Mac에서는 CPU·AES·zlib 순으로 여유가 줄고 대화형 SFTP 지연으로 나타납니다. 스테이징에서 dry-run 3회, 200MB 슬라이스로 p95·await 기록, openrsync와 Homebrew 차이 로그화, transport_hint로 텍스트와 번들 분리, 승격 전 SHA256 게이트, bwlimit 글과 역할 분담, 변경 관리에 명시, 관측 유지로 운영에 고정합니다.

추가 블록 3: 공유 원격 Mac에서는 CPU·AES·zlib 순으로 여유가 줄고 대화형 SFTP 지연으로 나타납니다. 스테이징에서 dry-run 3회, 200MB 슬라이스로 p95·await 기록, openrsync와 Homebrew 차이 로그화, transport_hint로 텍스트와 번들 분리, 승격 전 SHA256 게이트, bwlimit 글과 역할 분담, 변경 관리에 명시, 관측 유지로 운영에 고정합니다.

추가 블록 4: 공유 원격 Mac에서는 CPU·AES·zlib 순으로 여유가 줄고 대화형 SFTP 지연으로 나타납니다. 스테이징에서 dry-run 3회, 200MB 슬라이스로 p95·await 기록, openrsync와 Homebrew 차이 로그화, transport_hint로 텍스트와 번들 분리, 승격 전 SHA256 게이트, bwlimit 글과 역할 분담, 변경 관리에 명시, 관측 유지로 운영에 고정합니다.

2. 의사결정 매트릭스

유형압축대안
텍스트시험CPU p95
tar.gz/ipa체크섬

3. 검증 절차와 명령 예시

How-to

RSYNC_RSH="ssh -o BatchMode=yes -o ServerAliveInterval=25"
rsync -av --no-g -e "$RSYNC_RSH" ./artifacts/precompressed/ ci@remote:/srv/in/
rsync -avz --no-g -e "$RSYNC_RSH" ./diagnostics/text-only/ ci@remote:/srv/logs/
  1. 1 산출물을 엔트로피별로 분류한다.
  2. 2 양단의 rsync --version을 로그에 남긴다.
  3. 3 dry-run을 세 번, 압축 유무로 비교한다.
  4. 4 200MB 대표 슬라이스를 스테이징으로 복사한다.
  5. 5 partial-dir과 임시 파일 규약을 확인한다.
  6. 6 심볼릭 승격 전 SHA256 게이트.
  7. 7 composite action에 기본값을 고정한다.

4. 지표와 벤치마크

스테이징에서 재현 가능한 수치표를 만들고, 업링크 Mbps·CPU p95·디스크 await를 한 장에 모읍니다.

전송 시간 차이만이 아니라 대화형 SFTP 디렉터리 체감까지 같은 대시보드에 올려, 공유 원격 Mac에서의 다중 테넌트 영향을 놓치지 않습니다.

5. 무결성·공정성 가이드와 함께 읽기

무결성·공정성 가이드와 함께 읽는다.

6. FAQ

Q tar.gz에 압축? A 보통 불필요.

Q openrsync 동일? A 실측 필요.

7. 요약

압축 정책을 매니페스트로 고정하면 논쟁이 줄어듭니다.

자체 운영은 드리프트가 재발합니다.

기본 템플릿이 필요하면 SFTPMAC 원격 Mac을 참고하세요.