ENGINEERING SUPPORT

증거를 먼저 보존하고 클라우드 Mac 장애 범위를 좁히세요

실행 순서에 따라 구성한 엔지니어링 가이드입니다. 먼저 장치와 네트워크를 확인하고 Xcode·서명·CI 환경을 점검한 뒤 스토리지·업그레이드·복구를 처리해 여러 변수를 반복해서 시험하는 일을 줄이세요.

6개 범주 엔지니어링 문제 해결
5개 선택 가능한 노드
365일 노드 정상 운영
진단 실행 항목 RUN / SUPPORT
의존 순서대로 확인

연결 → 환경 → 빌드 → 데이터

READY
01 / 장치
장치 식별자, 노드, 호스트 지문
02 / 네트워크
로컬 접속, 라우팅, 포트 및 지연 시간
03 / 툴체인
macOS, Xcode, 인증서 및 의존성
04 / 작업
재현 명령, 로그, 종료 코드 및 시간
티켓 제출 전 로그를 비식별화하고 완료한 단계를 기록하세요
GUIDE INDEX

현재 막힌 지점에서 시작하세요. 처음부터 모두 읽을 필요는 없습니다

6개 진입점에서 인증 확인, 시스템 변경, 개발 도구, 자동화 작업, 네트워크 경로 및 주문 정보를 각각 처리합니다. 각 항목에는 먼저 확인할 내용, 보존할 자료, 티켓 제출 시점을 안내합니다.

CONNECTION ORDER

연결에 실패하면 먼저 대상 장치를 확인한 다음 연결 도구를 확인하세요

호스트 주소·포트·자격 증명을 확인하기 전에 클라이언트를 반복해서 바꾸지 마세요. 아래 네 단계는 순서대로 진행하며, 각 단계의 결과가 다음 단계의 검증 가능한 입력이 됩니다.

  1. 01

    장치 정보 확인

    콘솔에 로그인해 해당 주문에서 장치 식별자, 선택한 노드, 호스트 주소, SSH 포트 및 현재 자격 증명을 확인하세요. 여러 장치를 동시에 사용할 때는 주문 번호와 장치 식별자를 먼저 일대일로 매칭합니다.

    보존 항목 주문 번호, 장치 식별자, 노드, 포트
  2. 02

    호스트 지문 확인

    최초 연결 시 클라이언트에 표시된 지문을 콘솔 기록과 대조하세요. 장치를 재설치한 뒤 지문이 바뀌었다면 변경 기록을 먼저 확인하고 로컬의 이전 항목을 정리하세요. 경고를 바로 무시해서는 안 됩니다.

    ssh-keygen -R example-host
    ssh -p 22 user@example-host
  3. 03

    SSH 기준선부터 설정

    먼저 유선 네트워크에서 DNS, 포트 및 SSH를 테스트하세요. 성공하면 로그인 시간·외부 네트워크·명령줄 응답을 기록하고, 실패하면 전체 오류를 보존하세요. “연결 실패” 한 줄만 잘라 남기지 마세요.

    판단 기준 시간 초과는 라우팅 또는 포트 문제일 가능성이 높고, 연결 거부는 대상 서비스 문제일 가능성이 높습니다. 인증 실패 시에는 자격 증명과 권한을 먼저 확인하세요.
  4. 04

    그다음 그래픽 인터페이스 연결 구성

    SSH 기준선이 안정된 뒤에만 그래픽 인터페이스에 필요한 주소·포트·클라이언트 버전·로컬 방화벽을 확인하세요. 화면이 끊기면 해상도·인코딩 설정·네트워크 지연 시간도 함께 기록합니다.

    주의 범위 그래픽 인터페이스가 작동한다고 해서 고비트레이트 미디어 미리보기가 로컬 화면과 동일한 것은 아닙니다. 실제 경로에서 검증하세요.
NETWORK MEASUREMENT

5개 노드의 ping 중앙값을 동일한 기준으로 비교하세요

