As part of planning your architecture, answer the following questions.

How many Availability Zones should I specify?

For high availability, use at least two Availability Zones.

Where should my workload be located?

Your security and external-access settings determine whether to use public or private subnets.

How many public and private subnets should I use?

If your workload needs to be isolated, consider setting up a second private subnet that uses a network access control list (ACL) in each Availability Zone.

What if my workload is distributed across multiple instances?

Use Elastic Load Balancing to help ensure high availability and fault tolerance.

What if my workload is stateless or stateful?

If you don’t save your session state within the workload instance, use AWS Auto Scaling.

I want to store data. What kind of database should I use?

  • If the data are relational, use Amazon Relational Database Service (Amazon RDS).
  • If the data are nonrelational (for example, NoSQL), use Amazon DynamoDB.
  • If the database engine uses MySQL or PostgreSQL, use Amazon Aurora.

What other AWS services or solutions might complement my software’s functionality?

  • If you need a directory, consider adding AWS Directory Service.
  • If you need Hadoop processing, consider using Amazon EMR.
  • If you need to store sensitive information, use AWS Secrets Manager.
  • If your workload needs to meet compliance requirements, such as NIST (National Institute of Standards and Technology) or PCI (payment card industry), consider using one of the compliance Partner Solutions for your infrastructure. Visit the AWS Solutions Library, select the Partner Solutions filter, and enter compliance in the search bar.