Package Manager Architectures

Using Package Manager on a single server

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

  • Multiple users to install packages from Package Manager

graph LR
u1(User)
u2(User)
b1(RStudio Session)
b2(Jupyter Session)
connect(Connect)
ppm(Package Manager)

u1---b1
u2---b2
b1---ppm
b2---ppm
connect---ppm

subgraph server[Linux Server]
ppm
end


classDef server fill:#FAEEE9,stroke:#ab4d26
classDef product fill:#447099,stroke:#213D4F,color:#F2F2F2
classDef session fill:#7494B1,color:#F2F2F2,stroke:#213D4F
classDef element fill:#C2C2C4,stroke:#213D4F

class server server
class connect,b1,b2,ppm product
class u1,u2 element

Using Package Manager as a cluster

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

  • Multiple users to install packages from Package Manager
  • High availability to provide redundancy

Requirements to support this architecture:

  • Application data must be stored on an external shared file server (typically an NFS server)
  • Application metadata must be stored on an external PostgreSQL database server

flowchart LR
u1(User)
u2(User)
b1(RStudio Session)
b2(Jupyter Session)
lb(Load Balancer)
connect(Connect)
ppm1(Package Manager)
ppm2(Package Manager)
lb(Load Balancer)
pg(Postgres)
nfs(Shared Storage)

u1---b1
u2---b2
b1---lb
b2---lb
connect---lb

subgraph server1 [Linux Server]
ppm1
end

subgraph server2 [Linux Server]
ppm2
end

lb---server1
lb---server2
server1-.-pg
server2-.-pg
server1-.-nfs
server2-.-nfs

classDef server fill:#FAEEE9,stroke:#ab4d26
classDef product fill:#447099,stroke:#213D4F,color:#F2F2F2
classDef session fill:#7494B1,color:#F2F2F2,stroke:#213D4F
classDef element fill:#C2C2C4,stroke:#213D4F
classDef req fill:#72994E,stroke:#1F4F4F

class server1,server2 server
class ppm1,ppm2,connect,b1,b2 product
class lb session
class u1,u2 element
class pg,nfs req

Package Manager Networking

An additional architectural consideration for Package Manager is whether it will be operated with connectivity to the Posit Package Service. For installations where such connectivity is not possible (e.g., airgapped or classified networks), Package Manager provides an offline downloader which performs bulk downloads of data from the Package Service.1

With connectivity

flowchart LR

ppm(Package Manager)
sync(Posit Package Service)

sync --- ppm

subgraph vpc[Private Network]
    ppm --- Connect
    ppm --- Workbench
end

pypi --- sync
cran --- sync
bioc --- sync

classDef server fill:#FAEEE9,stroke:#ab4d26
classDef product fill:#447099,stroke:#213D4F,color:#F2F2F2
classDef session fill:#7494B1,color:#F2F2F2,stroke:#213D4F
classDef element fill:#C2C2C4,stroke:#213D4F

class vpc server
class Connect,Workbench,ppm,sync,pypi,cran,bioc product


No connectivity

flowchart TD

ppm(Package Manager)
sync(Posit Package Service)
dl0(offline downloader)
dl1(downloaded files)


subgraph vpc[Private Network]
    direction LR
    dl1---ppm
    ppm --- Connect
    ppm --- Workbench
end

subgraph ext[ ]
    direction LR
    sync --- dl0
    cran --- sync
    bioc --- sync
end

classDef server fill:#FAEEE9,stroke:#ab4d26
classDef product fill:#447099,stroke:#213D4F,color:#F2F2F2
classDef session fill:#7494B1,color:#F2F2F2,stroke:#213D4F
classDef element fill:#C2C2C4,stroke:#213D4F
classDef extnetwork fill:#FFFFFF,stroke:#FFFFFF

class vpc server
class ext extnetwork
class Connect,Workbench,ppm,sync,pypi,cran,bioc,dl0,dl1 product

Back to top

Footnotes

  1. Airgapped installations of Posit Package Manager do not currently support PyPI.↩︎