Architecting Highly Available Systems on AWS

In this course, we see how to assemble many powerful AWS components into a resilient, highly available web application with no single point of failure.
Course info
Rating
(347)
Level
Intermediate
Updated
Jul 31, 2013
Duration
4h 1m
Table of contents
Distributed Systems and AWS
Provisioning Durable Storage with EBS and S3
Setting Up Databases in RDS and DynamoDB
Leveraging SQS for Scalable Processing
Adding EC2 Virtual Machines
Using ELB to Scale Applications
Enabling Auto Scale to Handle Spikes and Troughs
Configuring DNS with Route 53
Description
Course info
Rating
(347)
Level
Intermediate
Updated
Jul 31, 2013
Duration
4h 1m
Description

This course describes the techniques and best practices for composing highly available distributed systems on the AWS platform. Throughout the course, we build up a web application that takes advantage of AWS storage, databases, compute, messaging, DNS, and more.

About the author
About the author

Richard Seroter is the VP of Product Marketing at Pivotal, with a master’s degree in Engineering from the University of Colorado. He’s also an 11-time Microsoft MVP for cloud, an instructor for Pluralsight, the lead InfoQ.com editor for cloud computing, and author of multiple books. As Vice President at Pivotal, Richard leads product, customer, technical, and partner marketing teams. Richard maintains a regularly updated blog on topics of architecture and solution design and can be found on Twitter as @rseroter.

More from the author
Serverless Computing: The Big Picture
Beginner
59m
Apr 17, 2019
DevOps: The Big Picture
Beginner
1h 21m
Jan 23, 2019
More courses by Richard Seroter
Section Introduction Transcripts
Section Introduction Transcripts

Distributed Systems and AWS
Hi my name is Richard Seroter and welcome to the course on deploying highly available Distributed Systems on the Amazon Web Services Cloud. In this very first module, we're going to set up the discussion by reviewing the core aspects of distributed systems, some of the differences you'll experience in the Cloud. What makes up AWS and an overview of the application that we're going to build throughout the life of this course. So we'll walk through a brief outline. We're going to start with what are distributed systems, even some of the fallacies of distributed systems, whether the characteristics of distributed web systems? And when we talk about distributed systems in the Cloud what does that really entail? How do we make distributed cloud systems highly available? What's that exercise entail? What makes up Amazon Web Services? They have a giant portfolio of services are we're going to walk through some of those. We're going to dig into what the reference architecture for this course is going to be. We're going to be building up an application over the life of this course and we're going to walk through what that final reference architecture looks like. I'll review some of my goals for the course, which hopefully will link up with your goals for the course that we can really provide the most value to you throughout the course. And then finally, we'll look at some of the resources that are going to be available to you as you follow-up in the course or as you're looking for additional supplementary material.

Provisioning Durable Storage with EBS and S3
Hi there, my name is Richard Seroter and welcome to this next module on a course on deploying distributed apps to the Amazon Web Services Cloud. In this particular module, we're going to focus on using storage in a distributed system and after this module, you should be pretty comfortable with the types of storage in AWS and how to use them in the cloud systems. So we'll start off by looking at where we are in the reference architecture as this being the first real module after the introduction, we'll be at the very beginning. We'll talk about the different types of VM storage available to you in general. When to use which type of these in a distributed cloud system. We'll talk about Amazon EBS, ElasticBlock Storage. We'll talk about how you configure and create EBS volumes. How failure is handled in EBS and there's multiple different failure can occur and again how you can prevent that by architecting correctly. We'll cover some EBS best practices. Then we'll jump into Amazon S3 as another storage alternative. We'll talk about creating and loading S3 buckets of static content. We'll see how failure is handled. We'll talk about some of the best practices for S3 and then finally, we'll summarize what we've learned thus far.

Setting Up Databases in RDS and DynamoDB
Hi, my name is Richard Seroter. Welcome to this next module in a course on deploying highly available systems to Amazon Web Services. This particular module focuses on database and how to deploy highly available databases that our applications can use and consume. So first, we'll talk about where we are in our reference architecture. Over the course of this entire course, we're actually building up an application and we'll see where we stand so far. We'll discuss the role of databases in a distributed cloud system. When am I using databases? What's the point? And which ones would I use for each scenario? We'll talk about Amazon RDS the Relational Database Service. We'll see how you create and access databases and do some demonstrations of that. We'll talk about how you use RDS alongside ASP. NET applications. We'll talk about the few scenarios of how you handle failure, what happens when the database goes down? How does your application respond? What does Amazon have built in for you? We'll review a few best practices with RDS and then we'll jump to DynamoDB. We'll talk about that as a NoSQL database. Discuss how you create and use DynamoDB. I'll provide the example of how you might model a shopping cart to function in DynamoDB and then we'll talk about and demonstrate how you use DynamoDB as a session state provider for ASP. NET applications. We'll review how failure is handled with DynamoDB, some best practices, and then wrap up the session.

