Repository navigation
fix: 디트릭스 호출을 표준 포트로 변경 - #188
Merged
Merged
Conversation
배포 환경에서 `/api/dtryx/seats` 와 `/api/dtryx/movies` 가 간헐적으로 실패하는 문제(hmmhmmhm#187)를 줄이려는 변경입니다. 극장 홈페이지에 적힌 `api.dtryx.com:30443` 을 그대로 쓰고 있었는데, 같은 호스트의 표준 포트에서도 동일한 응답을 받습니다. 세 엔드포인트 (timetable-list, play-date-list, movie-now) 모두 Recordset 이 일치하고 TLS 인증서·응답 헤더·DNS 도 같습니다. 이 저장소의 compatibility_date 기준에서는 Cloudflare Workers 가 커스텀 포트를 무시하지 않고 그대로 사용합니다. 영화관 서비스 중 비표준 포트를 쓰는 곳은 디트릭스뿐이었습니다. 포트가 다시 들어오지 않도록 상수와 클라이언트 요청 URL 양쪽에 확인을 추가했습니다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
bgmbgm94
force-pushed
the
fix/dtryx-standard-port
branch
from
September 20, 2026 23:51
30cec4f to
989fa24
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
변경 요약
https://api.dtryx.com:30443에서 표준 포트https://api.dtryx.com으로 바꿉니다./api/dtryx/seats와/api/dtryx/movies가 간헐적으로 실패하는 문제([bug] /api/dtryx/seats 가 간헐적으로 실패하고 전 극장 실패 시 503 이 됩니다 #187)를 줄이려는 변경입니다.관련 이슈
체크리스트
npm run format:check통과npm run lint통과npm run typecheck통과npm test통과문서에는 포트가 노출되지 않아 수정할 부분이 없었습니다.
먼저 밝혀둘 점
이 변경이 #187 을 해결한다는 것을 저는 검증하지 못했습니다.
증상이 배포된 Worker 에서만 나타나고, 제 로컬에서는 두 포트 모두 문제가 없어 재현이 되지 않습니다. 22 개 극장을 전수로 3 회 반복했을 때 표준 포트 66/66,
:30443도 66/66 이었습니다. 추가한 테스트도 포트가 들어오는 것을 막는 가드일 뿐, 수정의 효과를 증명하지는 못합니다. CI 통과 역시 같은 의미입니다.효과 확인은 배포 후에만 가능합니다. 배포하시면
/api/dtryx/seats를 몇 차례 반복 조회해 실패가 줄었는지 봐 주시면 좋겠습니다. 변화가 없으면 되돌리셔도 부담 없는 크기의 변경입니다.근거
응답이 동일합니다. 세 엔드포인트 모두
Recordset이 일치했습니다.:30443third-party-type2-timetable-listthird-party-type2-timetable-play-date-listthird-party-type2-movie-nowTLS 인증서(
*.dtryx.com, DigiCert), 응답 헤더(Server: Microsoft-HTTPAPI/2.0), DNS(단일 IP) 가 두 포트에서 같습니다. 같은 서버의 다른 리스너로 보입니다.:30443은 디트릭스의 공통 규격이 아닌 것으로 보입니다. 이 주소는 디트릭스를 처음 붙일 때 아트하우스모모 예매 페이지에 적혀 있던 값을 그대로 옮긴 것입니다. 다른 극장 페이지도 확인해 봤습니다. 도메인을 찾지 못해 접속하지 못한 곳이 있어 전수는 아닙니다.api.dtryx.com참조:304435 회www·img·help서브도메인만)BASE_URL은 서비스 전체가 공유하므로 이 포트는 특정 극장이 아니라 22 개 극장 조회 전부에 적용됩니다. #187 에서 실패가 극장·브랜드·회차와 무관하게 흩어진 것도, 개별 극장이 아니라 공통 전송 경로 쪽을 가리키는 것으로 봤습니다.비표준 포트를 쓰는 서비스는 디트릭스뿐이었습니다.
git log -S":30443"로 확인했을 때 이 저장소 전체 이력에서 비표준 포트가 들어온 것은 디트릭스를 추가한 커밋이 처음이자 유일했습니다.https://www.lottecinema.co.krhttps://www.megabox.co.krhttps://api.cgv.co.krhttps://api.dtryx.com:30443← 이번에 변경Cloudflare Workers 의 커스텀 포트 동작은 compatibility date 에 따라 갈립니다. 이 저장소는
compatibility_date = "2025-01-23"이라 2024-09-02 이후 기준이 적용되고, 커스텀 포트가 무시되지 않고 그대로 사용됩니다. Cloudflare 측에서도 workerd#2955 코멘트로 확인해 준 내용입니다. 그 이전에는 커스텀 포트가 조용히 무시되어 443 으로 나갔고(cloudflare-docs#5998), 이 동작이 런타임과 Cloudflare 시스템 간 상호작용의 결과라는 설명과 함께 내부 티켓으로 남아 있습니다(workers-sdk#1320).즉 지금 설정에서는 Worker 가 실제로
:30443으로 나가고 있습니다. 다만 여기까지가 정황이고, 왜 간헐적으로만 실패하는지에 대한 인과는 확인하지 못했습니다. 업스트림 쪽에서 비표준 포트 리스너의 처리가 다를 가능성도 배제하지 못합니다.확인해 본 다른 가능성
#187 에 적은 것과 같습니다. 모두 해당하지 않았습니다.
indieart,etc,spacedog모두에서 발생합니다.테스트 방법
tests/services/dtryx/api.test.ts에 다섯 건을 추가했습니다.api.ts의 포트를 되돌려 넣으면 다섯 건 모두 실패하는 것을 확인했습니다.참고로 Windows 환경에서는
tests/relay/*,tests/scripts/relay-*가 기존부터 실패하며 실행마다 9~11 건 사이로 변동합니다. 이 브랜치 이전 커밋에서도 같은 파일이 실패하며 이번 변경과는 무관합니다.남는 부분
api.ts밖(client.ts,location.ts등)에도 흩어져 있어 상수만 보는 확인은 전수가 되지 못하고, 비표준 포트를 앞으로도 쓰지 않겠다는 것은 정책 판단이라 이번 PR 에서는 넣지 않았습니다. 필요하다고 보시면scripts/quality/check-source-line-limit.ts처럼 소스를 직접 훑는 검사로 별도 준비하겠습니다.BASE_URL과 나란히 놓고 보기만 했어도 알 수 있었습니다. 늦게 찾아 죄송합니다.🤖 Generated with Claude Code