Skip to content

Single Server

Posit Package Manager can be configured to run on AWS in a single server configuration, 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. If more compute is needed or high availability is a requirement, consider the Kubernetes or Load Balanced reference architectures for Posit Package Manager.

Architecture Overview#

This implementation of Posit Package Manager includes the following components:

  • A single Amazon Elastic Compute Cloud (EC2) instance running Package Manager.
  • The local Amazon Elastic Block Store (EBS) provisioned for the EC2 instance.
  • 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 EBS volume associated with this EC2 instance.

Architecture Diagram#

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

Nodes#

This architecture utilizes a single EC2 instance running Posit Package Manager. During our performance tests, we used a m6i.xlarge instance (4 vCPUs, 16 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 the local EBS storage provisioned for the EC2 instance. We have used a 500 GiB General Purpose SSD (gp3) volume. You can find more information about file storage in the File Storage section.

Networking#

The EC2 instance is placed in a public subnet. 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 Security Groups, 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 Architecture Frequently Asked Questions page for more information for the general FAQ.