Repository navigation
Description
요약
/api/dtryx/seats 가 디트릭스 업스트림 호출에 간헐적으로 실패합니다. 같은 극장을 몇 초 간격으로 조회해도 성공과 실패가 번갈아 나옵니다. 재시도가 없어 한 번의 실패가 그대로 결과 누락으로 이어지고, 조회 대상 극장이 모두 실패하면 요청 전체가 503 이 됩니다.
같은 시각에 디트릭스 업스트림을 직접 호출하면 0.03~0.06 초에 정상 응답하므로, 업스트림 장애보다는 배포 환경에서 나가는 호출 쪽 문제로 보입니다.
재현 절차
-
단일 극장을 몇 초 간격으로 반복 조회합니다.
daiso get /api/dtryx/seats --cinemaCode 000072 --playDate 20260917 --json
-
지역 단위로 조회합니다.
daiso get /api/dtryx/seats --region 서울 --playDate 20260917 --json
기대 동작
업스트림이 정상 응답하는 동안에는 조회도 안정적으로 성공해야 합니다. 일시적인 실패가 있더라도 한 번의 실패로 해당 극장 결과가 통째로 빠지지 않으면 좋겠습니다.
실제 동작
같은 요청이 성공과 실패를 오갑니다. 라이카시네마(000072) 를 2 초 간격으로 3 회 조회한 결과입니다.
시도1 → 200 OK
시도2 → 503 DTRYX_SEATS_FAILED
시도3 → 200 OK
극장·브랜드·회차 수와 상관이 없습니다. 2026-09-17 21:09 KST 에 서울 7 개관을 하나씩 조회하고, 같은 시각 업스트림 직접 호출 결과와 나란히 둔 것입니다.
| 극장 | CinemaCd | BrandCd | 업스트림 회차 | /api/dtryx/seats |
|---|---|---|---|---|
| 아트하우스모모 | 000067 | indieart | 0 | 200 |
| 아리랑시네센터 | 000088 | etc | 0 | 200 |
| 낭만극장 | 000113 | etc | 0 | 200 |
| 더숲아트시네마 | 000065 | indieart | 0 | 503 |
| 에무시네마 | 000069 | indieart | 0 | 503 |
| 허리우드클래식 | 000115 | etc | 0 | 503 |
| 라이카시네마 | 000072 | spacedog | 1 | 503 |
회차 0 인 극장이 양쪽에 다 있고, 회차가 있는 라이카시네마가 실패합니다. 브랜드도 섞여 있습니다.
전 극장이 실패하면 지역 조회 전체가 503 이 됩니다. 같은 날 21:00 경에는 서울 7 개관, 경기 3 개관이 모두 실패해 아래처럼 응답했습니다.
GET /api/dtryx/seats?region=서울&playDate=20260917
→ 503 DTRYX_SEATS_FAILED
"모든 극장 조회에 실패했습니다: 더숲아트시네마, 아트하우스모모, 에무시네마,
라이카시네마, 아리랑시네센터, 낭만극장, 허리우드클래식"
21:05 이후로는 대체로 회복되어 실패 극장이 0~1 곳으로 줄었습니다. 시간대에 따라 실패율이 크게 달라집니다.
같은 시각 업스트림은 정상입니다. 로컬에서 동일 파라미터로 직접 호출한 응답 시간입니다.
에무시네마 0.06s 아리랑시네센터 0.05s
라이카시네마 0.03s 헤이리시네마 0.04s
더숲아트시네마 0.04s 자유로자동차극장 0.03s
→ 6/6 성공
/api/dtryx/movies 는 같은 상황에서 원인을 그대로 노출합니다. seats 는 극장별 실패를 failedCinemas 로 모아 놓기 때문에 이 메시지가 보이지 않습니다.
GET /api/dtryx/movies?cinemaCode=000069
→ 500 DTRYX_NOW_SHOWING_FAILED "디트릭스 API 호출 시간 초과"
환경 정보
- daiso CLI:
v1.2.1 - 엔드포인트:
https://mcp.aka.page(daiso health는ok) - 확인 시각: 2026-09-17 20:59 ~ 21:10 KST
/api/dtryx/cinemas는 외부 호출이 없어 항상 정상입니다.seats와movies만 영향을 받습니다.
검토해 본 가능성
원인을 좁히려고 확인한 것들입니다. 모두 해당하지 않아 보여 같이 남깁니다.
- 동시성: 극장 1 곳만 조회해도 실패합니다. 지역 조회의 병렬 호출 때문은 아닙니다.
- 업스트림 지연: 직접 호출이 0.03~0.06 초로 일정합니다.
- 빈 응답 처리: 회차 0 인 극장이 성공하기도 실패하기도 합니다.
- 엣지 캐시: 쿼리를 바꿔 캐시 키를 우회해도 결과가 같습니다.
- 특정 브랜드/극장:
indieart,etc,spacedog모두에서 발생합니다.
api.dtryx.com 이 비표준 포트 :30443 을 쓰는 점이 배포 환경과 관련이 있을지 궁금합니다. 다만 대부분의 시간대에는 정상 동작하므로 포트가 막혀 있다고 보기는 어려워, 확신하지는 못했습니다.
제안
원인 파악과 별개로 완화할 수 있는 부분이 있어 보입니다.
- 멱등 GET 이므로 극장별 호출에 짧은 재시도를 한 번 두면 간헐 실패가 대부분 흡수될 것 같습니다. 업스트림이 0.05 초 수준이라 비용도 크지 않습니다.
- 전 극장 실패 시 503 대신, 200 과 함께
failedCinemas로 돌려주는 선택지도 있을 것 같습니다. 부분 실패와 전체 실패가 다른 형태로 나오다 보니 호출 쪽에서 분기가 갈립니다.
필요하시면 재시도 쪽으로 PR 준비해 보겠습니다.
Activity
fix: 디트릭스 호출을 표준 포트로 변경
bgmbgm94 commentedon Sep 21, 2026
2026-09-21 09:2x KST 에 다시 측정했습니다. 증상이 이어지고 있고, 처음 제보 때보다 실패가 잦아졌습니다.
배포본 경유와 로컬 직접 호출을 같은 시간대에 나눠 재어 봤습니다. 대상은 라이카시네마(
spacedog/000072) 한 곳으로 고정했습니다.GET /api/dtryx/seats?cinemaCode=000072(mcp.aka.page)https://api.dtryx.com직접https://api.dtryx.com:30443직접참고로 2026-09-17 저녁에 같은 방식으로 쟀을 때는 7/10 이었습니다. 시간대에 따라 실패율이 크게 움직입니다.
로컬에서는 두 포트 모두 실패가 없어서, 업스트림 자체보다는 배포 환경에서 나가는 호출 쪽 문제로 보입니다. 다만 이건 관측이고 인과를 확인한 것은 아닙니다.
앞서 적었던 가능성들은 그대로 해당하지 않습니다. 극장을 한 곳만 지정해도 실패하고(동시성 아님), 업스트림 응답은 0.03~0.06 초로 일정하며(지연 아님), 회차 0 인 극장이 성공하기도 실패하기도 합니다(빈 응답 처리 아님).
원인으로 추정한 부분에 대해 #188 로 변경을 올려 두었습니다. 디트릭스만 비표준 포트(
:30443)를 쓰고 있었는데 같은 호스트의 표준 포트에서도 응답이 동일해서, 표준 포트로 바꾸는 내용입니다. 다만 로컬에서 재현이 되지 않아 그 변경이 이 문제를 해결하는지는 저도 확인하지 못했습니다. 배포하신 뒤에 실패가 줄어드는지 봐 주시면 좋겠습니다.fix: 디트릭스 호출을 표준 포트로 변경 (#188)
hmmhmmhm commentedon Oct 6, 2026
디트릭스에 중계 경로와 자동 경로 선택을 적용했습니다(#235). 제보하신 라이카시네마 3회와 서울 7개관 조회에서 실패 없이 정상 응답을 확인했습니다. 상세히 확인해 주셔서 감사합니다.