2026 원격 Mac 프론트 출시 검수:
HTTP/3 QUIC·Alt-Svc — Safari vs Chromium 대조표·3단계 체크리스트
대상: HTTP/3·QUIC를 켜는 팀. Chromium만으로는 Alt-Svc 캐시·UDP 차이를 놓칩니다. 대조표·3단계·실행 검증으로 수락을 고정하세요. 연계: 배포·Safari 3단계, HAR·trace 요약, Web Inspector FAQ.
01 QUIC 롤아웃이 출시 검수에서 걸리는 지점
HTTP/3는 UDP 위 QUIC로 옮깁니다. 흔한 회귀는 부분 활성화입니다. h3는 켜져 보이는데 Alt-Svc UDP가 막히거나 SNI·인증서가 어긋나 연결 이전이 세션 고정과 충돌합니다.
Alt-Svc는 CORS·CSP만큼 엄하게 문서화하세요. QA가 Linux Chromium뿐이면 Safari 고객의 재시도·캐시를 재현하기 어렵습니다.
02 Safari vs Chromium 대조표
DNS·CDN 변경 후에도 재사용하세요. 차이는 QUIC 시도 시점과 실패 표면에 있습니다.
| 주제 | Safari / WebKit | Chromium |
|---|---|---|
| 첫 비행 | HTTP/2 후 h3를 Alt-Svc·HTTPS RR로 탐색. WebKit 캐시가 프로브 시점에 영향. |
형태 유사. netlog가 QUIC 재시도를 DevTools보다 자세히 표시. |
| Alt-Svc 파싱 | ma=·권위 준수. 잘못된 롤아웃+긴 TTL은 HTTP/2 고착처럼 보임. |
유사. authority 오타는 netlog에 잘 남고 UI는 HTTP/2만 보일 수 있음. |
| UDP / 미들박스 | 캡티브 Wi-Fi는 QUIC 단절. Safari 조용한 폴백 → 캡처로 확인. | 동일. 헤드리스는 스크립트용, 공용망 현장은 별도. |
| 개발자 도구 신호 | Web Inspector + 필요 시 macOS 패킷 캡처. | DevTools + netlog, CDN 요청 ID 상관 권장. |
| 0-RTT / early data | Apple TLS에 묶임. POST early data는 검증 전 가정 금지. | 노브 많음. 리플레이는 QUIC off가 아니라 간헐 4xx/5xx로 보일 수 있음. |
스테이징≠프로덕이면 WebKit 전에 분할 라우팅·엣지 지역을 의심하세요.
03 3단계 출하 체크리스트
- 와이어 계약 고정: 호스트명, QUIC 종단(CDN/오리진),
Alt-Svc튜플, TLS 최소, API용 HTTP/2 유지 여부. - Apple Silicon 실기: 원격 Mac에서 Safari·Chromium 캐시 초기화 후 동일 스테이징으로 로그인·업로드·SW 껍데기,
ma이후 재로드로 재탐색 확인. - 증거 첨부: 비밀 제거 HAR·netlog,
curl -v, UDP 캡처 메모를 티켓에 보관.
번들 검수와 병행하세요. 전송도 계약의 일부입니다.
04 실행 가능 검증·캡처·curl 파라미터 아이디어(목록)
QA와 동일 Wi-Fi에서 실행, 비밀 가림. HAR·trace 글의 보관 규칙을 따르세요.
- ▸TLS ALPN 프로브:
openssl s_client -connect 호스트:443 -servername 호스트 -alpn h2,h3— 출력의ALPN protocol줄에 엣지가 광고할 때h3가 포함되는지 확인합니다. - ▸응답 헤더(HTTP/2):
curl -sSIv --http2 https://호스트/로Alt-Svc와strict-transport-security등을 먼저 읽습니다. - ▸QUIC 전용 curl 빌드:
curl -V에 nghttp3/ngtcp2가 보이면curl --http3-only -sSIv https://호스트/를 시도하고, 빌드에 따라--http3로 대체합니다. 실패 시 폴백 동작을 메모합니다. - ▸지연 비교(프로토콜별):
curl -w '\nhttp_code:%{http_code} time_namelookup:%{time_namelookup} time_connect:%{time_connect} time_appconnect:%{time_appconnect} time_starttransfer:%{time_starttransfer} time_total:%{time_total}\n' -o /dev/null -sS 'URL'— 캐시를 비운 뒤 프로토콜마다 두 번 이상 돌려 분산을 봅니다. - ▸UDP sanity(macOS):
sudo tcpdump -ni en0 host 오리진_IP and udp port 443— HTTP/3 표기인데 QUIC 패킷이 없으면 네트워크·CDN 확인. 인터페이스는ifconfig로 교체. - ▸Safari: Web Inspector + 필요 시 무선 진단 캡처. iOS는 Inspector FAQ.
- ▸Chromium: net-export로 QUIC 이벤트 필터(내부 정책에 맞게 경로만 공유).
메트릭이 HTTP/2 재시도 루프에 사용자를 가두지 않을 때만 QUIC 실패를 “우아한 폴백”이라고 부르세요.
05 FAQ
Alt-Svc만으로 HTTP/3가 켜지나요?
광고일 뿐입니다. 클라이언트는 해당 경로에서 QUIC 핸드셰이크를 완료하고 인증서를 신뢰해야 합니다. 깨진 ma, 잘못된 SNI, UDP 필터링은 조용한 폴백으로 이어지므로 반드시 측정합니다.
스테이징에서 Safari와 Chromium이 왜 다르게 보이나요?
캐시, 기능 플래그, DNS 캐시, 재시도 일정이 다릅니다. 콜드와 웜 세션을 양쪽에서 모두 돌리고, TTL 만료 후에도 반복하세요.
curl이 브라우저 QA를 대체할 수 있나요?
엣지 계약을 검증합니다. 쿠키·서비스 워커·혼합 콘텐츠 미묘함은 브라우저에 남습니다. 두 층을 범위에 넣으세요.
원격 Mac을 QUIC 수락에 쓰는 이유는?
배송 없이 Safari.app과 curl·캡처를 한 세션에서 씁니다. 빌드 SHA별 캡처를 스모크 옆에 두면 롤백·전진이 빨라집니다.