A powerful experimentation program requires three things:

* A robust identity resolution system.
* Access to a store of user metadata.
* Access to behavioral cohorts.

Amplitude Experiment provides all three. To get the most out of these capabilities, send a request to Amplitude Experiment's endpoint for each user.

## Implementation recommendations

Follow these recommendations for the best user experience:

* **Use local defaults**. All Amplitude SDKs support local defaults for experiments. Use local defaults for all experiments to handle the rare case when Amplitude's systems are unavailable.
* **Use local storage (cache) on Client SDKs**. Amplitude's client-side SDKs store user variants in local storage, which reduces the number of network calls from the client. For more information, refer to [performance and caching](https://www.docs.developers.amplitude.com/experiment/general/performance-and-caching/).

## Architecture

The Amplitude Experiment architecture has two components:

* **Fastly CDN**. Fastly routes all requests to Amplitude servers.
* **Reliable hosted AWS services**. Amplitude uses Application Load Balancer, Relational Databases, and DynamoDB to provide high availability.

![experiment_architecture.png](/images/under-the-hood/experiment-architecture-png.png)
