Swift 6.4 엄격한 동시성 마이그레이션은 대형 팀이라면 한 번에 진행하지 않는 편이 안전합니다. 기본 선택은 모듈별 단계 전환과 기존 운영 빌드선 및 Swift 6.4 검증선의 병행입니다. 의존성이 호환되고, 엄격한 동시성 검사 경고가 정리되었으며, 핵심 회귀 검증과 즉시 되돌리기 경로까지 갖춘 작은 프로젝트만 일괄 전환을 검토할 수 있습니다.

이 글은 다중 모듈 iOS 프로젝트의 전환 순서를 정해야 하는 기술 책임자를 위한 내용입니다. Xcode 환경과 CI 파이프라인, 맥 빌드 노드를 관리하는 개발 생산성 팀과 배포 창구 및 인프라 예산을 승인하는 IT 관리자도 대상입니다.

최종 업데이트: 2026년 8월 25일. Swift 6.4의 발표 상태는 Swift Evolution 자료로, Xcode 27의 포함 여부는 애플의 Xcode 27 베타 릴리스 노트로 확인했습니다. Swift 6.4와 Xcode 27은 아직 안정화된 정식 버전의 결론으로 다루면 안 됩니다.

전환 여부를 가르는 결정 기준

Swift 6.4는 컴파일러 버전입니다. Xcode 27은 해당 컴파일러를 포함할 수 있는 개발 도구입니다. Swift 언어 모드는 소스의 언어 규칙을 정하며, 엄격한 동시성 검사는 별도로 활성화하고 검증해야 합니다. 따라서 새 Xcode를 설치했다고 전체 프로젝트가 자동으로 Swift 6.4 모드가 되거나 모든 타겟이 엄격한 검사를 통과하는 것은 아닙니다.

현재 확인 가능한 버전 상태는 Swift Evolution의 진행 상태Swift의 호환성 안내를 함께 기준으로 삼아야 합니다. 베타 릴리스의 기본값과 알려진 문제는 정식 버전에서 달라질 수 있습니다.

일괄 전환을 검토할 조건

  • 애플리케이션 타겟, 내부 프레임워크, 공용 라이브러리의 의존성 상태를 모두 확인했습니다.
  • 각 타겟의 현재 Swift 언어 모드와 엄격한 동시성 검사 상태가 문서화되어 있습니다.
  • 검사 경고를 단순히 숨기지 않고 원인별로 해결하거나 승인된 임시 예외로 기록했습니다.
  • 단위 테스트, 사용자 인터페이스 테스트, 보관, 서명 검증을 동일한 검증선에서 통과했습니다.
  • 출시 중단 기간과 겹치지 않으며, 문제가 생겼을 때 기존 도구 체인으로 되돌릴 수 있습니다.
  • 외부 라이브러리가 새 언어 모드와 동시성 규칙을 실제로 지원하는지 확인했습니다.

이 조건 중 하나라도 빠지면 모듈별 전환으로 되돌리는 것이 합리적입니다. 특히 외부 의존성이 소스 수정 권한 밖에 있거나, 배포 직전의 동결 기간이라면 전체 전환보다 검증선 유지가 우선입니다.

팀 의사결정표

상태 권장 선택 필요한 증거
의존성 상태가 불명확함 단계 전환 의존성 목록, 언어 모드, 예외 기록
경고가 많지만 소유 팀이 명확함 해당 모듈부터 전환 모듈별 검사 결과와 종료 조건
핵심 회귀와 서명 검증이 완료됨 제한된 일괄 전환 검토 비교 가능한 CI 결과와 되돌리기 절차
베타 도구 체인만 사용 가능함 검증선으로 제한 운영선과 분리된 맥 노드 및 보존된 빌드 증거

모듈 담당자의 이관 경계

코드 디렉터리나 개발자 수만으로 배치를 나누면 안 됩니다. 실제 위험은 소스 위치보다 모듈의 공개 인터페이스, 동시성 경계, Objective-C 상호 운용, 외부 의존성에 집중됩니다.

