> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cockroachlabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Development Topology

While developing an application against CockroachDB, it's sufficient to deploy a single-node cluster close to your test application, whether that's on a single VM or on your laptop.

> [!TIP]
>
> If you haven't already, [review the full range of topology patterns](https://docs.cockroachlabs.com/docs/stable/topology-patterns.md) to ensure you choose the right one for your use case.

## Before you begin

* Multi-region topology patterns are almost always table-specific. If you haven't already, [review the full range of patterns](https://docs.cockroachlabs.com/docs/stable/topology-patterns.md#multi-region) to ensure you choose the right one for each of your tables.
* Review how data is replicated and distributed across a cluster, and how this affects performance. It is especially important to understand the concept of the "leaseholder". For a summary, see [Reads and Writes in CockroachDB](https://docs.cockroachlabs.com/docs/stable/architecture/reads-and-writes-overview.md). For a deeper dive, see the CockroachDB [Architecture Overview](https://docs.cockroachlabs.com/docs/stable/architecture/overview.md).
* Review the concept of [locality](https://docs.cockroachlabs.com/docs/stable/cockroach-start.md#locality), which CockroachDB uses to place and balance data based on how you define [replication controls](https://docs.cockroachlabs.com/docs/stable/configure-replication-zones.md).
* Review the recommendations and requirements in our [Production Checklist](https://docs.cockroachlabs.com/docs/stable/recommended-production-settings.md).
* This topology doesn't account for hardware specifications, so be sure to follow our [hardware recommendations](https://docs.cockroachlabs.com/docs/stable/recommended-production-settings.md#hardware) and perform a POC to size hardware for your use case. For optimal cluster performance, Cockroach Labs recommends that all nodes use the same hardware and operating system.
* Adopt relevant [SQL Best Practices](https://docs.cockroachlabs.com/docs/stable/performance-best-practices-overview.md) to ensure optimal performance.

## Configuration

![Development topology](https://mintcdn.com/cockroachlabs/iiBVxthghoAOO3UM/images/common/topology-patterns/topology_development1.png?fit=max\&auto=format\&n=iiBVxthghoAOO3UM\&q=85\&s=2c8c9a52363d6998a91b2a76c99fab21)

For this pattern, you can either [run CockroachDB locally](https://docs.cockroachlabs.com/docs/stable/start-a-local-cluster.md) or [deploy a single-node cluster on a cloud VM](https://docs.cockroachlabs.com/docs/stable/manual-deployment.md).

## Characteristics

### Latency

With the CockroachDB node in the same region as your client, and without the overhead of replication, both read and write latency are very low:

![Development topology read and write latency](https://mintcdn.com/cockroachlabs/iiBVxthghoAOO3UM/images/common/topology-patterns/topology_development_latency.png?fit=max\&auto=format\&n=iiBVxthghoAOO3UM\&q=85\&s=d20d17e08ae4e515f648ca7bc5e2c765)

### Resiliency

In a single-node cluster, CockroachDB does not replicate data and, therefore, is not resilient to failures. If the machine where the node is running fails, or if the region or availability zone containing the machine fails, the cluster becomes unavailable:

![Development topology single failure](https://mintcdn.com/cockroachlabs/iiBVxthghoAOO3UM/images/common/topology-patterns/topology_development2.png?fit=max\&auto=format\&n=iiBVxthghoAOO3UM\&q=85\&s=aa1480d11e92a62d5658d6ed5bae417f)

## See also

* [Multi-Region Capabilities Overview](https://docs.cockroachlabs.com/docs/stable/multiregion-overview.md)
* [How to Choose a Multi-Region Configuration](https://docs.cockroachlabs.com/docs/stable/choosing-a-multi-region-configuration.md)
* [When to Use `ZONE` vs. `REGION` Survival Goals](https://docs.cockroachlabs.com/docs/stable/multiregion-survival-goals#when-to-use-zone-vs-region-survival-goals)
* [When to Use `REGIONAL` vs. `GLOBAL` Tables](https://docs.cockroachlabs.com/docs/stable/table-localities#when-to-use-regional-vs-global-tables)
* [Low Latency Reads and Writes in a Multi-Region Cluster](https://docs.cockroachlabs.com/docs/stable/demo-low-latency-multi-region-deployment)
* [Migrate to Multi-Region SQL](https://docs.cockroachlabs.com/docs/stable/migrate-to-multiregion-sql)
* [Secondary regions](https://docs.cockroachlabs.com/docs/stable/multiregion-overview.md#secondary-regions)
* [`ALTER DATABASE ... SET SECONDARY REGION`](https://docs.cockroachlabs.com/docs/stable/alter-database#set-secondary-region)
* [`ALTER DATABASE ... DROP SECONDARY REGION`](https://docs.cockroachlabs.com/docs/stable/alter-database#drop-secondary-region)
* [Topology Patterns Overview](https://docs.cockroachlabs.com/docs/stable/topology-patterns.md)
  * Single-region patterns
    * [Development](https://docs.cockroachlabs.com/docs/stable/topology-development.md)
    * [Basic Production](https://docs.cockroachlabs.com/docs/stable/topology-basic-production.md)
  * Multi-region patterns
    * [`REGIONAL` Tables](https://docs.cockroachlabs.com/docs/stable/regional-tables)
    * [`GLOBAL` Tables](https://docs.cockroachlabs.com/docs/stable/global-tables)
    * [Follower Reads](https://docs.cockroachlabs.com/docs/stable/topology-follower-reads.md)
    * [Follow-the-Workload](https://docs.cockroachlabs.com/docs/stable/topology-follow-the-workload.md)
