CDN 이나 리버스 프록시를 앱 앞에 두면 실제 한도는 서버가 아니라 프록시가 결정. 서버가 파일당 2 GiB 까지 허용해도 요청은 프록시를 먼저 거침.

프록시의 두 한도

아래 숫자는 널리 사용하는 CDN 프록시의 기본 한도 예. 실제 값은 프록시와 요금제마다 다르므로 직접 확인 필요.

한도서버 설정프록시 기본 한도 예초과 시
요청 본문파일당 2 GiB (GEO_MLOPS_DATASET_MAX_UPLOAD_BYTES)100 MB413: 프록시가 반환한 HTML 오류 페이지. 요청이 서버에 도달하지 않음
응답 대기없음100초524(프록시에 따라 504): 프록시가 응답 대기를 중단함. 서버는 끝까지 처리함

앞단 프록시의 두 한도: 32 MiB·50 MiB 조각으로 나눈 업로드는 프록시를 통과하고 서버가 조각 병합. 100 MB 를 넘는 요청은 프록시가 413 으로 차단해 서버에 도달하지 않음. 100초를 넘는 요청은 프록시가 524 를 반환하지만 서버는 끝까지 처리

오류 발생 시 먼저 본문 형식 확인. JSON(/api/v1 은 {"error_id", "code", "message", "detail"}, 그 밖의 경로는 {"detail": …} 등)이면 서버가 반환한 것, HTML 오류 페이지면 프록시가 반환한 것(오류 형식).

524·504 는 "실패" 가 아니라 "클라이언트가 결과를 수신하지 못했다" 는 뜻. 서버 측에는 이미 반영되어 있을 수 있음. 액세스 로그에 없다고 해서 요청이 도착하지 않은 것도 아님.

플랫폼이 한도 이하로 분할하는 경로

아래 경로는 요청을 한도보다 작게 분할해 전송하므로 프록시 뒤에서도 동작.

경로한 번에 전송하는 크기
웹 화면·CLI 의 데이터셋 업로드(청크 세션)32 MiB 청크(웹 화면은 ZIP 과 32 MiB 를 넘는 파일을 분할하고, 나머지는 한 요청으로 전송). 전송이 끝나면 서버가 백그라운드에서 병합하고 압축을 해제하므로 응답이 바로 반환됨.
화면의 이미지 반입(docker save tar)32 MiB 청크
엣지 장비의 오프라인 파일 업로드청크당 최대 50 MiB
엣지 장비의 명령 대기(롱폴: 응답이 올 때까지 요청을 열어 두고 기다리는 방식)최대 30초(응답 한도보다 짧게)

대용량 데이터셋은 CLI 로

수천 개 파일은 브라우저 대신 클라이언트 CLI(geo-mlops-client, 서버 소스 디렉터리에서는 ./client)로 업로드. datasets upload-archive 는 파일들을 16 MiB 짜리 무압축 ZIP 묶음으로 만들고, 묶음마다 재개 가능한 청크 세션으로 전송. 전송에 실패한 청크는 자동으로 세 번까지 재전송.

  1. 로그인. 서버 주소와 테넌트는 한 번 입력하면 캐시.

    geo-mlops-client login [email protected] --base-url https://api.mlops.example.com --tenant DEMO
  2. 데이터셋 ID 와 업로드할 디렉터리(하위 폴더 포함) 지정. --skip-existing 은 이미 업로드된 파일 이름을 먼저 조회해 건너뜀.

    geo-mlops-client datasets upload-archive <DATASET_ID> ~/corpus --skip-existing \
        2>&1 | tee -a ~/upload.log
  3. 노트북 절전 등으로 명령이 중단되면 같은 명령을 다시 실행. --skip-existing 덕분에 중단된 지점부터 이어서 진행.

  • 진행 로그는 표준 오류로, 완료 후의 요약 JSON 은 표준 출력으로 출력.
  • 서버는 파일을 파일 이름(basename) 기준으로 저장. 다른 폴더에 같은 이름의 파일이 있으면 충돌하므로 명령이 전송 전에 경고.
  • 묶음 하나를 만들 임시 공간이 TMPDIR 에 필요. 부족하면 TMPDIR=/여유/경로 를 명령 앞에 지정.
  • datasets upload(파일 하나 = 요청 하나)는 청크로 나누지 않음. 프록시 한도(예: 100 MB)를 넘는 파일은 프록시에서 차단. 대용량 파일도 upload-archive 로 전송.

프록시 사용 시 기타 확인 사항

  • HTTPS 와 쿠키: 프록시가 HTTPS 를 종료하고 앱에 전달한다면 GEO_MLOPS_AUTH_COOKIE_SECURE=true(기본값) 유지. 앱은 --forwarded-allow-ips '*' 로 실행되어 프록시가 전달한 X-Forwarded-* 헤더를 신뢰. 앱 포트(10000)는 프록시 외에는 외부에서 접근할 수 없도록 방화벽으로 차단 필요.
  • MLflow Host 검사: 도메인으로 /mlflow 를 사용하면 GEO_MLOPS_MLFLOW_ALLOWED_HOSTS 에 그 도메인 추가(Docker Compose 로 설치 참고).
  • Alertmanager 웹훅: 프록시 뒤라면 웹훅 주소도 인터넷에 노출. GEO_MLOPS_ALERTMANAGER_WEBHOOK_TOKEN 반드시 설정. 비어 있으면 앱이 웹훅 요청을 거부해(503) 위조된 경보 주입 차단.
  • docker push: Docker 클라이언트는 이미지 레이어를 대용량 요청으로 전송. 프록시 한도(예: 100 MB)를 넘는 레이어는 프록시에서 차단될 수 있음. 대용량 이미지는 사내망에서 레지스트리에 직접 push 하거나, docker save 로 tar 를 만들어 이미지 반입으로 업로드.

다음: 폐쇄망 설치

2026-10-02 기준 플랫폼으로 작성

© MLOps Central Platform