# Sizing

---

## Overview

Proper resource planning is crucial for optimal performance of your JFrog Platform deployment. The sizing requirements depend on various factors including usage patterns, number of artifacts, and enabled features.

---

## Key Sizing Factors

### Artifactory Considerations
* **Request Volume** - Number of concurrent downloads/uploads
* **Storage Requirements** - Total artifact storage needed
* **Repository Count** - Number and type of repositories
* **Build Integration** - CI/CD system integration load

### Security (Xray) Considerations
* **Scan Volume** - Number of artifacts being scanned
* **Policies** - Number of active security policies
* **Watch Complexity** - Number and complexity of watches

### Federation & Replication
* **Push/Pull Replication** - Number of repositories being replicated
* **Federation Scale** - Number of federated sites and repositories
* **Network Bandwidth** - Available bandwidth between sites

---

## Sizing Templates

### T-Shirt Sizing

JFrog provides a set of predefined sizing templates to help you get started. These templates are designed to accommodate different use cases and loads, from small development environments to large enterprise deployments.

| Template     | Description                                                        |
|--------------|--------------------------------------------------------------------|
| **Small**    | Suitable for development/testing environments. Not for production! |
| **Medium**   | Recommended for small production deployments                       |
| **Large**    | Designed for medium enterprise production deployments              |
| **Xlarge**   | Designed for large enterprise-scale production deployments         |
| **2xlarge**  | Designed for large enterprise-scale production deployments         |

The following tables provide general guidelines for expected load handling capacity of each sizing template.

### Artifactory Sizing Templates Criteria

| Template    | Requests Per Minute (1) | Concurrent Connections (2) | Recommended Use Case  |
|-------------|-------------------------|----------------------------|-----------------------|
| **small**   | Up to 6000              | Up to 100                  | Development/Testing   |
| **medium**  | Up to 50,000            | Up to 500                  | Small Production      |
| **large**   | Up to 100,000           | Up to 1,200                | Medium Enterprise     |
| **xlarge**  | Up to 200,000           | Up to 3,000                | Large Enterprise      |
| **2xlarge** | Up to 500,000           | Up to 6,000                | Large Enterprise      |

(1) **Requests Per Minute (RPM):** Represents the total number of HTTP requests handled collectively by all nodes in the Artifactory cluster within a minute.

(2) **Concurrent Connections:** Refers to the total number of active HTTP threads serving requests across the entire Artifactory cluster at any given moment.

* Sizing can grow with additional replicas in the cluster (horizontal scaling)

### Xray Sizing Templates Criteria

| Template    | Number of Indexed Artifacts                                        |
|-------------|--------------------------------------------------------------------|
| **small**   | Up to 100k indexed artifacts, and 1K artifacts/builds per day      |
| **medium**  | Up to 1M indexed artifacts, and 10k artifacts/builds per day       |
| **large**   | Up to 2M indexed artifacts, and 20k artifacts/builds per day       |
| **xlarge**  | Up to 10M indexed artifacts, and 50k artifacts/builds per day      |
| **2xlarge** | More than 10M indexed artifacts, and 50k artifacts/builds per day  |

* Sizing can grow with additional replicas in the cluster


### Notes

These numbers are approximate guidelines and actual performance may vary based on:
* Types and numbers of artifacts being stored and transferred
* Network capacity and latency
* Storage performance
* Security scanning requirements
* Number and complexity of repositories

For more system requirements and sizing recommendations, consult the [JFrog Platform System Requirements](https://www.jfrog.com/confluence/display/JFROG/System+Requirements) documentation.

### Helm Charts Sizing Templates

The JFrog Platform Helm chart provides [predefined sizing templates](https://github.com/jfrog/charts/blob/master/stable/jfrog-platform/sizing) to help you get started.

Choose a template based on your use case and expected loads.

**Note:** These templates are baselines, and you are encouraged to adjust them based on your specific needs and real usage patterns.

### Terraform Example

See an example in the [JFrog Charts repository](https://github.com/jfrog/charts/tree/master/examples/terraform/jfrog-platform-aws-install), for a Terraform
configuration that creates the necessary AWS infrastructure and services required to run the JFrog Platform and follow the guidelines above.

You can choose the [sizing while provisioning the infrastructure](https://github.com/jfrog/charts/tree/master/examples/terraform/jfrog-platform-aws-install#jfrog-platform-sizing) and deploy the JFrog Platform to it,
so it's ready to serve the required sized organization.

---

## Infrastructure Sizing

With each sizing, you will need to consider the underlying infrastructure to match the required resources.

See recommended infrastructure sizing for the JFrog Platform on 

##### [AWS →](aws)
##### [Azure →](azure)
##### [GCP →](gcp)

**NOTE:** If you are deploying on-premise, you can use the same sizing templates as a reference for your hardware requirements.

## Additional Sizing Factors

The proposed sizings in this document are set as a baseline. There are additional factors that impact the actual resources usage such as:

#### Artifactory and Access
   - Total number of repositories
   - Total number of projects
   - Total number of artifacts
      - Per instance
      - Per repository
   - Size of a repository (number of artifacts)
   - Total number of users
   - Total number of groups and their sizes
   - Total number of replications, federations and distributions

#### Xray
   - Total number of indexed (scanned) resources
   - Total number of Xray workers

#### Distribution
   - Total number of release bundles
   - Total number of files in a release bundle
   - Frequency of distribution
   - Total number of distribution targets

#### Storage Specifications
   - Local disk spec (IOPS, Throughput)
   - Binarystore

These factors will impact the JFrog Platform's performance and should be used as additional factors when choosing a sizing.

Custom sizing can be set to support even higher values where needed by customizing the [Helm Chart's sizings](https://github.com/jfrog/charts/blob/master/stable/jfrog-platform/sizing).
