Generic Architectures for Posit Package Manager

The architectures below represent general architectures for Posit Package Manager, providing a mental model for different deployment options and the requirements to support each variation.

Specific reference architectures organized by target environment are also detailed within this chapter of the Administration Guide, discoverable using the left navigation pane.

Target environments

Posit Package Manager can be deployed on-premises or within a cloud environment.

Package Manager on a single server

In this configuration, Package Manager is installed on a single Linux server and enables:

  • Users to install Python and R packages from Package Manager.
  • Deployed content to install Python and R packages from Package Manager.

Generic architecture

The diagram below shows both users and deployed content downloading packages from Package Manager. These are representative clients, as Package Manager is used to provide packages to any client requiring Python or R packages.

flowchart LR
    subgraph Clients
        U1[User]
        U2[User]
        C[Connect]
    end

    subgraph Sessions
        R[RStudio Session]
        J[Jupyter Session]
    end

    subgraph Server[Linux Server]
        PM[Package Manager]
    end

    U1 --- R --- PM
    U2 --- J --- PM
    C --- PM

Package Manager in a load-balanced cluster

EnhancedAdvanced

In this configuration, Package Manager is installed on two or more Linux servers and enables:

  • Users to install Python and R packages from Package Manager.
  • Deployed content to install Python and R packages from Package Manager.
  • High availability to provide redundancy.

Requirements

  • Files must be stored on external shared storage (typically an NFS server or S3).
  • The database provider must be an external PostgreSQL database server.

Generic architecture

The diagram below shows both users and deployed content downloading packages from Package Manager. These are representative clients, as Package Manager is used to provide packages to any client requiring Python or R packages.

flowchart LR

    U1[User]
    U2[User]

    subgraph Sessions
        R[RStudio Session]
        J[Jupyter Session]
    end

    subgraph LB[Load Balancer]
    end

    subgraph Linux Server
        P1[Package Server]
    end

    subgraph Linux Server
        P2[Package Server]
    end

    C[Connect]
    PG[Postgres]
    SS[Shared Storage]

    U1 --- R --- LB --- P1 -.- PG & SS
    U2 --- J --- LB --- P2 -.- PG & SS
    C --- LB

Package Manager in a Kubernetes cluster

Advanced

In this configuration, Package Manager is installed in a Kubernetes cluster using a Posit-maintained Helm chart.

This enables:

  • Users in Python and R development sessions and deployed Python and R content to install packages from Package Manager.
  • Replica redundancy for multiple instances of the Package Manager service Pod.

Requirements

  • Files must be stored on external shared storage (typically an NFS server or S3) (can be inside or outside Kubernetes).
  • The database provider must be an external PostgreSQL database server (can be inside or outside Kubernetes).

Generic architecture

The diagram below shows both users and deployed content downloading packages from Package Manager. These are representative clients, as Package Manager is used to provide packages to any client requiring Python or R packages.

flowchart LR
    subgraph K8C[Kubernetes Cluster]
        IG[Ingress Controller]
        PM[Package Manager]
        IG --- PM
    end

    subgraph ST[" "]
        PG[Postgres]
        SS[Shared Storage]
    end

    U1[User]
    U2[User]
    C[Connect]
    RS[RStudio Session]
    JS[Jupyter Session]
    
    U1 --- RS --- IG
    U2 --- JS --- IG
    C --- IG
    PM -.- PG & SS

Package Manager networking

Package Manager requires outbound internet access to the Posit Package Service to receive package updates. The Posit Package Service is an online service located at https://rspm-sync.rstudio.com. For installations where such connectivity is not possible, even through an outbound proxy, (e.g., air-gapped or classified networks), Package Manager provides an offline downloader which performs bulk downloads of data from the Package Service.

With connectivity

graph LR
    CR["CRAN"]
    B["Bioconductor"]
    PP["PyPI"]
    PS["Posit Package Service"]

    subgraph "Private Network"
        PM[Package Manager]
        C[Connect]
        WB[Workbench]
        PM --- C
        PM --- WB
    end
    
    CR --- PS
    B --- PS
    PP --- PS
    PS --- PM

No connectivity

Advanced

flowchart LR
    subgraph SG[" "]
        CR["CRAN"]
        B["Bioconductor"]
        PP["PyPI"]
        PS["Posit Package Service"]
        OD["Offline downloader"]

        CR --- PS
        B --- PS
        PP --- PS
        PS --- OD
    end

    subgraph "Private Network"
        PM[Package Manager]
        C[Connect]
        WB[Workbench]
        PM --- C
        PM --- WB
    end
    
    OD ~~~ PM

Back to top