애플리케이션 화면 모듈은 호출 흐름을 확인하기 쉽지만, 공용 라이브러리의 타입과 콜백이 여러 타겟에 퍼져 있으면 먼저 공용 경계를 정리해야 할 수 있습니다. 반대로 내부에서 통제하는 의존성이 많은 모듈은 경고가 많더라도 소유 팀이 명확하므로 독립적인 배치로 처리하기 쉽습니다.

Swift 6 동시성 마이그레이션 안내의 점진적 도입 문서는 프로젝트 전체를 한 번에 바꾸지 않고 점진적으로 적용하는 방향을 설명합니다. 팀은 다음 항목을 모듈별 기록으로 남겨야 합니다.

  • 타겟 이름과 현재 언어 모드
  • 직접 및 간접 의존성
  • 엄격한 동시성 검사 결과
  • @preconcurrency 같은 임시 호환 표시
  • 해결되지 않은 데이터 경쟁 위험
  • 담당자와 검토자
  • 해당 배치의 통과 조건과 되돌리기 조건

이 기록이 있어야 CI 팀은 실패한 타겟을 정확히 격리할 수 있고, IT 관리자는 어떤 모듈이 장기간 예외 상태에 머무는지 확인할 수 있습니다.

Swift 5와 Swift 6.4 모듈의 병행 빌드

서로 다른 언어 모드를 사용하는 모듈은 일정 조건에서 함께 빌드할 수 있습니다. 그러나 이것은 모든 모듈이 같은 동시성 보장을 갖는다는 뜻이 아닙니다. 경계를 넘는 타입, 비동기 호출, 전역 상태, 콜백 변환에서 경고와 실행 의미가 달라질 수 있습니다.

따라서 “함께 빌드된다”는 결과만으로 호환성을 승인하면 안 됩니다. Swift의 모듈 호환성 설명은 라이브러리 경계와 진화 조건을 따로 검토하도록 안내합니다. 공용 프레임워크는 소비 타겟의 언어 모드만 확인하지 말고, 공개 API의 격리와 ABI 관련 조건도 함께 기록해야 합니다.

CI 운영팀의 병행 검증선

기업의 iOS CI/CD에서 가장 위험한 실수는 시험 도구 체인을 운영 보관 작업에 바로 덮어쓰는 것입니다. 기존 생산 도구 체인은 유지하고, Swift 6.4가 포함된 검증 도구 체인은 격리된 맥 빌드 노드에서 운영해야 합니다.

노드 라벨이나 DEVELOPER_DIR는 작업에 사용할 도구 체인을 고르는 수단일 뿐입니다. 작업 공간, 파생 데이터 캐시, 서명 인증서, 키체인, 비밀값까지 자동으로 격리해 주지는 않습니다. 같은 캐시와 인증 자산을 공유하면 검증선의 성공 결과가 운영선의 재현 가능한 증거가 되지 않을 수 있습니다.

CI 담당자는 각 선에서 다음 작업을 별도로 실행해야 합니다.

  • 컴파일 경고 수집
  • 단위 테스트
  • 사용자 인터페이스 테스트
  • 보관 작업
  • 서명 및 내보내기 검증
  • 생성된 산출물과 로그 보존
  • 기존 운영선과의 결과 비교

실제 프로젝트에 적용하기 전에는 의존성이 적은 다중 모듈 샘플로 도구 체인, 캐시, 서명 경계를 확인해야 합니다. 그 뒤 업무 프로젝트에서 같은 검증을 반복해야 합니다. Swift 6.4가 아직 안정 버전으로 확정되지 않은 상태에서는 검증선의 성공을 곧바로 출시 도구 체인의 승인으로 해석하면 안 됩니다.

품질 보증팀의 실행 의미 검증

컴파일 경고가 사라지는 것은 필요한 조건이지만 충분한 조건은 아닙니다. 엄격한 동시성 검사는 컴파일 시점의 데이터 경쟁 진단을 강화할 수 있지만, 실제 서비스에서의 작업 순서와 사용자 인터페이스 동작, 백그라운드 작업의 종료 시점까지 대신 검증하지는 않습니다.