아래 표는 주요 도시에서 싱가포르, 일본(도쿄), 한국(서울), 홍콩, 미국 서부로 연결되는 경로 차이를 보여 줍니다. 측정값은 노드 선택 참고용이며 애플리케이션 처리량·그래픽 인터페이스 프레임률·작업 완료 시간을 보장하지 않습니다.

측정 시간 평일 14:00–16:00 UTC+8
샘플 수 노드별 50회
접속 방식 기가비트 유선 네트워크
통계값 왕복 지연 시간 중앙값
3개 주요 도시에서 5개 VMDebug 노드로 측정한 ping 중앙값 참고값(단위: ms)
테스트 출발지 통신사 싱가포르 일본(도쿄) 한국(서울) 홍콩 미국 서부
상하이 China Telecom 71 ms 42 ms 46 ms 34 ms 141 ms
선전 China Unicom 44 ms 55 ms 59 ms 18 ms 157 ms
베이징 China Mobile 91 ms 48 ms 39 ms 63 ms 138 ms
로컬부터 테스트

Wi-Fi와 로컬 외부 연결 변동 배제

이더넷 케이블로 직접 연결하고 대용량 파일 동기화·화상 회의·시스템 업데이트를 일시 중지하세요. 로컬 게이트웨이와 노드 주소를 연속으로 테스트하고, 두 곳이 함께 흔들리면 로컬 접속부터 처리합니다.

그다음 라우팅 확인

중앙값만으로 전체 사용감을 설명할 수 없습니다

원격 상호작용은 패킷 손실·지터·업로드 대역폭·클라이언트 인코딩의 영향도 받습니다. 네트워크 문제를 제출할 때 통신사·도시·측정 시간·샘플 수·traceroute 결과를 함께 제공하세요.

XCODE DIAGNOSTICS

서명 실패 시 환경부터 삭제하지 말고 5단계 의존성을 좁혀 가세요

같은 오류도 인증서 사용 불가, 프로비저닝 프로파일 불일치, Keychain 접근 권한, 캐시 오염 또는 빌드 매개변수 차이에서 발생할 수 있습니다. 원본 로그를 먼저 보존한 뒤 아래 순서로 확인하세요.

  1. 01

    인증서

    대상 인증서가 존재하고 만료되지 않았는지, 인증서와 개인 키가 일치하는지, 현재 빌드 사용자가 읽을 수 있는지 확인하세요. 서명 ID를 먼저 나열하고 모든 자료를 바로 다시 가져오지 마세요.

    security find-identity -v -p codesigning
  2. 02

    Provisioning Profile

    Bundle Identifier, 팀 식별자, 인증서 유형, 장치 범위 및 기능 선언을 확인하세요. 수동 서명 프로젝트는 설정이 이전 캐시가 아닌 대상 파일을 실제로 가리키는지 확인합니다.

    CODE_SIGN_STYLE / PROVISIONING_PROFILE_SPECIFIER
  3. 03

    Keychain 권한

    CI 사용자와 대화형 로그인 사용자는 서로 다른 Keychain 검색 목록을 사용할 수 있습니다. 대상 Keychain의 잠금 해제·검색 경로 등록·빌드 프로세스의 개인 키 읽기 허용 여부를 확인하세요.

    security list-keychains
  4. 04

    DerivedData

    현재 경로와 실패한 작업을 먼저 기록한 뒤 해당 프로젝트의 파생 데이터만 정리하세요. 모든 캐시 삭제를 첫 단계로 삼으면 비교 가능한 빌드 증거가 사라집니다.

    xcodebuild -showBuildSettings
  5. 05

    빌드 로그

    전체 명령, Scheme, Configuration, SDK, Xcode 버전, 종료 코드 및 최초 실패 위치를 보존하세요. 마지막 요약 줄보다 첫 번째 근본 원인 오류를 우선 확인합니다.

    xcodebuild -version
CI/CD RUNNER

실행기를 장기 적치 디렉터리가 아닌 재현 가능한 실행 단위로 관리하세요

전용 물리 Mac은 빌드 작업을 지속적으로 실행할 수 있지만 안정성은 신원·디렉터리·캐시·키·롤백 범위에 좌우됩니다. 변경할 때마다 무엇을 바꿨는지, 어떻게 검증하는지, 어떻게 되돌리는지 답할 수 있어야 합니다.

