Deploying this Quick Start for a new https://aws.amazon.com/quickstart/architecture/atlassian-standard-infrastructure/[{vpc-name} (ASI)] with default parameters builds the following {partner-product-short-name} environment in the AWS Cloud.

// Replace this example diagram with your own. Send us your source PowerPoint file. Be sure to follow our guidelines here : http://(we should include these points on our contributors giude)
[#architecture1]
.Quick Start architecture for {partner-product-short-name} on AWS
image::../images/bitbucket-architecture.png[Architecture,width=640]

As shown in Figure 1, the Quick Start sets up the following:

* A highly available architecture that spans two Availability Zones.
* In the public subnets:
** A network address translation (NAT) gateway to allow outbound internet access for resources in the private subnets.
** A bastion host that enables secure access to {partner-product-short-name} without exposing it to the internet. For more information, see https://docs.aws.amazon.com/quickstart/latest/linux-bastion/architecture.html#bastion-hosts[Bastion Hosts]). You can choose not to provision a bastion host if you prefer to access {partner-product-short-name} nodes through the https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html[AWS Systems Manager].
* In the private subnets:
** A network file system (NFS) server instance. This provides a shared file system with an attached Amazon Elastic Block Store (Amazon EBS) volume for storing repositories.
** Amazon Relational Database Service (Amazon RDS) for PostgreSQL in a high-availability (Multi-AZ) configuration, which mitigates failover if the master node fails. You can choose Amazon Aurora PostgreSQL instead.
* Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling groups for scaling the bastion hosts in the public subnets and the {partner-product-short-name} nodes in the private subnets. The instances are based on Amazon Linux, a Linux server operating system from AWS, and use an Atlassian-provided Amazon Machine Image (AMI).
* An Amazon Elastic Load Balancer, which works both as a load balancer and a Secure Sockets Layer (SSL) termination reverse proxy.
* Amazon Elasticsearch Service (Amazon ES) for Elasticsearch 2.3 indexing and searching functionality.
* Amazon CloudWatch for basic monitoring of all application and database nodes in your deployment. By default, CloudWatch collects and stores logs from each monitored node. Amazon CloudWatch is an optional component.

=== Amazon Elasticsearch

Bitbucket Data Center uses Elasticsearch 2.3 for indexing and searching. The Quick Start architecture uses the Amazon Elasticsearch Service (Amazon ES), which is a managed service that makes it easy to deploy, operate, and scale Elasticsearch in the AWS Cloud.

=== NFS for shared storage

Bitbucket Data Center uses a shared network file system (NFS) to store the repositories in a common location that is accessible to multiple Bitbucket nodes. The Quick Start architecture implements the shared file system in an Amazon Elastic Compute Cloud (Amazon EC2) instance with an attached Amazon Elastic Block Store (Amazon EBS) volume. We recommend that you create regular snapshots of the EBS volume at a frequency that meets the recovery point objective (RPO) of your organization. If using a single EBS volume doesn’t meet your availability and disaster recovery requirements, you should consider a highly available NFS implementation using AWS partner products.

=== Auto Scaling groups in this Quick Start

This Quick Start uses https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroup.html[Auto Scaling groups] to statically control the number of its nodes. Don't use Auto Scaling to dynamically scale the size of your cluster. Adding an application node to the cluster usually takes more than 20 minutes, which isn't fast enough to address sudden load spikes.

If you can identify periods of high and low loads, you can schedule the application node cluster to scale accordingly. For more information, see https://docs.aws.amazon.com/autoscaling/ec2/userguide/schedule_time.html[Scheduled Scaling for Amazon EC2 Auto Scaling].

To study trends in your organization's load, be sure to monitor the performance of your deployment.

=== Amazon Aurora database for high availability

The Quick Start also allows you to deploy {partner-product-name} with an Amazon Aurora clustered database (instead of RDS).

You can also use this Quick Start to deploy {partner-product-name} with an Aurora clustered database that’s compatible with PostgreSQL. The cluster configuration is illustrated in Figure 2. It features a primary database writer that replicates to two database readers in a different Availability Zone. If the writer fails, Aurora promotes one of the readers to take its place with no downtime. For more information, see https://aws.amazon.com/rds/aurora/postgresql-features/[Amazon Aurora Features: PostgreSQLCompatible Edition].

The Aurora configuration with a single database writer and two readers is designed to provide high availability without degrading performance.

[#aurora]
.Amazon Aurora reader/writer configuration
image::../images/aurora-diagram.png[Amazon Aurora,width=640]

Amazon Aurora is supported on Bitbucket Data Center 6.7 and later.
