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. 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 AWS Elastic Compute Cloud (EC2) instance running Package Manager.
- The local EBS storage 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#
Nodes#
This architecture utilizes a single EC2 instance running Posit Package Manager. During our performance tests, we used a t3.2xlarge
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 will store application data on the local EBS storage provisioned for the EC2 instance. 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.