핵심 결론: Mac M4 원격 개발의 병목 현상은 네트워크가 아닌 잘못된 설정에 있습니다. 대부분의 지연, 연결 끊김, 빌드 타임아웃은 세 가지 예방 가능한 문제에서 비롯됩니다: SSH 키 권한, VNC 색 깊이, runner 서비스 등록.
1. 원격 Mac 개발에 독자적인 접근법이 필요한 이유
클라우드 Mac과 VPS는 근본적으로 다릅니다: macOS 샌드박스, SIP, Keychain 권한 관리는 Linux 서버 운영과 다른 로직을 따릅니다.
이 세 가지를 이해하면 이후의 모든 작업이 직관적으로 느껴집니다.
1.1 macOS와 Linux 운영 비교
| 차원 | Linux VPS | Mac M4 클라우드 |
|---|---|---|
| SSH 기본 상태 | 보통 활성화됨 | Remote Login 수동 활성화 필요 |
| 인증서 저장 | 파일 시스템 | Keychain (잠금 해제 필요) |
| 그래픽 접근 | 네이티브 VNC 없음 | 내장 Screen Sharing |
2. SSH 설정
2.1 서버에서 Remote Login 활성화
bash
sudo systemsetup -setremotelogin on
sudo systemsetup -getremotelogin
2.2 키 권한
bash
ssh-keygen -t ed25519 -C "hashvps-dev" -f ~/.ssh/hashvps_ed25519
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ssh hashvps-dev를 눌러 연결하면 됩니다.
3. VNC 설정
| 클라이언트 | 플랫폼 | 장점 |
|---|---|---|
| Apple Remote Desktop | macOS | 네이티브 가속 |
| Jump Desktop | macOS / iOS | 멀티 프로토콜 |
4. Xcode 빌드 노드
bash
security unlock-keychain -p "$KEYCHAIN_PASSWORD" ~/Library/Keychains/login.keychain-db
./svc.sh install && ./svc.sh start
Buildkite Agent 설정 예시 (클릭하여 펼치기)
bash
brew tap buildkite/buildkite && brew install buildkite-agent
sudo brew services start buildkite/buildkite/buildkite-agent
5. 스펙 선택 결정 매트릭스
~~코어 수로 선택하지 마세요~~: 메모리가 병목입니다.
황금 규칙: 메모리는 피크 요구량의 1.3배로 계획하세요.
| 워크로드 | 권장 스펙 | 메모리 |
|---|---|---|
| 단일 iOS 앱 빌드 | M4 | 16 GB |
| 병렬 simulator 테스트 | M4 Pro | 24 GB |
| AI 추론 + CI 동시 실행 | M4 Max | 36 GB+ |
6. 스토리지 관리
bash
du -sh ~/Library/Developer/Xcode/DerivedData
rm -rf ~/Library/Developer/Xcode/DerivedData/*
7. 트러블슈팅
| 증상 | 가능한 원인 | 수정 명령 |
|---|---|---|
| SSH 연결 거부 | Remote Login 비활성화 | sudo systemsetup -setremotelogin on |
| 키 인증 실패 | 잘못된 권한 | chmod 600 ~/.ssh/authorized_keys |
| Runner 오프라인 | 서비스 미등록 | ./svc.sh install && ./svc.sh start |
키보드 단축키 빠른 참조
- Cmd + Shift + K
- Xcode 빌드 폴더 정리
- Cmd + B
- Xcode 빌드
요약
Mac M4 원격 개발 환경 성공률은 80%가 다음 세 가지에 달려 있습니다: 정확한 SSH 키 권한 설정, 올바른 VNC 가상 해상도 설정, launchd 서비스로 등록된 runner.
FAQ
Mac M4 렌탈 — 오늘 바로 원격 개발 환경 구축
SSH + VNC 바로 사용 가능, 캐나다·아시아태평양 데이터센터
M4 / M4 Pro 선택 가능, 일 단위 요금제·장기 계약 없음