> For the complete documentation index, see [llms.txt](https://docs.fulfillmenttools.com/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fulfillmenttools.com/documentation/getting-started/preparation-for-go-live/performance-on-test-versus-production.md).

# Performance on test versus production

As a customer of fulfillmenttools, you'll automatically have access to two environments:

1. Pre-production: The `projectId` would be `example-pre`
2. Production: The `projectId` would be `example-prd`

{% hint style="info" %}
Note that a `projectId` and a `{YOUR_TENANT_NAME}` are different. `{YOUR_TENANT_NAME}` includes ocff- whereas a `projectId` doesn't. For example, `{YOUR_TENANT_NAME}-example-pre` and `ocff-projectId-example-pre` are the same.
{% endhint %}

## Pre-production (PRE)

Pre-production (PRE) environments are suitable for functional testing of integration use cases. fulfillmenttools doesn't allow load testing in pre-production environments. For more information, refer to the [load testing guidelines](/documentation/getting-started/preparation-for-go-live/load-testing.md).

{% hint style="info" %}
In specific cases, fulfillmenttools can temporarily create a production-like environment on pre-production with similar scaling properties and database connection configurations. To request this, contact us through the [service portal](https://ocfulfillment.atlassian.net/servicedesk/customer/portals).
{% endhint %}

### Cold starts

To conserve resources, pre-production environments scale to zero when no API traffic is present for a period of time. This applies to both the REST and GraphQL APIs. When fulfillmenttools is in this idle state, it's considered "cold."

The first API request to a cold system, such as creating an order, triggers a cold start. During a cold start, fulfillmenttools initiates the necessary services to serve the API. This initial request is blocked until the API gateway instances are ready, which can take up to 30 seconds. Once the services are running, fulfillmenttools becomes "warm," and subsequent API requests respond quickly.

Because fulfillmenttools is a distributed system that uses asynchronous events for internal communication, this event distribution is also affected by cold starts. If a tenant experiences constant traffic, cold starts typically occur only when resources are scaled up.

### Scaling

Once in a warm state, pre-production scales similarly to production environments based on parallel concurrent requests and resource usage, such as CPU and memory. Details on this behavior are available in the [Limits and scaling article](/documentation/about-fulfillmenttools/limits-and-scaling.md). However, the maximum scaling configuration in pre-production differs from that in production.

## Production (PRD)

Production environments (PRD) are configured for high availability and performance. On production, the REST API and GraphQL API gateways are always "warm," meaning no cold starts occur on the first request. This configuration minimizes API latency and ensures that events are delivered promptly.

Typical activities in a production system, such as incoming orders or pick job processing, keep the asynchronous event processing services warm. The production environment configuration ensures the elasticity and scalability of both the backend compute resources and the database systems.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.fulfillmenttools.com/documentation/getting-started/preparation-for-go-live/performance-on-test-versus-production.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
