Skip to content

Single Server

Posit Package Manager can be configured to run on a single server, without requiring any additional storage resources. The packages are fetched from the Posit Package Service, and the requests are processed and cached on the single server.

This architecture is designed to provide a simple, cost-effective way to run Package Manager for small teams or organizations.

This configuration is suitable to handle up to one million package downloads per month and is likely sufficient for most use cases.

Architecture Overview#

This implementation of Posit Package Manager includes the following components:

  • A single Azure Virtual Machine instance running Package Manager.
  • The local Azure Managed Disk storage provisioned for the Virtual Machine.
  • SQLite as the application database. Package Manager has built-in support for SQLite and does not require any additional application installation or configuration.

Because a standalone instance of Package Manager includes both the application data and the internal SQLite database, we recommend following your organization’s backup and retention strategies to maintain snapshots of the Managed Disks volume associated with this Virtual Machine.

Architecture Diagram#

Diagram of Package Manager configuration running in on a single server on Azure

Nodes#

This architecture utilizes a single Virtual Machine running Posit Package Manager. During our performance tests, we used a D8 v5 instance (8 vCPUs, 32 GiB Memory) running Ubuntu 22.04. Testing showcases this configuration can serve up to one million package installs per month, or 30,000 packages a day.

Note

Each Posit Package Manager user could be downloading dozens or hundreds of packages a day. There are also other usage patterns such as an admin uploading local packages or the server building packages for Git builders, but package installations give a good idea of what load and throughput this configuration can handle.

Refer to the Posit Package Manager Admin Guide for detailed information on system requirements and installation steps.

Database#

Posit Package Manager includes built-in support for SQLite and does not require any additional application installation or configuration. You can find more information about SQLite in the Database section.

Storage#

This architecture uses Azure Managed Disks for storage. We used a 128 GB (E10) Standard SSD Managed Disk for our performance tests.

Networking#

The EC2 instance is placed in a private virtual network. If you need to restrict access to who can download packages from Posit Package Manager this can be done by restricting network access (e.g. using firewalls, proxies, or a VPN). Refer to the Server Security and Auditing section for more information about server security settings.

Configuration Details#

No additional configuration is required for this architecture beyond the initial setup steps outlined in the installation steps.

Performance#

The Package Manager team conducts performance testing on this architecture. During our testing, we download packages concurrently on the CRAN, Bioconductor, and PyPI mirrors, simulating a load of 100 concurrent users and measuring the request throughput.

Based on our performance test results, the system’s response times meet acceptable criteria for the majority of users. The system is able to handle serving packages without any degradation in performance over sustained load.

These tests demonstrate the capability of Package Manager to serve package downloads to users. However, it is important to note there are different usage patterns that could impact performance. If your team is primarily serving packages from mirrored and curated repositories, our testing results are likely applicable. However, if your team has many Git-based packages building with Git Builders or package blocking and vulnerability reporting, you may want to consider one of our other architectures.

FAQ#

See the Frequently Asked Questions page for more information for the general FAQ.