Performance on test vs. production systems
Last updated
Last updated
PRE systems are only suitable for functional tests, e.g., testing individual use cases of the integration. Fulfillmenttools generally does not allow load tests on these PRE environments (please see for details). The fulfillmenttools platform scales to zero if no API traffic is present for some time. Scaling to zero applies to both the REST API and the GraphQL API. In this state, zero instances are ready to serve API traffic. The state of the platform is now cold.
On a cold system, the whole platform scales to zero. On the first API request (e.g., creating an Order via the REST API), the platform performs a cold start and starts the services required to serve the API. The fulfillmenttools platform is warm, and the API responds quickly to requests.
The cold start will block the first request until the API is ready to serve traffic. Starting the API gateway instances takes up to 30 seconds to complete. Since the fulfillmenttools platform is a distributed system and uses asynchronous events to communicate within the platform, this event distribution is also affected by cold starts. Nevertheless, if there is constant traffic on a tenant, cold starts are only encountered when resources are scaled up.
Generally, test systems scale similarly to production systems once in a warm state. The fulfillmenttools platform scales based on parallel concurrent requests and resource usage (CPU, memory). See for details. Nevertheless, the max scaling configuration is different from production systems.
The API gateways (HTTP and GraphQL) are always warm on production systems. Therefore, no cold starts are expected on the first request. These measures reduce API latency, and events are delivered promptly.
Typically, a production system has some activity (orders coming in, checkout options requests, pick jobs being picked, etc.). These activities also keep our asynchronous event processing services warm.
The production environment configuration ensures the elasticity and scalability of both the compute resources of our backend and database systems.