Leveraging SQS for Scalable Processing
Hi there. My name is Richard Seroter and welcome to this next module on a course about deploying highly- available applications to the Amazon Web Services cloud. In this particular module, we're going to talk about using SQS or queueing processes in the cloud when it makes sense. And, by the end of this, you should be comfortable with setting up and consuming and publishing queues in cloud systems. So, first off, we'll again see where we are in the reference architecture as we keep building up the solution throughout the course. We're going to talk about the roles of queues in distributed systems and see when the best places are to use them. We'll discuss Amazon SQS and the capabilities it has. We'll review how you configure queues. We'll talk about how you publish to and then retrieve from a queue. We'll see how failure is handled. We'll review a few best practices before summarizing.

Adding EC2 Virtual Machines
Hi my name is Richard Seroter and welcome to this next module in a course on deploying and architecting highly available systems on AWS. In this module we're going to finally start pulling a lot the pieces together when we add virtual machines that become the host for all the logic and processing in our system so far. By the end of this module you should be pretty comfortable with EC2 and using it in distributed systems along with Elastic IPs. So first off we're going to see where we are in the reference architecture. We've built a number of components so far, we'll see what we're up to. We'll see the role of virtual servers in a distributed cloud system. What role do they play in our architecture? We'll discuss Amazon EC2 and some of the core pieces about it. We'll talk about how do you deploy EC2 servers and see a demonstration of that. We'll talk about how you can access shared content between machines and why you might want to do that. Then we'll talk about how do we deploy web applications and we'll actually deploy the app we've built so far to EC2 servers. We'll talk about the value of creating and using Amazon machine images, so creating templates and applying those and using those. Next we'll cover some of the best practices for EC2 before jumping into Elastic IPs and what the value of using Elastic IPs are in a distributed system. We'll review how failure is handled. Talk some best practices for Elastic IP and then wrap up.

Using ELB to Scale Applications
Hi my name is Richard Seroter and welcome to this next module on a course of how do you deploy an architect highly available systems on the AWS cloud. In this module we're going to focus on the Elastic Load Balancer and scaling applications horizontally. By the end of this you should be pretty comfortable with the ELB and understand how to use it to distribute traffic in a distributed system. We're going to start off by seeing where we stand in our reference architecture throughout the course we've been building. We'll talk about the role of load balancers in a distributed cloud system. Then we'll review what is Amazon ELB, Elastic Load Balancer, how does it work in a failure scenario? How do we then configure ELB, how do we set this up? And we'll do a demonstration of that. We'll talk about how do you test ELB properly, so we'll cover some best practices and then some summarize the module.

Enabling Auto Scale to Handle Spikes and Troughs
Hi my name is Richard Seroter and welcome to this next module on a course about deploying and architecture highly available systems on Amazon web services. In this module we're going to focus on automated scaling in distributed systems and how we use the auto scale service to add and destroy cloud servers. First we'll see once again where we are in our reference architecture, we've already built up a pretty interesting little distributed system. We'll talk about the role of automated scaling in a distributed cloud system. Then we'll dig into what auto scale actually is, how failure is handled in auto scaling environment. We'll look at how to configure auto scale and actually do it. Likewise we'll test auto scaling and see how it works and behaves. We'll discuss a few auto scaling best practices before wrapping up the session.

Configuring DNS with Route 53
Hi there my name is Richard Seroter and welcome to this final module in a course about we design and architecture deploy highly available systems for AWS. In this module we're going to focus on DNS and using Route 53 to route traffic to AWS services. We'll start off by looking at where we are in our reference architecture, we'll discuss the role of DNS in a distributed cloud system. We'll talk about Route 53, what's that service from Amazon, how do you use it, what's the point of it? How do we use Route 53 with other services offered by Amazon like the load balancer, CloudFront, and an S3? We'll review how failure is handled within a DNS environment. Then we'll look at configuring Route 53 and actually jumping in and doing a demonstration, so that when you hit a domain I've registered I'll actually route that to our Amazon environment. We'll review some best practices for Route 53 and then finally do a summary.