품질 보증팀은 일반적인 시작 화면 확인보다 동시성 경계가 실제로 사용되는 흐름을 선택해야 합니다.

  • 여러 작업이 동시에 데이터를 읽고 쓰는 흐름
  • 콜백을 비동기 호출로 연결하는 흐름
  • Objective-C 객체와 Swift 동시성 코드가 만나는 흐름
  • 백그라운드 작업의 취소와 재시작
  • 네트워크 실패 뒤 재시도하는 화면
  • 알림과 화면 상태가 동시에 갱신되는 흐름

마이그레이션 전후의 테스트 결과, 충돌 기록, 작업 실행 순서, 실패 재현 여부를 비교해야 합니다. 처리 시간이나 실패율을 문서에 넣으려면 기업 CI 기록 또는 검증 가능한 내부 측정값이 필요합니다. 출처가 없는 성능 수치로 투자 효과를 주장해서는 안 됩니다.

주의: @preconcurrency와 같은 호환 조치는 마이그레이션을 끝냈다는 표시가 아닙니다. 사용 위치, 책임자, 제거 예정 조건을 승인 기록에 남기고, 새 모듈로 확산되지 않도록 검토 규칙을 두어야 합니다.

보안 및 출시 승인

보안 담당자는 컴파일 오류를 없애기 위해 격리 규칙을 무조건 완화하지 않았는지 확인해야 합니다. 임시 표시, 동적 격리, 검사 수준 완화는 각각 허용 범위와 만료 조건이 있어야 합니다.

출시 승인 자료에는 다음 내용이 포함되어야 합니다.

  • 사용한 도구 체인과 언어 모드
  • 의존성 접근 및 변경 이력
  • 서명 체인 검증 결과
  • 남은 호환성 예외와 책임자
  • 핵심 회귀 흐름의 결과
  • 기존 운영선으로 돌아가는 방법
  • 검증선 산출물과 로그 보관 위치

이 자료가 없으면 “빌드 성공”은 배포 승인 근거가 되기 어렵습니다. 특히 베타 도구 체인을 사용한 결과라면 베타 속성, 알려진 문제, 정식 버전 재검증 조건을 별도로 적어야 합니다.

인프라 담당자의 용량 판단

Swift 엄격한 동시성 마이그레이션에 독립 맥 빌드 노드가 항상 필요한 것은 아닙니다. 판단 기준은 프로젝트의 모듈 수 자체가 아니라 병행 빌드 기간, 테스트 대기열, 배포 서비스 수준, 기존 노드의 여유 용량입니다.

기존 노드를 재사용할 수 있는 경우는 검증 작업이 운영 보관 작업과 충돌하지 않고, 캐시와 인증 자산을 분리할 수 있으며, 실패한 배치를 다시 실행할 여유가 있을 때입니다. 격리 노드가 필요한 경우는 베타 도구 체인을 유지해야 하거나, 회귀 테스트가 운영 출시 작업의 대기열을 밀어내거나, 되돌리기 위해 기존 환경을 계속 보존해야 할 때입니다.

비용은 다음 변수로 계산해야 합니다.

  • 맥 노드가 점유되는 기간
  • 검증선과 운영선이 병행되는 기간
  • CI 운영 및 장애 대응에 투입되는 시간
  • 테스트 대기열 증가로 발생하는 지연
  • 출시 창구를 늦출 때의 사업 비용
  • 임시 노드를 추가하거나 원격 맥을 임대하는 비용

일률적으로 구매가 싸거나 임대가 싸다고 결론 내리기보다, 먼저 실제 프로젝트의 대기열과 병행 기간을 입력해야 합니다. RUVCLOUD의 맥 원격 접속 환경은 우선 격리된 검증 노드를 실제 프로젝트로 시험하려는 팀이 비교할 수 있는 선택지입니다. 장기 중부하 작업과 물리 장치 연결이 필수인 환경에는 자체 장비가 더 적합할 수 있습니다.

팀별 인수인계 점검표

