What this book covers
Chapter 1, Setting Up the AWS Environment, provides a brief introduction to various AWS offerings. It's always a good idea to get a brief introduction to the various AWS services. We will start by exploring various services using the AWS console and then set up our environment to install tools such as the AWS CLI, Boto3, CloudFormation, and Terraform, which we can use in future chapters to automate the entire infrastructure.
Chapter 2, Protecting Your AWS Account Using IAM, provides a brief introduction to IAM and an in-depth overview of IAM policies and roles. Security is job zero for all of us, so it's important to understand IAM policies, such as how to make sure we assign only the minimum privileges to a user to do their job. We will also discuss two real-world scenarios where we will see how to restrict the user to launch only a particular instance and rotate their credentials on a regular basis to reduce the risk of leaking their access and secret keys.
Chapter 3, Creating a Data Center in the Cloud Using VPC, covers building two VPCs for high-availability and disaster recovery. We will use two subnets: public for setting up two EC2 instances and private to host databases. Once the VPCs are up, we will create a transit gateway so that services in these two VPCs communicate with each other. Finally, we will look at a real-world scenario to enable VPC flow logs.
Chapter 4, Scalable Compute Capacity in the Cloud via EC2, is the last chapter of the Building Infrastructure section, where the VPCs built in the previous chapter are used to create four instances in two availability zones. We need these four instances for high availability as well as for disaster recovery. We will also explore three real-world scenarios to save costs by shutting down instances in the development environment after XPM, clean up unused Amazon Machine Images (AMIs), and remove unattached volumes.
Chapter 5, Increasing an Application's Fault Tolerance with Elastic Load Balancing, explores how, to make our application robust, we add the layer of an application load balancer in front of instances. This helps to distribute the load to the backend EC2 instances, which make the application highly available as well as serve as the single point of contact for clients.
Chapter 6, Increasing Application Performance using AWS Auto Scaling, covers setting up the on-demand scaling of our application based on criteria such as load, I/O, and network. It provides a uniform user experience to our users by spinning up the instances in the backend when the load on the application increases and similarly tears down those instances when the load is back to normal.
Chapter 7, Creating a Relational Database in the Cloud Using AWS Relational Database Service (RDS), looks at adding a database layer to our application by using AWS RDS. As databases are a critical piece of our application, we will set them up in high-availability mode, both as primary and secondary as well as read-only replicas in different AWS regions to reduce the load on the main master server.
Chapter 8, Monitoring AWS Services Using CloudWatch and SNS, looks at monitoring critical pieces to maintain the uptime of the application, such as CPU, I/O, system uptime, as well as custom metrics such as memory and disk space. In the end, we will set up an automated alarm as well as notifications via email, SMS, and Slack.
Chapter 9, Centralizing Logs for Analysis, shows how to store logs in one centralized place (CloudWatch logs) and then forward them to Elasticsearch to perform anomaly detection.
Chapter 10, Centralizing Cloud Backup Solution, looks at how to back up our instances or databases using AWS solutions (DLM snapshots) and a custom solution, such as S3 scripts.
Chapter 11, AWS Disaster Recovery Solutions, shows how to use backups to perform data recovery in case of failure. Besides that, AWS offers various disaster recovery solutions, and we will see which solution to use in which scenario.
Chapter 12, AWS Tips and Tricks, teaches you 10 tips and tricks to get the most out of AWS. Some of these tricks are based on my experience, while others are derived from AWS blogs.