건축

    소개

    GAMS 슬롯 무료체험 서버은 웹 인터페이스를 제공하는 컨테이너화된 애플리케이션 모든 최신 웹 브라우저("클라이언트")에서 액세스할 수 있습니다. WebSocket을 통한 통신을 지원합니다. 구성되어 있습니다 Docker 컨테이너에서 실행되는 여러 구성 요소 중 하나입니다. 그들은 Docker 네트워크를 통해 서로 통신합니다. 데이터 Docker 볼륨에 보관됩니다.

    GAMS 슬롯 무료체험 서버 아키텍처

    위 그림은 모든 구성 요소를 보여줍니다. 우리는 아래에서 이에 대해 자세히 논의하세요.

    샤이니프록시

    샤이니프록시은 Shiny 애플리케이션을 생성하기 위해 개발된 오픈 소스 프로젝트 Docker 컨테이너에서 실행됩니다(슬롯 무료체험 Server에서는맞춤 버전이 프로젝트의). 인증할 수 있는 옵션을 제공합니다. REST API를 통한 사용자(인증 프록시에서 구현됨) 아래에 설명된 컨테이너).
    각 사용자마다 새로운 Docker 컨테이너가 생성됩니다. 슬롯 무료체험 애플리케이션에 대한 액세스를 요청합니다. 모든 트래픽 그런 다음 이러한 컨테이너의 (HTTP/WebSocket)이 전달됩니다. ShinyProxy를 통해 클라이언트에. 이 아키텍처 결과 자체 컨테이너에서 실행되는 각 슬롯 무료체험 세션에서. Docker API에 대한 요청은 소켓을 통해 프록시됩니다. 프록시. 생성된 컨테이너의 로그(stdout/stderr) ShinyProxy는 Docker 볼륨에 기록됩니다.

    인증 프록시

    인증 프록시는 다음에서 사용되는 REST API를 제공합니다. 사용자를 인증하는 ShinyProxy 컨테이너입니다. 그런 다음 인증 요청이 GAMS로 전달됩니다. 엔진 REST API(사용자 관리는 GAMS 엔진에서 수행됨) 인증이 성공하면 사용자 그룹은 GAMS 엔진에서 쿼리하여 ShinyProxy로 반환 컨테이너.

    이 REST API는 등록/업데이트에도 사용할 수 있습니다. 슬롯 무료체험 애플리케이션 또는 슬롯 무료체험 업로드/다운로드용 시나리오.

    소켓 프록시

    소켓 프록시는 Docker에 대한 요청을 거부하는 데 사용됩니다. ShinyProxy가 액세스할 필요가 없는 API 엔드포인트 (예: 볼륨 API) 소켓 프록시는 ShinyProxy 컨테이너에서 액세스할 수 있습니다( 내부 Docker 네트워크).

    슬롯 무료체험 관리자 패널

    슬롯 무료체험 관리 패널 컨테이너는 다음 사용자만 액세스할 수 있습니다. 관리자(ShinyProxy의 인증 시스템에 의해 보장됨). 그것 새로운 슬롯 무료체험 앱을 등록하는 데 사용할 수 있습니다. 기존 항목을 업데이트하거나 제거합니다. 읽기/쓰기 액세스 권한이 있습니다. 앱 데이터를 쓰기 위해 Docker 볼륨에 시나리오를 저장하는 데이터베이스. GAMS와 통신합니다 모델을 등록/업데이트/제거하는 엔진입니다.

    미로 UI

    슬롯 무료체험 UI 컨테이너는 슬롯 무료체험 UI를 호스팅합니다. 앱 UI가 Docker 볼륨에서 구성을 읽습니다. 컨테이너에는 읽기 전용 액세스 권한이 있습니다. 모든 시나리오 데이터는 PostgreSQL 데이터베이스에 저장됩니다. 슬롯 무료체험 UI 컨테이너는 다음과 같습니다. 기반으로R/샤이니및 사용 클라이언트와 통신하기 위한 웹소켓. 정적 리소스(JS/CSS/images/...)는 HTTP를 통해 전송됩니다. 그것 GAMS 엔진과 통신하여 작업을 실행하고 검색합니다. 결과.

    데이터베이스

    PostgreSQL 데이터베이스는 슬롯 무료체험 시나리오를 저장하는 데 사용됩니다. 데이터. 새로운 Postgres 스키마 및 읽기/쓰기 권한이 있는 사용자 이 스키마에 대한 액세스는 각 슬롯 무료체험에 대해 생성됩니다. 신청. 새로운 슬롯 무료체험 UI 컨테이너가 생성되면 이 사용자의 데이터베이스 자격 증명은 다음과 전달됩니다. 환경 변수를 통한 컨테이너. 이는 다음을 의미합니다. 슬롯 무료체험 UI 컨테이너가 손상된 경우 이 슬롯 무료체험 앱에 액세스할 수 있습니다.