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

# Development Topology

export const InternalLink = ({version, path = "", children, ...props}) => {
  let detectedVersion = version || "stable";
  if (typeof window !== 'undefined' && !version) {
    const match = window.location.pathname.match(/\/docs\/([^/]+)/);
    if (match) {
      detectedVersion = match[1];
    }
  }
  const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
  return <a href={`/docs/${detectedVersion}/${normalizedPath}`} {...props}>
      {children}
    </a>;
};

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, <InternalLink path="topology-patterns">review the full range of topology patterns</InternalLink> to ensure you choose the right one for your use case.
</Tip>

## Before you begin

* Multi-region topology patterns are almost always table-specific. If you haven't already, <InternalLink path="topology-patterns#multi-region">review the full range of patterns</InternalLink> 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 <InternalLink path="architecture/reads-and-writes-overview">Reads and Writes in CockroachDB</InternalLink>. For a deeper dive, see the CockroachDB <InternalLink path="architecture/overview">Architecture Overview</InternalLink>.
* Review the concept of <InternalLink path="cockroach-start#locality">locality</InternalLink>, which CockroachDB uses to place and balance data based on how you define <InternalLink path="configure-replication-zones">replication controls</InternalLink>.
* Review the recommendations and requirements in our <InternalLink path="recommended-production-settings">Production Checklist</InternalLink>.
* This topology doesn't account for hardware specifications, so be sure to follow our <InternalLink path="recommended-production-settings#hardware">hardware recommendations</InternalLink> 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 <InternalLink path="performance-best-practices-overview">SQL Best Practices</InternalLink> to ensure optimal performance.

## Configuration

<img src="https://mintcdn.com/cockroachlabs/mWJHSqov-YrcB8t4/images/v25.4/topology-patterns/topology_development1.png?fit=max&auto=format&n=mWJHSqov-YrcB8t4&q=85&s=f113c721999cd983298d7c95028155c3" alt="Development topology" width="960" height="540" data-path="images/v25.4/topology-patterns/topology_development1.png" />

For this pattern, you can either <InternalLink path="start-a-local-cluster">run CockroachDB locally</InternalLink> or <InternalLink path="manual-deployment">deploy a single-node cluster on a cloud VM</InternalLink>.

## 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:

<img src="https://mintcdn.com/cockroachlabs/mWJHSqov-YrcB8t4/images/v25.4/topology-patterns/topology_development_latency.png?fit=max&auto=format&n=mWJHSqov-YrcB8t4&q=85&s=d348fcdc046acb98965aa7989370804c" alt="Development topology read and write latency" width="960" height="540" data-path="images/v25.4/topology-patterns/topology_development_latency.png" />

### 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:

<img src="https://mintcdn.com/cockroachlabs/mWJHSqov-YrcB8t4/images/v25.4/topology-patterns/topology_development2.png?fit=max&auto=format&n=mWJHSqov-YrcB8t4&q=85&s=55a64840e890032bdedfc4b3700953c0" alt="Development topology single failure" width="960" height="540" data-path="images/v25.4/topology-patterns/topology_development2.png" />

## See also

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