실행기 연결 체크리스트 5 CHECKS
  1. 01

    실행기 신원 등록

    각 장치에 식별 가능한 실행기 이름과 태그를 사용하고 등록 범위·서비스 사용자·시작 방식을 기록하세요. 여러 실행기에 구분할 수 없는 이름을 사용하지 마세요.

  2. 02

    작업 디렉터리 격리

    저장소·브랜치·작업별로 독립 디렉터리를 만들고, 동시에 실행되는 작업이 같은 DerivedData·아카이브 디렉터리·의존성 출력 위치에 쓰지 못하게 하세요.

  3. 03

    캐시 범위 설정

    재생성 가능한 캐시와 반드시 보존할 산출물을 구분하세요. 정리 전에 디렉터리 크기·최근 사용 시간·작업 소유를 기록해 전체 삭제로 인한 콜드 스타트를 피하세요.

  4. 04

    실행 중 키 주입

    키는 작업에 필요한 순간에만 프로세스 환경이나 임시 Keychain에 넣고 로그 출력은 끄세요. 작업 종료 후 임시 자료를 삭제하고 접근을 잠그세요.

  5. 05

    실패 롤백 정의

    실행기·Xcode·의존성을 업데이트하기 전에 버전 기록을 보존하세요. 검증에 실패하면 계속 변경을 쌓지 말고 설정 파일·툴체인 선택·캐시 인덱스를 복원합니다.

작업 디렉터리

작업마다 고유 경로 생성

경로에는 최소한 프로젝트 식별자·작업 식별자·시도 횟수를 포함하세요. 정리 작업은 현재 작업 디렉터리만 대상으로 하여 병렬 빌드의 오삭제를 막습니다.

WORK_ROOT="$HOME/ci-work"
JOB_DIR="$WORK_ROOT/$PROJECT/$RUN_ID"
mkdir -p "$JOB_DIR"
실패 증거

종료 전에 4가지 정보를 보관하세요

실행기 버전·툴체인 버전·전체 종료 코드·첫 번째 근본 원인 로그를 저장하세요. 캐시 적중률과 디스크 여유 공간도 작업 요약에 기록해 변경 전후를 비교할 수 있게 합니다.

  • 실행기 및 macOS 버전
  • Xcode 경로 및 버전
  • 명령·종료 코드 및 로그
  • 디스크 여유 공간 및 캐시 상태
STORAGE & TB5

추가 스토리지를 연결하기 전에 복구 가능한 사본을 만들고, 병렬 연결 전 토폴로지를 명확히 그리세요

추가 스토리지와 Thunderbolt 5를 병렬로 연결하면 데이터 경로와 권한 범위가 바뀝니다. 포맷·마운트 지점 변경·장치 분리 전에는 데이터 사본과 작업 중지 상태를 반드시 확인하세요.

추가 스토리지

마운트 전 점검

  1. 데이터 사본 확인

    중요 코드·소재·빌드 산출물·설정은 최소 한 개의 독립 사본을 보관하세요. 검증하지 않은 마운트 볼륨을 유일한 저장 위치로 사용하지 마세요.

  2. 디스크 식별 정보 기록

    볼륨 이름·파일 시스템·용량·장치 식별자·예상 마운트 지점을 기록하세요. 표시 순서만으로 대상 디스크를 판단하지 마세요.

  3. 접근 권한 확인

    빌드 또는 미디어 작업을 실행하는 사용자가 필요한 디렉터리 권한을 갖는지 확인하고, 전체 권한 확장으로 소유권 문제를 우회하지 마세요.

  4. 읽기·쓰기 검증

    삭제 가능한 테스트 파일로 생성·읽기·이름 변경·삭제를 먼저 확인한 뒤 실제 작업 디렉터리를 이전하세요.

Thunderbolt 5

