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
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
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
Footnotes
Airgapped installations of Posit Package Manager do not currently support PyPI.↩︎