AWS, 사내 포털에 SageMaker MLflow UI 임베드하는 가이드 공개
AWS가 머신러닝 팀이 사전 서명 URL이나 AWS 관리 콘솔 접근 없이 북마크 가능한 단일 URL로 MLflow 웹 UI 전체에 접근하도록 돕는 맞춤 포털 구축 가이드를 AWS ML 블로그에 공개했다. 사용자는 한 번만 인증하면 사내 SSO 연동 포털 안에서 다른 내부 도구와 함께 실험 추적 화면을 쓸 수 있다.
배경에는 확장성 문제가 있다. 팀이 커지면 사전 서명 URL 배포는 수십 명 규모의 데이터 과학자에게 확장되지 않고, 개인마다 관리 콘솔 접근을 부여하는 방식은 관리자에게 접근 통제 운영 부담을 키운다. SSO 연동 내부 포털을 쓰는 팀은 MLflow 실험 추적을 다른 내부 애플리케이션과 함께 하나의 북마크 가능한 URL로 묶고자 한다.
맞춤 포털을 쓰면 신규 팀원의 온보딩 시간을 줄이고 접근 관리를 단순화하며 내부 도구 전반에서 일관된 경험을 줄 수 있다. CI/CD 파이프라인과 자동화 스크립트도 같은 프록시 엔드포인트를 통해 MLflow REST API를 프로그램적으로 호출할 수 있으며, 이때 SigV4 인증은 뒤에서 자동으로 처리된다.
아키텍처는 React 웹 애플리케이션이 iframe으로 SageMaker AI MLflow Apps UI를 임베드하고, 그 뒤를 아마존 EC2에서 동작하는 Flask 리버스 프록시가 받치는 구조다. 전체는 네 개의 구성요소가 함께 작동한다.
첫째, 애플리케이션 로드 밸런서(ALB)는 사용자에게 단일 진입점 역할을 한다. HTTPS 종료와 백엔드 라우팅을 처리하고 기존 DNS 및 인증서 인프라와 연동되며, 포털을 위한 안정적인 공개 URL을 제공한다. 다만 이번 구현은 ALB에 HTTP를 사용하므로, 프로덕션 환경에서는 AWS Certificate Manager(ACM) 인증서로 HTTPS를 추가하는 것이 권장된다.
둘째, React 프런트엔드 포털은 브랜딩된 진입점을 제공한다. MLflow 추적 UI를 iframe으로 임베드하고 조직 브랜딩과 추가 도구의 통합 지점 역할을 하며, 정적 파일은 Flask 프록시를 통해 /app 경로에서 제공된다.
셋째, Flask 리버스 프록시 서비스는 프런트엔드와 MLflow 백엔드 사이에서 인증을 담당해 사용자가 AWS 자격 증명을 직접 다루지 않도록 한다. 파이썬 기반 Flask 애플리케이션이 들어오는 요청(UI 경로와 REST API 호출)을 가로채고, 전용 IAM 역할을 맡아 얻은 임시 자격 증명으로 각 요청을 SigV4로 서명한 뒤 SageMaker AI MLflow Apps 엔드포인트로 전달한다. 응답에서는 절대 MLflow URL을 상대 경로로 재작성하고 X-Frame-Options 헤더를 제거해 UI가 iframe 안에서 정상 렌더링되도록 한다.
넷째, SageMaker AI MLflow 앱은 완전관리형이라 프로비저닝하거나 패치할 서버가 없다. 런·메트릭·파라미터·아티팩트를 포함한 실험 추적과 모델 버전 관리 및 수명주기를 위한 모델 레지스트리를 제공한다.
요청 흐름은 다음과 같다. 사용자가 브라우저에서 ALB URL을 열면 ALB가 Flask 프록시가 도는 EC2 인스턴스로 요청을 보내고, 프록시는 /app 경로에서 React 대시보드를 제공한다. React 앱은 /mlflow-ui/를 가리키는 iframe으로 MLflow UI를 로드하며, 이후 iframe이 보내는 모든 요청은 Flask 프록시를 거쳐 SigV4 서명 후 서버리스 MLflow 엔드포인트로 전달된다.
배포는 AWS CDK로 전체 스택을 한 번에 올린다. 단일 deploy.sh 스크립트가 CDK 스택 배포와 서버리스 MLflow 앱 생성을 함께 수행한다. 필요한 환경으로는 AWS CLI v2.34.5 이상, 로컬의 Python 3.13 이상, AWS CDK v2(aws-cdk-lib 2.243.0 이상), Node.js 18.x 이상, 그리고 대상 리전의 Ubuntu 24.04 LTS AMI 등이 요구된다.