여러 장치 병렬 연결 순서

  1. 물리 토폴로지 그리기

    각 Mac·케이블 방향·공유 스토리지·작업 역할을 표시하세요. 상하위 장치를 식별할 수 없는 상태에서 연결을 변경하지 마세요.

  2. 권한 범위 통일

    어느 장치가 쓰고 어느 장치가 읽기 전용인지 정한 뒤 자동화 작업에 독립 디렉터리를 사용해 병렬 덮어쓰기를 막으세요.

  3. 경로를 장치별로 검증

    장치를 하나 추가할 때마다 연결·권한·읽기/쓰기 테스트를 완료하세요. 배선을 모두 마친 뒤 한꺼번에 점검하지 마세요.

  4. 작업 역순으로 분리

    쓰기 및 빌드 작업을 먼저 중지하고 캐시가 디스크에 기록됐는지 확인한 뒤 볼륨을 마운트 해제하고 경로 끝단부터 장치를 분리하세요.

UPGRADE & RECOVERY

시스템 업그레이드에는 검증 장치·기준선·롤백 자료가 필요합니다

모든 노드는 365일 정상 운영됩니다. macOS와 툴체인 업그레이드는 사용자가 작업 일정에 맞춰 변경 시간을 정하고, 먼저 중요하지 않은 작업에서 검증한 뒤 장기 실행기로 확대하세요.

업그레이드 실행 순서 6 PHASES
  1. 01

    스냅샷형 체크리스트 작성

    코드 상태·의존성 잠금 파일·Homebrew 목록·Xcode 경로·인증서 이름·Keychain 목록·실행기 설정·디스크 여유 공간을 내보내세요.

  2. 02

    재생성할 수 없는 데이터 백업

    비공개 설정·서명 자료·빌드 산출물·프로젝트 데이터를 독립 위치로 옮기고, 실제로 파일 하나 이상을 복구할 수 있는지 확인하세요.

  3. 03

    툴체인 호환성 검증

    대상 macOS·Xcode·명령줄 도구·패키지 관리자·실행기·프로젝트 의존성의 호환 범위를 확인하고 유지해야 할 이전 버전을 기록하세요.

  4. 04

    쓰기 작업 일시 중지

    CI 큐·소재 처리·데이터 동기화를 중지하고 작업 디렉터리·캐시·추가 스토리지에 계속 쓰는 프로세스가 없는지 확인하세요.

  5. 05

    최소 검수 완료

    업그레이드 후 SSH·디스크·Xcode 버전·인증서 읽기·의존성 복원·테스트·아카이브·산출물 다운로드를 순서대로 검증하세요.

  6. 06

    새 기준선 기록

    첫 성공 작업의 소요 시간·로그·캐시 상태·디스크 여유 공간을 저장한 뒤 병렬 작업을 단계적으로 복구하세요. 모든 큐를 한 번에 열지 마세요.

중지 조건

다음 상황에서는 먼저 롤백하세요

  • 필수 인증서 또는 개인 키를 읽을 수 없음
  • 프로젝트에 필요한 Xcode 버전을 사용할 수 없음
  • 추가 스토리지가 읽기 전용이거나 마운트에 이상이 있음
  • 동일한 기준선 명령에서 새로운 안정적 실패가 발생함

근본 원인이 분명하지 않은 상태에서 여러 구성 요소를 연속으로 업그레이드하면 시스템·툴체인·프로젝트 설정의 영향을 로그에서 구분할 수 없습니다.

티켓 자료

지원팀이 바로 재현할 수 있게 하세요

  • 주문 번호 및 장치 식별자
  • 문제 발생 시간대 및 선택한 노드
  • macOS·Xcode 및 실행기 버전
  • 최소 재현 단계 및 예상 결과
  • 비식별화한 전체 로그 및 종료 코드
  • 완료한 점검과 결과
콘솔 티켓 제출
NEXT ACTION

로그를 비식별화했다면 실행 항목을 지원팀에 전달하세요

기존 주문 문제는 콘솔에서 티켓을 제출하고 장치 식별자·재현 단계·전체 오류 맥락을 첨부하세요. 아직 주문하지 않은 구성 관련 문의는 전용 지원 이메일로 연락할 수 있습니다.

support@vmdebug.com