More and more businesses are deploying their mission-critical applications on AWS, and one of their concerns is how to improve the availability of their services, going beyond traditional availability concepts. In this session, you will learn how to architect different layers of your application―beginning with an extremely available front-end layer with Amazon EC2, Elastic Load Balancing, and Auto Scaling, and going all the way to a protected multitiered information layer, including cross-region replicas for relational and NoSQL databases. The concepts that we will share, using services like Amazon RDS, Amazon DynamoDB, and Amazon Route 53, will provide a framework you can use to keep your application running even with multiple failures. Additionally, you will hear from Magazine Luiza, in an interactive session, on how they run a large e-commerce application with a multiregion architecture using a combination of features and services from AWS to achieve extreme availability.
26. Amazon EC2 Amazon EC2
Elastic Load Balancing
Availability
Zone A
Availability
Zone B
Amazon S3
Static
Website
Amazon
CloudFront
User
Amazon
Route 53
Secondary
Static
Assets
Primary + Health Checks
Auto
Scaling
Group
us-east
27.
28. Amazon S3
Static
Website
Amazon
CloudFront
User
Amazon
Route 53
Secondary
Static
Assets
Active/Active with Latency Based Routing + Health Checks
EC2 EC2
Elastic Load Balancing
Availability
Zone A
Availability
Zone B
us-east-1
EC2 EC2
Elastic Load Balancing
Availability
Zone A
Availability
Zone B
us-west-1
29. Amazon S3
Static
Website
Amazon
CloudFront
User
Amazon
Route 53
Secondary
Static
Assets
Active/Active with Latency Based Routing + Health Checks
EC2 EC2
Elastic Load Balancing
Availability
Zone A
Availability
Zone B
us-east-1
EC2 EC2
Elastic Load Balancing
Availability
Zone A
Availability
Zone B
us-west-1
34. Amazon
CloudFront
User
Amazon
Route 53
Static
Assets
Active/Active with Latency Based Routing + Health Checks
EC2 EC2
Elastic Load Balancing
Amazon
S3
Static
Content
EC2 EC2
Elastic Load Balancing
WEB SERVER CACHE
Availability
Zone A
Availability
Zone B
Availability
Zone A
Availability
Zone B
sa-east-1 us-east-1
WEB SERVER CACHE
WEB SERVER CACHE
WEB SERVER CACHE
35.
36.
37. Amazon RDS Multi-AZ
(with read replicas)
Amazon DynamoDB and
Amazon S3 have built-in
HA
Availability Zone A
Availability Zone B
38.
39. Amazon RDS read replicas rock!
Availability Zone A
Availability Zone B
Amazon RDS
Read Replica
Amazon RDS
Read Replica
Availability Zone A
Availability Zone B
Amazon RDS Master
Amazon RDS
Read Replica Amazon RDS
Read Replica
Amazon RDS Standby
Availability Zone C
Amazon RDS
Read Replica
us-east-1 us-west-1
40. Amazon RDS read replicas rock!
Availability Zone A
Availability Zone B
Amazon RDS
Read Replica
Amazon RDS
Read Replica
Availability Zone A
Availability Zone B
Amazon RDS Master
Amazon RDS
Read Replica Amazon RDS
Read Replica
Amazon RDS Standby
Availability Zone C
Amazon RDS
Read Replica
us-east-1 us-west-1
41. Amazon RDS read replicas rock!
Availability Zone A
Availability Zone B
Amazon RDS
Read Replica
Amazon RDS
Read Replica
Availability Zone A
Availability Zone B
Amazon RDS Master
Amazon RDS
Read Replica Amazon RDS
Read Replica
Amazon RDS Standby
Availability Zone C
Amazon RDS
Read Replica
us-east-1 us-west-1
Amazon RDS Master
(promoted)
42. Availability Zone
A
Amazon RDS
us-east-1
Amazon
EC2 as
GoldenGate
Hub for
Source DB
Availability Zone
A
Amazon RDS
Amazon
EC2 as
GoldenGate
Hub for
Source DB
us-west-1
50. Processingpublic class StreamsRecordProcessorimplementsIRecordProcessor { .. @Overridepublic void processRecords(List<Record>records,.. ){ for(Record record :records){ if (record instanceofRecordAdapter){ Record ddbStreamRecord =((RecordAdapter) record).getInternalObject(); switch(ddbStreamRecord.getEventName()){ case"INSERT":case"MODIFY": DemoHelper.putItem(dynamoDBClient,tableName, ddbStreamRecord.getDynamodb().getNewImage()); break; ...
51. Processingpublic class StreamsRecordProcessorimplementsIRecordProcessor { .. @Overridepublic void processRecords(List<Record>records,.. ){ for(Record record :records){ if (record instanceofRecordAdapter){ Record ddbStreamRecord =((RecordAdapter) record).getInternalObject(); switch(ddbStreamRecord.getEventName()){ case"INSERT":case"MODIFY": DemoHelper.putItem(dynamoDBClient,tableName, ddbStreamRecord.getDynamodb().getNewImage()); break; ...
52. Processingpublic class StreamsRecordProcessorimplementsIRecordProcessor { .. @Overridepublic void processRecords(List<Record>records,.. ){ for(Record record :records){ if (record instanceofRecordAdapter){ Record ddbStreamRecord =((RecordAdapter) record).getInternalObject(); switch(ddbStreamRecord.getEventName()){ case"INSERT":case"MODIFY": DemoHelper.putItem(dynamoDBClient,tableName, ddbStreamRecord.getDynamodb().getNewImage()); break; ...
53. Processingpublic class StreamsRecordProcessorimplementsIRecordProcessor { .. @Overridepublic void processRecords(List<Record>records,.. ){ for(Record record :records){ if (record instanceofRecordAdapter){ Record ddbStreamRecord =((RecordAdapter) record).getInternalObject(); switch(ddbStreamRecord.getEventName()){ case"INSERT":case"MODIFY": DemoHelper.putItem(dynamoDBClient,tableName, ddbStreamRecord.getDynamodb().getNewImage()); break; ...
54.
55. ERP
Database
Replica
ERP
Database
Replica
Availability
Zone A
Availability
Zone B
sa-east-1
EC2 EC2
WORKERS
COLO
ERP
Database
AWS Direct
Connect
NoSQL NoSQL
WORKERS
Amazon Simple
Queue Service
us-east-1 Internet
Same infrastructure with constant
data replication
56.
57. Please give us your feedback on this session.
Complete session evaluations and earn re:Invent swag.
http://bit.ly/awsevals