Developing high-performance web applications in the real world requires the use of a cloud provider, and Amazon Web Services is widely recognized as the leader in cloud technology. In this course, AWS Developer: Designing and Developing, you will learn how to design and develop applications that utilize many of the services in AWS. This course focuses on using the AWS SDK to programmatically work with AWS, such as creating EC2 instances, querying DynamoDB tables, and sending messages to SQS queues. When you're finished with this course, you will be well versed in how to design and develop applications with AWS.
Course Overview Hi everyone. My name is Ryan Lewis, and welcome to my course, AWS Developer: Designing and Developing. I've been architecting and creating applications in AWS for many years in my work as a senior software engineer. Amazon Web Services is practically a household name in the software industry, and an investment in the platform is a solid investment in your career. With AWS being a key factor in the success of Amazon, Netflix, and Dropbox, there seems to be no stopping the growth of this giant. In this course, we are going to learn how to design and develop applications with AWS. We'll mostly be working with the software development kit in this course, so make sure to warm up your coding skills. Some of the major topics that we will cover include creating and managing scalable applications with EC2 and Auto Scaling groups, storing and querying data with Relational Database Service and ElastiCache, inter-service messaging using Simple Queue Service and Kinesis Streams, real-time communications with Simple Notification Service and CloudWatch alarms. By the end of this course, you'll have the knowledge and experience required to make the most of AWS in your application development. Before beginning the course, you should already be familiar with the basics of AWS and have some experience using it. It will also help to have some experience with Node, since we'll be using the Node AWS software development kit. I hope you'll join me on this journey to master Amazon Web Services with the AWS Developer: Designing and Developing course here at Pluralsight.
Designing and Developing on AWS Hello there. My name is Ryan Lewis, and I'm happy to welcome you to this course, AWS Developer: Designing and Developing. If you've come to learn the ins and outs of AWS, then you're in the right place. This course has a few objectives, but the most important is that your understanding and proficiency with developing in AWS will have leveled up by the end. This course in intended as a follow-up to my previous course, AWS Developer: Getting Started. I will expect familiarity with many of the most common AWS Services, so if you haven't watched that course yet, then I definitely suggest taking the time to work through it. With that being said, this course does cover many services already covered in the previous course. The main difference is the approach and details that we'll be covering. The Getting Started course's goal was to really get you familiar with the multitude of AWS's offerings. This course takes that familiarity and aims to make you moderately proficient at developing in AWS by adding even more detail and information. Additionally, the focus for this course will be on the development side of AWS and not cover infrastructure-related services like VPC or IAM. For this course, we're going to focus on taking a web application and integrating it into AWS. In the process, we'll create and modify services using multiple different methods such as the CLI and SDK. I'll take special care to include specific details about each service we're interacting with that should help you understand how to design your AWS architecture for your own applications.
Launching Instances in AWS Welcome back to AWS Developer: Designing and Developing. In this module, we're going to learn advanced methods for creating and managing Elastic Cloud Compute, or EC2, instances. In the previous Getting Started course, we saw how you can easily create instances using the AWS Console. But in this course, we're going to interact mostly with AWS through the SDK and AWS CLI, so we'll be utilizing different methods to do some operations you may have learned in the past. We'll start the module by covering some of the fundamental concepts of EC2, AMI, and the AWS Marketplace. Then we'll discuss the EC2 REST API and look at the details that go into each request. I'll spare you the pain of manually making one of these requests because it is really inconvenient. Next, we'll create an EC2 instance with the SDK and install the demo application. With our instance created, we'll look at different ways to manage your EC2 instances with the SDK. Then we'll use an existing product from the AWS Marketplace to launch an instance that will have some preinstalled software on it. And with our instance created, we'll create an AMI from that existing instance to get a good reproducible image. Finally, we'll look at the limits of the EC2 service and AMIs. These limits are important to understand when designing your AWS solutions and should help you from painting yourself into a corner in the future.
Scalable Computing in AWS Hello there, and welcome back to AWS Developer: Designing and Developing. This module is all about scaling computing, and we're going to look at two of the major tools to automatically scale your resources. Scaling is about meeting the demands on your resources without you having to stay awake all night. In order to achieve this magic, we'll first take a look at what scalability and elasticity mean within AWS. With this knowledge, we'll then take the first step by creating a launch configuration that describes the application instance we want to run. Then we'll create an elastic load balancer that will handle and distribute incoming HTTP requests. Both the launch configuration and load balancer are needed for us to create the main scaling resource and Auto Scaling group. And the last coding step we'll need is to configure a scaling policy on the Auto Scaling group. And with those four pieces in place, our scaling configuration will be complete. We'll close out the module by looking at limits that exist with Auto Scaling and elastic load balancer. Now let the scaling begin.
Storage in AWS Hi there, and welcome back to AWS Developer: Designing and Developing. File storage is one of computing's oldest concerns and something every developer has to deal with. There are several different solutions in AWS for storing your files and each target a specific use case. In this module, we're going to start by discussing options for EC2 instance file storage, then we'll try our hands at reusing an EBS volume between two EC2 instances, then we'll switch over to S3 to create an S3 bucket, and then upload objects into that bucket. Finally, we'll talk about some important limits with EBS volumes and S3. Without further ado, let's get to storing.
Persistence in AWS Hello there, and welcome back to AWS Developer: Designing and Developing. Along with computing and storage, databases and persistence are the third pillar upon which stands the halls of AWS. There are plenty of different persistent solutions in AWS, and they continue to upgrade and add new ones every year. The key solutions are DynamoDB for NoSQL and quick document data storage, RDS for traditional relational databases, and ElastiCache for short-term caching. In this module, we're going to start by looking at how provisioned throughput and secondary indexes work in DynamoDB. Then we'll create a DynamoDB table to store our hamsters and look at a few ways to query and get data out of that table. Next, we'll learn how to create an RDS database with the SDK and connect our code to that service. Then we'll work with ElastiCache with the SDK by creating a cluster and then using that to cache our user sessions. And finally, we'll look at the all-important limits we may hit when using DynamoDB, RDS, or ElastiCache.
Routing from AWS Hi there, and welcome back to AWS Developer: Designing and Developing. We've been doing all sorts of cool things with AWS in this course, but what good would any of it be if users couldn't access our hard work? That's where Route 53 and API Gateway come in. Both provide external internet access to your internal AWS resources. Route 53 is direct DNS routing, whereas API Gateway provides an abstraction over routing and is based around REST API design. We'll use both to route our demo project in different ways. So let's look at some of the topics we'll cover in this module. We'll start by discussing the types of routing policies available in Route 53. Then we'll see how to configure a hosted zone and record set in Route 53 to support a domain name. Next, I'll explain what API Gateway is and how it works. Then we'll go about creating, configuring, and deploying an API Gateway. Finally, we'll end the module by discussing some of the many limits with Route 53 and API Gateway. Let's get started.
Delivering Content with AWS Hello, and welcome back to AWS Developer: Designing and Developing. In this module, we're going to look at two different ways that AWS empowers you to deliver your content to users. The first is CloudFront, a global content delivery network that is essential for providing fast delivery of static files. The second is a feature in S3, and that's S3 static websites. Let's take a look at what we'll be covering in this module. We'll start by discussing the specifics of invalidations with CloudFront. Then we'll create a CloudFront distribution using our existing S3 content. Next, I'll explain how static sites work in S3, and then we'll configure one based on our existing S3 bucket. And finally, we'll look at the limits and restrictions with CloudFront and S3 static websites.
Messaging Inside AWS Hello there, and welcome back to AWS Developer: Designing and Developing. In this module, we're going to look at two different ways to communicate between services or applications. Simple Queue Service, or SQS, is a way to send messages via a queue system. Individual messages can be taken off the queue and processed by consumers. Kinesis Streams are a real-time stream-based messaging service that works similar to SQS, but with subtle differences that change the ideal use case. We'll be looking at both in this module and configuring them to work with our application. Let's go over what we'll be covering in this module. We'll start by looking at some of the specifics of polling in SQS and how messages work. Then we'll create an SQS queue to send race results and look at how to consume and process those messages. Next, I'll introduce you to Kinesis Streams, and we'll set one up for our application to send race results to the races table. And finally, we'll cap it off by looking at some of the restrictions and limits with both services.
Communicating with AWS Hello, and welcome back to AWS Developer: Designing and Developing. This is the last module for this course, and we're going out with a bang by covering two services that will increase the real-time nature of your applications. Simple Notification Service, or SNS, is used to send notifications to users via SMS, email, HTTP, and many other ways. A usual trigger of SNS is CloudWatch alarms, and those can be configured to make sure that your application and services stay up and healthy. Let's take a look at what we'll be covering in this module. We'll start by creating an SNS topic and subscribing to it with your mobile phone or email. Then we'll modify our demo project to publish race results to the topic and give it a whirl. Next, we'll create a CloudWatch alarm to monitor our application health and send notifications if something happens. We'll end out the module discussing some limits around SNS and CloudWatch alarms, and then we'll have a special clip on what resources to delete as you're cleaning up your AWS account after this course.