기술 책임자

  • [ ] 일괄 전환 또는 단계 전환의 선택 조건을 기록했습니다.
  • [ ] 모듈별 담당자와 승인자를 지정했습니다.
  • [ ] 출시 동결 기간과 되돌리기 창구를 확인했습니다.
  • [ ] 베타 도구 체인의 사용 범위를 승인했습니다.

모듈 담당자

  • [ ] 타겟별 언어 모드와 검사 상태를 기록했습니다.
  • [ ] 공용 API와 외부 의존성의 동시성 경계를 확인했습니다.
  • [ ] 임시 호환 표시의 책임자와 만료 조건을 정했습니다.
  • [ ] 배치의 통과 조건과 미해결 위험을 남겼습니다.

CI 및 품질 보증팀

  • [ ] 운영선과 검증선의 캐시 및 인증 영역을 분리했습니다.
  • [ ] 컴파일, 단위 테스트, 사용자 인터페이스 테스트, 보관, 서명을 비교했습니다.
  • [ ] 고위험 동시성 흐름을 회귀 범위에 포함했습니다.
  • [ ] 실패 시 기존 도구 체인으로 되돌리는 작업을 검증했습니다.

인프라 및 IT 관리자

  • [ ] 병행 기간과 노드 점유 시간을 산정했습니다.
  • [ ] 대기열과 출시 서비스 수준의 영향을 확인했습니다.
  • [ ] 임시 원격 맥 노드와 자체 장비의 비용 항목을 비교했습니다.
  • [ ] 장기 보존이 필요한 운영 노드와 실험 노드를 구분했습니다.

이 목록에서 미완료 항목이 남아 있으면 전체 전환을 승인하지 않는 편이 좋습니다. 반대로 모든 핵심 증거가 준비되고 프로젝트 범위가 작다면 제한된 일괄 전환을 검토할 수 있습니다.

맥 구축 방식의 현실적인 선택

사내 맥을 구매하면 물리 장비와 인증 자산을 직접 통제하기 쉽습니다. 대신 초기 구매, 교체 주기, 장애 대응, 예비 장비, 원격 접근과 운영 인력이 필요합니다. 여러 팀이 짧은 기간에 검증 용량을 추가해야 한다면 장비가 유휴 상태로 남을 가능성도 계산해야 합니다.

원격 맥 임대는 격리된 검증 환경을 빠르게 확보하고, 마이그레이션 기간에만 사용한 뒤 줄일 수 있다는 장점이 있습니다. 반면 네트워크 지연, 데이터 반출 정책, 접근 권한, 공급자의 지원 범위와 서비스 수준을 사전에 검증해야 합니다. RUVCLOUD 요금 안내를 확인할 때도 단순 월 비용만 보지 말고 노드 점유 기간과 운영 부담을 함께 비교해야 합니다.

실제 프로젝트를 격리 노드에서 먼저 실행하려는 경우에는 한국용 원격 맥 신청 경로를 통해 검증 환경을 확보한 뒤, 장기 빌드 풀 확장 여부를 결정하는 방식이 안전합니다. 이 접근은 임대가 모든 기업에 최선이라고 전제하지 않고, 마이그레이션 기간의 추가 용량이 실제로 필요한지 확인하게 합니다.

대형 팀이 기존 방식으로 전체 타겟을 한 번에 바꾸면 외부 의존성, 테스트 대기열, 예외 승인, 되돌리기 작업이 한 출시 창구에 겹칩니다. 사내 장비만 사용하면 검증 기간 동안 운영 노드를 계속 점유할 수 있고, 클라우드형 환경만 사용하면 데이터 접근과 네트워크 조건을 추가로 관리해야 합니다. 따라서 현재 방식의 약점이 운영선과 검증선의 충돌, 일시적인 용량 부족, 장비를 오래 보유해야 하는 부담이라면 RUVCLOUD의 원격 맥을 격리된 Swift 6.4 검증 노드로 먼저 시험하는 편이 현실적입니다. 실제 빌드와 회귀 결과가 확인된 뒤에만 장기 구축 풀로 확대하면 됩니다.