SlideShare a Scribd company logo
Amazon Web Services
Fernando Rodriguez Olivera
@frodriguez
Buenos Aires, Argentina, May 2013
Buenos Aires High Scalability Group
Scalable and Fault-Tolerant Apps with AWS
AWS Regions
Virginia
(5 AZs, 2006)
California
(3 AZs, 2009)
Oregon
(3 AZs, 2011)
Ireland
(3 AZs, 2007)
Tokyo
(3 AZs, 2011)
Singapore
(2 AZs, 2011)
23 Availabilty Zones + (2 GovCloud)
North America
South America
Europe
Asia Pacific
São
Paulo
(2 AZs, 2011)
Sydney
(2 AZs, 2012)
23 (+ 2Gov)
AZs
GovCloud
(2 AZs, 2011)
Availability Zones
DC1 DC2 DC3 DC4 DC5
DC6 DC7 DC8 DC9 DC10
us-east-1a us-east-1b
us-east-1c
“Our US East-1 Region consists of more than 10 datacenters
structured into multiple Availability Zones.” [July, 2012]
(http://aws.amazon.com/message/67457/)
DataCenters > AZs
Core1
EC2 - Semi Dedicated Resources
Disk1
EC2
Instance
EC2
Instance
EC2
Instance
EC2
Instance
XEN
Core2 Core3 Core4
Disk1 Disk1 Disk1
CPU
RAM
DISK
Text
EBS (Elastic Block Storage)
EC2
Instance
A B
C
EBS
Volume
A
A
B
BC
C
EBS Cluster
Local
Network
Shared
or
Dedicated
(EBS Optimized)
Standard or
Provisioned IOPS
Hardware
CloudWatch
EC2
Instance
Hypervisor
Cloud
Watch
Dashboard
Configured
Alarms
SNSTopic
API Access
SubscriberSubscriberSubscriber
Elastic Capacity
Reserved Capacity
On Demand
Amazon
Datacenter(AZ)
Spot Instances
(Bidding)
EC2 Pricing (US-East)
Small
Instance
1 Core
1.7 GB RAM
160 GB HDD
On Demand $0.060/hr	
  	
  	
   $43.20	
  /	
  month
R/Light 1yr $61	
  +	
  0.034/hr
$61	
  +	
  $24.48/month
$29.56	
  /	
  month
R/Medium 1yr $139	
  +	
  0.021/hr
$139	
  +	
  $15.12/month
$26.70	
  /	
  month
R/Heavy 1yr $169	
  +	
  0.014/hr
$169	
  +	
  $10.08/month
$24.16	
  /	
  month
R/Light 3yr $96	
  +	
  0.027/hr
$96	
  +	
  19.44/month
$22.10	
  /	
  month
R/Medium 3yr $215	
  +	
  0.017/hr
$215	
  +	
  12.34/month
$18.21	
  /	
  month
R/Heavy 3yr $257	
  +	
  0.012/hr
$257	
  +	
  8.64/month
$15.77	
  /	
  month
Spot $0.007/hr $5.04	
  /	
  month
May/2013
1 EC2
Compute
Unit
Large
Instance
2 Cores
7.5 GB RAM
850 GB HDD
On Demand $0.240/hr	
  	
  	
   $172	
  /	
  month
R/Light 1yr $243	
  +	
  0.136/hr
$243	
  +	
  $97.92/month
$118.17	
  /	
  month
R/Medium 1yr $554	
  +	
  0.084/hr
$554	
  +	
  $60.48/month
$106.64	
  /	
  month
R/Heavy 1yr $676	
  +	
  0.056/hr
$676	
  +	
  $40.32/month
$96.65	
  /	
  month
R/Light 3yr $384	
  +	
  0.108/hr
$384	
  +	
  77.76/month
$88.42	
  /	
  month
R/Medium 3yr $860	
  +	
  0.067/hr
$860	
  +	
  48.24/month
$72.12	
  /	
  month
R/Heavy 3yr $1028	
  +	
  0.046/hr
$1028	
  +	
  33.12/month
$61.67	
  /	
  month
Spot $0.026/hr $18.72	
  /	
  month
May/2013
4 EC2
Compute
Units
EC2 Pricing (US-East)
Amazon Web Services
EC2
DynamoDB
SQS - SNS
CloudFormation
API-HTTP/REST
Java
Ruby
PHP
Node.js
Python*
.NET
Route53
CloudFront
...
ServicesSDKs
CommandLineTools
CloudFormation - EC2 Instance
	
  "myServer":	
  {
	
  	
  	
  	
  	
  "Type":	
  "AWS::EC2::Instance",
	
  	
  	
  	
  	
  "Properties":	
  {
	
  	
  	
  	
  	
  	
  	
  	
  	
  "ImageId"	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  "ami-­‐0145d268",
	
  	
  	
  	
  	
  	
  	
  	
  	
  "InstanceType"	
  	
  	
  	
  :	
  "m1.small",
	
  	
  	
  	
  	
  	
  	
  	
  	
  "KeyName"	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  "mykey",
	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  "UserData"	
  :	
  {	
  "Fn::Base64"	
  :	
  {	
  "Fn::Join"	
  :	
  ["",	
  [
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "#!/bin/bash",	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "n",
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "apt-­‐get	
  -­‐y	
  update",	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "n",
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "apt-­‐get	
  -­‐y	
  install	
  apache2",	
  "n"
	
  	
  	
  	
  	
  	
  	
  	
  	
  ]]}}
	
  	
  	
  	
  	
  }
	
  }
CloudFormation - Security Group
	
  "mySecurityGroup":	
  {
	
  	
  	
  	
  	
  "Type":	
  "AWS::EC2::SecurityGroup",
	
  	
  	
  	
  	
  "Properties":	
  {
	
  	
  	
  	
  	
  	
  	
  	
  	
  "GroupDescription"	
  	
  	
  	
  	
  :	
  "...",
	
  	
  	
  	
  	
  	
  	
  	
  	
  "SecurityGroupIngress"	
  :	
  [{
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "IpProtocol"	
  :	
  "tcp",	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "FromPort"	
  	
  	
  :	
  "22",	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "ToPort"	
  	
  	
  	
  	
  :	
  "22",	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "CidrIp"	
  	
  	
  	
  	
  :	
  "0.0.0.0/0"
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  }]
	
  	
  	
  	
  	
  }
	
  }
Elastic Load Balancer (ELB)
Unhealthy
Instance
EC2
Instance
EC2
Instance
EC2
Instance
HTTP/S-TCP/SSL
Health
Checks
Balancing
CloudWatch
Latency - Requests - Status Codes
Load Balancer
Elastic Load Balancer (ELB)
EC2
Instance
EC2
Instance
EC2
Instance
EC2
Instance
Load Balancer
DNSBalancing
(Client-Side) (MultiAZ)
Load Balancing
(Server Side)
AZ 1
AZ 2
LB (AZ 1)
LB (AZ 2)
Elastic Load Balancer (ELB)
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  lb-­‐loadbalancer...us-­‐east-­‐1.elb.amazonaws.com	
  	
  IPv4
	
  	
  	
  	
  	
  ipv6.lb-­‐loadBalancer...us-­‐east-­‐1.elb.amazonaws.com	
  	
  IPv6
dualstack.lb-­‐loadBalancer...us-­‐east-­‐1.elb.amazonaws.com	
  	
  IPv4/IPv6
Region Different
IPs for
each AZ
NameStack
(DNS Name)
DNS Name CNAME IPv4/IPv6
CloudFormation - Load Balancer (1/2)
	
  
	
  "balancer":	
  {
	
  	
  	
  	
  	
  "Type":	
  "AWS::ElasticLoadBalancing::LoadBalancer",
	
  	
  	
  	
  	
  "Properties":	
  {
	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  "AvailabilityZones"	
  :	
  {	
  "Fn::GetAZs"	
  :	
  ""	
  },
	
  	
  	
  	
  	
  	
  	
  	
  	
  "Listeners":	
  [{
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "Protocol"	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  "HTTP",
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "LoadBalancerPort"	
  :	
  "80",
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "InstancePort"	
  	
  	
  	
  	
  :	
  "80"
	
  	
  	
  	
  	
  	
  	
  	
  	
  }],
	
  }
CloudFormation - Load Balancer (2/2)
	
  
	
  "balancer":	
  {
	
  	
  	
  	
  	
  "Type"	
  :	
  "AWS::ElasticLoadBalancing::LoadBalancer",
	
  	
  	
  	
  	
  "Properties"	
  :	
  {
	
  	
  	
  	
  	
  	
  	
  	
  	
  "HealthCheck"	
  :	
  {
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "Interval"	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  "25",
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "Target"	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  "HTTP:80/",
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "Timeout"	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  "10",
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "UnhealthyThreshold"	
  :	
  "2",
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "HealthyThreshold"	
  	
  	
  :	
  "2"
	
  	
  	
  	
  	
  	
  	
  	
  	
  }	
  	
  	
  
	
  	
  	
  	
  }
}
AutoScaling Groups
EC2
Instance
EC2
Instance
EC2
Instance
AutoScaling Group
Launch
Config
Min: 2 Max: 8Desired: 4
Cloud
Watch
AlarmsScaling Policy +1
Scaling Policy -1
avg	
  cpu	
  >	
  70
avg	
  cpu	
  <	
  40
EC2
Instance
AutoScaling - MultiAZ
EC2
Instance
EC2
Instance
EC2
Instance
Launch
Config
EC2
Instance
AvailabilityZone1AvailabilityZone2
Rebalancing
Process
CloudFormation - AutoScaling Group
	
  "autoScalingGroup":	
  {
	
  	
  	
  	
  	
  "Type"	
  :	
  "AWS::AutoScaling::AutoScalingGroup",
	
  	
  	
  	
  	
  "Properties"	
  :	
  {
	
  	
  	
  	
  	
  	
  	
  	
  	
  "AvailabilityZones"	
  	
  	
  	
  	
  	
  	
  :	
  {	
  "Fn::GetAZs"	
  :	
  ""	
  },
	
  	
  	
  	
  	
  	
  	
  	
  	
  "LaunchConfigurationName"	
  :	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "Ref"	
  :	
  "launchConfig"	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  },
	
  	
  	
  	
  	
  	
  	
  	
  	
  "MinSize"	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  "2",
	
  	
  	
  	
  	
  	
  	
  	
  	
  "MaxSize"	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  "8",
	
  	
  	
  	
  	
  	
  	
  	
  	
  "DesiredCapacity"	
  :	
  "4",
	
  	
  	
  	
  	
  }
	
  }
CloudFormation - Launch Config
	
  "launchConfig":	
  {
	
  	
  	
  	
  	
  "Type":	
  "AWS::AutoScaling::LaunchConfiguration",
	
  	
  	
  	
  	
  "Properties"	
  :	
  {
	
  	
  	
  	
  	
  	
  	
  	
  	
  "ImageId"	
  	
  	
  	
  	
  	
  :	
  "ami-­‐0145d268",
	
  	
  	
  	
  	
  	
  	
  	
  	
  "InstanceType"	
  :	
  "m1.small",
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ...
	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  "UserData"	
  :	
  {	
  "Fn::Base64"	
  :	
  {	
  "Fn::Join"	
  :	
  ["",	
  [
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "#!/bin/bash",	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "n",
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "apt-­‐get	
  -­‐y	
  update",	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "n",
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "apt-­‐get	
  -­‐y	
  install	
  apache2",	
  "n"
	
  	
  	
  	
  	
  	
  	
  	
  	
  ]]}}
	
  	
  	
  	
  	
  }
	
  }
CloudFormation - CPU Alarms (1/2)
	
  
	
  "cpuHigh":	
  {
	
  	
  	
  	
  	
  "Type":	
  "AWS::CloudWatch::Alarm",
	
  	
  	
  	
  	
  "Properties":	
  {
	
  	
  	
  	
  	
  	
  	
  	
  "Namespace"	
  	
  :	
  "AWS/EC2",
	
  	
  	
  	
  	
  	
  	
  	
  "MetricName"	
  :	
  "CPUUtilization",
	
  	
  	
  	
  	
  	
  	
  	
  "Statistic"	
  	
  :	
  "Average",
	
  	
  	
  	
  	
  	
  	
  	
  "Dimensions"	
  :	
  [{
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "Name"	
  	
  :	
  "AutoScalingGroupName",
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "Value"	
  :	
  {	
  "Ref"	
  :	
  "autoScalingGroup"	
  }
	
  	
  	
  	
  	
  	
  	
  	
  }],
	
  	
  	
  	
  	
  	
  	
  	
  ...
	
  	
  	
  	
  	
  }
	
  }
CloudFormation - CPU Alarms (2/2)
	
  
	
  "cpuHigh":	
  {
	
  	
  	
  	
  	
  "Type":	
  "AWS::CloudWatch::Alarm",
	
  	
  	
  	
  	
  "Properties"	
  :	
  {
	
  	
  	
  	
  	
  	
  	
  	
  "Period"	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  "60",
	
  	
  	
  	
  	
  	
  	
  	
  "EvaluationPeriods"	
  	
  :	
  "2",
	
  	
  	
  	
  	
  	
  	
  	
  "ComparisonOperator"	
  :	
  "GreaterThanThreshold"
	
  	
  	
  	
  	
  	
  	
  	
  "Threshold"	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  "70",
	
  	
  	
  	
  	
  	
  	
  	
  "AlarmActions"	
  	
  	
  	
  	
  	
  	
  :	
  [{	
  "Ref":	
  "scaleUpPolicy"	
  }],	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  }
}
CloudFormation - Scaling Policy
	
  
	
  "scaleUpPolicy":	
  {
	
  	
  	
  	
  	
  "Type":	
  "AWS::AutoScaling::ScalingPolicy",
	
  	
  	
  	
  	
  "Properties"	
  :	
  {
	
  	
  	
  	
  	
  	
  	
  	
  	
  "AdjustmentType"	
  	
  	
  	
  	
  	
  	
  :	
  "ChangeInCapacity",
	
  	
  	
  	
  	
  	
  	
  	
  	
  "ScalingAdjustment"	
  	
  	
  	
  :	
  "1",	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  "Cooldown"	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  "60",
	
  	
  	
  	
  	
  	
  	
  	
  	
  "AutoScalingGroupName"	
  :	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "Ref":	
  "autoScalingGroup"	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  }
	
  	
  	
  }
}
AutoScaling & ELB
EC2
Instance
EC2
Instance
EC2
Instance
EC2
Instance
DNSBalancing
(Client-Side)
Health Check
LB Registration
Unhealthy Instance Notifications
from LB
LB (AZ 1)
LB (AZ 2)
CloudFormation - AutoScaling Group
	
  "autoScalingGroup"	
  :	
  {
	
  	
  	
  	
  	
  "Type":	
  "AWS::AutoScaling::AutoScalingGroup",
	
  	
  	
  	
  	
  "Properties":	
  {
	
  	
  	
  	
  	
  	
  	
  	
  	
  ...
	
  	
  	
  	
  	
  	
  	
  	
  	
  "LoadBalancerNames"	
  :	
  [{	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "Ref"	
  :	
  "balancer"	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  }]
	
  	
  	
  	
  	
  }
	
  }
AutoScaling & Multiple Regions
AutoScaling Group
ue-west-1 (2 AZ)
EC2
Instance
EC2
Instance
EC2
Instance
EC2
Instance
AutoScaling Group
us-east-1 (2 AZ)
EC2
Instance
EC2
Instance
EC2
Instance
EC2
Instance
EC2
Instance
EC2
Instance
ELB ELB
US CA MX
Route 53 Route 53
ES DE IT
Latency Based Routing
RDS (Relational Database Service)
MySQL MySQL
Active Stand-by
AZ 1 AZ 2
Synchronous
Replication
MySQL MySQL MySQL
Asynchronous
Replication
Read Replicas
Simple Queue Service (SQS)
EC2
Instance
EC2
Instance
Queue
EC2
Instance
EC2
Instance
AutoScalingGroups
CloudWatch
Alarms Scaling Policy
Simple Notification Service (SNS)
SNSTopic
HTTP
Server
Mail
Server
Subscribers
CloudFormation - Route 53 (DNS)
	
  
	
  "dns":	
  {
	
  	
  	
  "Type"	
  :	
  "AWS::Route53::RecordSetGroup",
	
  	
  	
  "Properties"	
  :	
  {
	
  	
  	
  	
  	
  	
  	
  "HostedZoneName"	
  :	
  "example.com.",
	
  	
  	
  	
  	
  	
  	
  "RecordSets"	
  	
  	
  	
  	
  :	
  [{
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "Name"	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  "www.example.com.",
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "Type"	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  "CNAME",	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "TTL"	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  :	
  "300",
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "ResourceRecords"	
  :	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [{	
  "Fn::GetAtt"	
  :	
  [	
  "balancer",	
  "DNSName"	
  ]}]
	
  	
  	
  	
  	
  	
  	
  }]
	
  	
  	
  	
  }
}
CloudFormation Templates
{
	
  	
  	
  	
  "AWSTemplateFormatVersion"	
  :	
  "2010-­‐09-­‐09",
	
  	
  	
  	
  "Description"	
  :	
  "	
  ...	
  ",
	
  	
  	
  	
  "Parameters"	
  	
  :	
  {	
  ...	
  },
	
  	
  	
  	
  "Mappings"	
  	
  	
  	
  :	
  {	
  ...	
  },
	
  	
  	
  	
  "Resources"	
  	
  	
  :	
  {	
  ...	
  },
	
  	
  	
  	
  "Outputs"	
  	
  	
  	
  	
  :	
  {	
  ...	
  }
}
Thanks,
Fernando Rodriguez Olivera
@frodriguez
frodriguez <at> gmail.com
http://www.meetup.com/Buenos-Aires-High-Scalability-Group/

More Related Content

Viewers also liked (19)

PPTX
HTTP/2 : why upgrading the web? - DjangoCon Europe 2016 Budapest
Quentin Adam
 
PPTX
System integration through queues
Gianluca Padovani
 
PDF
Pythian: My First 100 days with a Cassandra Cluster
DataStax Academy
 
PDF
Concurrent and Distributed Applications with Akka, Java and Scala
Fernando Rodriguez
 
PDF
NoSQL Essentials: Cassandra
Fernando Rodriguez
 
PDF
Apache Spark with Scala
Fernando Rodriguez
 
PDF
[2016 체인지온] 소셜미디어 시대, 비영리단체의 콘텐츠 마케팅 성공 법칙_ᄀ...
daumfoundation
 
PDF
[2016 체인지온] NPO Media 2016: 한국 비영리 조직의 디지털 미디어 이해 및 활용도 조사 발표_주은수
daumfoundation
 
PPTX
HPC Top 5 Stories: Dec. 12, 2016
NVIDIA
 
PPSX
Flowered houses
Adriana Nastase
 
PPTX
Sensors, Wearables and the Internet of Things: A Revolution in the Making
Matt Turck
 
PDF
How to Harness the Power of the Pause #PresentationTips
Nadine Hanafi
 
PPTX
AI Is Accelerating Healthcare Transformation
NVIDIA
 
PDF
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
Hiroshi Shimizu
 
PPTX
臨床心理学における例数設計
Senshu University
 
PDF
U.S. election 2016- Debate wrap
Bloomberg LP
 
PDF
9 Unique Traits of High-Performing Teams
Weekdone.com
 
PPTX
Q1 Quarterly Feature Round Up Webinar 2016
Marketo
 
PPTX
Pin for the Win: How to Market Your Brand on Pinterest
Marketo
 
HTTP/2 : why upgrading the web? - DjangoCon Europe 2016 Budapest
Quentin Adam
 
System integration through queues
Gianluca Padovani
 
Pythian: My First 100 days with a Cassandra Cluster
DataStax Academy
 
Concurrent and Distributed Applications with Akka, Java and Scala
Fernando Rodriguez
 
NoSQL Essentials: Cassandra
Fernando Rodriguez
 
Apache Spark with Scala
Fernando Rodriguez
 
[2016 체인지온] 소셜미디어 시대, 비영리단체의 콘텐츠 마케팅 성공 법칙_ᄀ...
daumfoundation
 
[2016 체인지온] NPO Media 2016: 한국 비영리 조직의 디지털 미디어 이해 및 활용도 조사 발표_주은수
daumfoundation
 
HPC Top 5 Stories: Dec. 12, 2016
NVIDIA
 
Flowered houses
Adriana Nastase
 
Sensors, Wearables and the Internet of Things: A Revolution in the Making
Matt Turck
 
How to Harness the Power of the Pause #PresentationTips
Nadine Hanafi
 
AI Is Accelerating Healthcare Transformation
NVIDIA
 
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
Hiroshi Shimizu
 
臨床心理学における例数設計
Senshu University
 
U.S. election 2016- Debate wrap
Bloomberg LP
 
9 Unique Traits of High-Performing Teams
Weekdone.com
 
Q1 Quarterly Feature Round Up Webinar 2016
Marketo
 
Pin for the Win: How to Market Your Brand on Pinterest
Marketo
 

Similar to Scalable and Fault-Tolerant Apps with AWS (20)

PPTX
Programando sua infraestrutura com o AWS CloudFormation
Amazon Web Services LATAM
 
PDF
5 things you don't know about Amazon Web Services
Simone Brunozzi
 
PDF
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Danilo Poccia
 
PDF
Making web stack tasty using Cloudformation
Nicola Salvo
 
PDF
Infrastructure as Code: Manage your Architecture with Git
Danilo Poccia
 
PPTX
Utah Codecamp Cloud Computing
Tom Creighton
 
PPTX
Scaling horizontally on AWS
Bozhidar Bozhanov
 
PDF
AWS DevOps - Terraform, Docker, HashiCorp Vault
Grzegorz Adamowicz
 
PDF
Infrastructure as Code: Manage your Architecture with Git
Danilo Poccia
 
PDF
CloudFormation vs. Elastic Beanstalk & Use cases
Wayland Zhang
 
PPTX
Aws simple icons_ppt
Ravi S
 
PDF
Cloud patterns applied
Lars Fronius
 
PDF
How to build a Citrix infrastructure on AWS
Denis Gundarev
 
PPTX
Weaveworks at AWS re:Invent 2016: Operations Management with Amazon ECS
Weaveworks
 
PDF
Dev & Test on AWS - Journey Through the Cloud
Ian Massingham
 
PPTX
EC2 Computo en la Nube
Amazon Web Services LATAM
 
PDF
Auto Scaling Groups
Peter Sankauskas
 
PPTX
Compute Services con AWS
Amazon Web Services LATAM
 
PDF
002 AWSSlides.pdf
DrBashirMSaad
 
PDF
AWS Cloud Formation
Mahesh Raj
 
Programando sua infraestrutura com o AWS CloudFormation
Amazon Web Services LATAM
 
5 things you don't know about Amazon Web Services
Simone Brunozzi
 
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Danilo Poccia
 
Making web stack tasty using Cloudformation
Nicola Salvo
 
Infrastructure as Code: Manage your Architecture with Git
Danilo Poccia
 
Utah Codecamp Cloud Computing
Tom Creighton
 
Scaling horizontally on AWS
Bozhidar Bozhanov
 
AWS DevOps - Terraform, Docker, HashiCorp Vault
Grzegorz Adamowicz
 
Infrastructure as Code: Manage your Architecture with Git
Danilo Poccia
 
CloudFormation vs. Elastic Beanstalk & Use cases
Wayland Zhang
 
Aws simple icons_ppt
Ravi S
 
Cloud patterns applied
Lars Fronius
 
How to build a Citrix infrastructure on AWS
Denis Gundarev
 
Weaveworks at AWS re:Invent 2016: Operations Management with Amazon ECS
Weaveworks
 
Dev & Test on AWS - Journey Through the Cloud
Ian Massingham
 
EC2 Computo en la Nube
Amazon Web Services LATAM
 
Auto Scaling Groups
Peter Sankauskas
 
Compute Services con AWS
Amazon Web Services LATAM
 
002 AWSSlides.pdf
DrBashirMSaad
 
AWS Cloud Formation
Mahesh Raj
 
Ad

Recently uploaded (20)

PPTX
Darren Mills The Migration Modernization Balancing Act: Navigating Risks and...
AWS Chicago
 
PPTX
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
ShapeBlue
 
PDF
Shuen Mei Parth Sharma Boost Productivity, Innovation and Efficiency wit...
AWS Chicago
 
PDF
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 
PPTX
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
PPT
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
PDF
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
ShapeBlue
 
PDF
Upgrading to z_OS V2R4 Part 01 of 02.pdf
Flavio787771
 
PDF
2025-07-15 EMEA Volledig Inzicht Dutch Webinar
ThousandEyes
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
PDF
Novus Safe Lite- What is Novus Safe Lite.pdf
Novus Hi-Tech
 
PDF
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
PDF
UiPath vs Other Automation Tools Meeting Presentation.pdf
Tracy Dixon
 
PDF
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
PPTX
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
PDF
Ampere Offers Energy-Efficient Future For AI And Cloud
ShapeBlue
 
PPTX
Top Managed Service Providers in Los Angeles
Captain IT
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PDF
Rethinking Security Operations - SOC Evolution Journey.pdf
Haris Chughtai
 
Darren Mills The Migration Modernization Balancing Act: Navigating Risks and...
AWS Chicago
 
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
ShapeBlue
 
Shuen Mei Parth Sharma Boost Productivity, Innovation and Efficiency wit...
AWS Chicago
 
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
ShapeBlue
 
Upgrading to z_OS V2R4 Part 01 of 02.pdf
Flavio787771
 
2025-07-15 EMEA Volledig Inzicht Dutch Webinar
ThousandEyes
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
Novus Safe Lite- What is Novus Safe Lite.pdf
Novus Hi-Tech
 
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
UiPath vs Other Automation Tools Meeting Presentation.pdf
Tracy Dixon
 
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
Ampere Offers Energy-Efficient Future For AI And Cloud
ShapeBlue
 
Top Managed Service Providers in Los Angeles
Captain IT
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
Rethinking Security Operations - SOC Evolution Journey.pdf
Haris Chughtai
 
Ad

Scalable and Fault-Tolerant Apps with AWS

  • 1. Amazon Web Services Fernando Rodriguez Olivera @frodriguez Buenos Aires, Argentina, May 2013 Buenos Aires High Scalability Group Scalable and Fault-Tolerant Apps with AWS
  • 2. AWS Regions Virginia (5 AZs, 2006) California (3 AZs, 2009) Oregon (3 AZs, 2011) Ireland (3 AZs, 2007) Tokyo (3 AZs, 2011) Singapore (2 AZs, 2011) 23 Availabilty Zones + (2 GovCloud) North America South America Europe Asia Pacific São Paulo (2 AZs, 2011) Sydney (2 AZs, 2012) 23 (+ 2Gov) AZs GovCloud (2 AZs, 2011)
  • 3. Availability Zones DC1 DC2 DC3 DC4 DC5 DC6 DC7 DC8 DC9 DC10 us-east-1a us-east-1b us-east-1c “Our US East-1 Region consists of more than 10 datacenters structured into multiple Availability Zones.” [July, 2012] (http://aws.amazon.com/message/67457/) DataCenters > AZs
  • 4. Core1 EC2 - Semi Dedicated Resources Disk1 EC2 Instance EC2 Instance EC2 Instance EC2 Instance XEN Core2 Core3 Core4 Disk1 Disk1 Disk1 CPU RAM DISK Text
  • 5. EBS (Elastic Block Storage) EC2 Instance A B C EBS Volume A A B BC C EBS Cluster Local Network Shared or Dedicated (EBS Optimized) Standard or Provisioned IOPS
  • 7. Elastic Capacity Reserved Capacity On Demand Amazon Datacenter(AZ) Spot Instances (Bidding)
  • 8. EC2 Pricing (US-East) Small Instance 1 Core 1.7 GB RAM 160 GB HDD On Demand $0.060/hr       $43.20  /  month R/Light 1yr $61  +  0.034/hr $61  +  $24.48/month $29.56  /  month R/Medium 1yr $139  +  0.021/hr $139  +  $15.12/month $26.70  /  month R/Heavy 1yr $169  +  0.014/hr $169  +  $10.08/month $24.16  /  month R/Light 3yr $96  +  0.027/hr $96  +  19.44/month $22.10  /  month R/Medium 3yr $215  +  0.017/hr $215  +  12.34/month $18.21  /  month R/Heavy 3yr $257  +  0.012/hr $257  +  8.64/month $15.77  /  month Spot $0.007/hr $5.04  /  month May/2013 1 EC2 Compute Unit
  • 9. Large Instance 2 Cores 7.5 GB RAM 850 GB HDD On Demand $0.240/hr       $172  /  month R/Light 1yr $243  +  0.136/hr $243  +  $97.92/month $118.17  /  month R/Medium 1yr $554  +  0.084/hr $554  +  $60.48/month $106.64  /  month R/Heavy 1yr $676  +  0.056/hr $676  +  $40.32/month $96.65  /  month R/Light 3yr $384  +  0.108/hr $384  +  77.76/month $88.42  /  month R/Medium 3yr $860  +  0.067/hr $860  +  48.24/month $72.12  /  month R/Heavy 3yr $1028  +  0.046/hr $1028  +  33.12/month $61.67  /  month Spot $0.026/hr $18.72  /  month May/2013 4 EC2 Compute Units EC2 Pricing (US-East)
  • 10. Amazon Web Services EC2 DynamoDB SQS - SNS CloudFormation API-HTTP/REST Java Ruby PHP Node.js Python* .NET Route53 CloudFront ... ServicesSDKs CommandLineTools
  • 11. CloudFormation - EC2 Instance  "myServer":  {          "Type":  "AWS::EC2::Instance",          "Properties":  {                  "ImageId"                  :  "ami-­‐0145d268",                  "InstanceType"        :  "m1.small",                  "KeyName"                  :  "mykey",                                  "UserData"  :  {  "Fn::Base64"  :  {  "Fn::Join"  :  ["",  [                          "#!/bin/bash",                                "n",                          "apt-­‐get  -­‐y  update",                    "n",                          "apt-­‐get  -­‐y  install  apache2",  "n"                  ]]}}          }  }
  • 12. CloudFormation - Security Group  "mySecurityGroup":  {          "Type":  "AWS::EC2::SecurityGroup",          "Properties":  {                  "GroupDescription"          :  "...",                  "SecurityGroupIngress"  :  [{                            "IpProtocol"  :  "tcp",                              "FromPort"      :  "22",                              "ToPort"          :  "22",                              "CidrIp"          :  "0.0.0.0/0"                    }]          }  }
  • 13. Elastic Load Balancer (ELB) Unhealthy Instance EC2 Instance EC2 Instance EC2 Instance HTTP/S-TCP/SSL Health Checks Balancing CloudWatch Latency - Requests - Status Codes Load Balancer
  • 14. Elastic Load Balancer (ELB) EC2 Instance EC2 Instance EC2 Instance EC2 Instance Load Balancer DNSBalancing (Client-Side) (MultiAZ) Load Balancing (Server Side) AZ 1 AZ 2 LB (AZ 1) LB (AZ 2)
  • 15. Elastic Load Balancer (ELB)                    lb-­‐loadbalancer...us-­‐east-­‐1.elb.amazonaws.com    IPv4          ipv6.lb-­‐loadBalancer...us-­‐east-­‐1.elb.amazonaws.com    IPv6 dualstack.lb-­‐loadBalancer...us-­‐east-­‐1.elb.amazonaws.com    IPv4/IPv6 Region Different IPs for each AZ NameStack (DNS Name) DNS Name CNAME IPv4/IPv6
  • 16. CloudFormation - Load Balancer (1/2)    "balancer":  {          "Type":  "AWS::ElasticLoadBalancing::LoadBalancer",          "Properties":  {                    "AvailabilityZones"  :  {  "Fn::GetAZs"  :  ""  },                  "Listeners":  [{                          "Protocol"                  :  "HTTP",                          "LoadBalancerPort"  :  "80",                          "InstancePort"          :  "80"                  }],  }
  • 17. CloudFormation - Load Balancer (2/2)    "balancer":  {          "Type"  :  "AWS::ElasticLoadBalancing::LoadBalancer",          "Properties"  :  {                  "HealthCheck"  :  {                          "Interval"                      :  "25",                          "Target"                          :  "HTTP:80/",                          "Timeout"                        :  "10",                          "UnhealthyThreshold"  :  "2",                          "HealthyThreshold"      :  "2"                  }              } }
  • 18. AutoScaling Groups EC2 Instance EC2 Instance EC2 Instance AutoScaling Group Launch Config Min: 2 Max: 8Desired: 4 Cloud Watch AlarmsScaling Policy +1 Scaling Policy -1 avg  cpu  >  70 avg  cpu  <  40 EC2 Instance
  • 20. CloudFormation - AutoScaling Group  "autoScalingGroup":  {          "Type"  :  "AWS::AutoScaling::AutoScalingGroup",          "Properties"  :  {                  "AvailabilityZones"              :  {  "Fn::GetAZs"  :  ""  },                  "LaunchConfigurationName"  :  {                            "Ref"  :  "launchConfig"                    },                  "MinSize"                  :  "2",                  "MaxSize"                  :  "8",                  "DesiredCapacity"  :  "4",          }  }
  • 21. CloudFormation - Launch Config  "launchConfig":  {          "Type":  "AWS::AutoScaling::LaunchConfiguration",          "Properties"  :  {                  "ImageId"            :  "ami-­‐0145d268",                  "InstanceType"  :  "m1.small",                    ...                                  "UserData"  :  {  "Fn::Base64"  :  {  "Fn::Join"  :  ["",  [                          "#!/bin/bash",                                "n",                          "apt-­‐get  -­‐y  update",                    "n",                          "apt-­‐get  -­‐y  install  apache2",  "n"                  ]]}}          }  }
  • 22. CloudFormation - CPU Alarms (1/2)    "cpuHigh":  {          "Type":  "AWS::CloudWatch::Alarm",          "Properties":  {                "Namespace"    :  "AWS/EC2",                "MetricName"  :  "CPUUtilization",                "Statistic"    :  "Average",                "Dimensions"  :  [{                        "Name"    :  "AutoScalingGroupName",                        "Value"  :  {  "Ref"  :  "autoScalingGroup"  }                }],                ...          }  }
  • 23. CloudFormation - CPU Alarms (2/2)    "cpuHigh":  {          "Type":  "AWS::CloudWatch::Alarm",          "Properties"  :  {                "Period"                          :  "60",                "EvaluationPeriods"    :  "2",                "ComparisonOperator"  :  "GreaterThanThreshold"                "Threshold"                    :  "70",                "AlarmActions"              :  [{  "Ref":  "scaleUpPolicy"  }],                    } }
  • 24. CloudFormation - Scaling Policy    "scaleUpPolicy":  {          "Type":  "AWS::AutoScaling::ScalingPolicy",          "Properties"  :  {                  "AdjustmentType"              :  "ChangeInCapacity",                  "ScalingAdjustment"        :  "1",                                "Cooldown"                          :  "60",                  "AutoScalingGroupName"  :  {                            "Ref":  "autoScalingGroup"                    }      } }
  • 25. AutoScaling & ELB EC2 Instance EC2 Instance EC2 Instance EC2 Instance DNSBalancing (Client-Side) Health Check LB Registration Unhealthy Instance Notifications from LB LB (AZ 1) LB (AZ 2)
  • 26. CloudFormation - AutoScaling Group  "autoScalingGroup"  :  {          "Type":  "AWS::AutoScaling::AutoScalingGroup",          "Properties":  {                  ...                  "LoadBalancerNames"  :  [{                            "Ref"  :  "balancer"                    }]          }  }
  • 27. AutoScaling & Multiple Regions AutoScaling Group ue-west-1 (2 AZ) EC2 Instance EC2 Instance EC2 Instance EC2 Instance AutoScaling Group us-east-1 (2 AZ) EC2 Instance EC2 Instance EC2 Instance EC2 Instance EC2 Instance EC2 Instance ELB ELB US CA MX Route 53 Route 53 ES DE IT Latency Based Routing
  • 28. RDS (Relational Database Service) MySQL MySQL Active Stand-by AZ 1 AZ 2 Synchronous Replication MySQL MySQL MySQL Asynchronous Replication Read Replicas
  • 29. Simple Queue Service (SQS) EC2 Instance EC2 Instance Queue EC2 Instance EC2 Instance AutoScalingGroups CloudWatch Alarms Scaling Policy
  • 30. Simple Notification Service (SNS) SNSTopic HTTP Server Mail Server Subscribers
  • 31. CloudFormation - Route 53 (DNS)    "dns":  {      "Type"  :  "AWS::Route53::RecordSetGroup",      "Properties"  :  {              "HostedZoneName"  :  "example.com.",              "RecordSets"          :  [{                        "Name"                        :  "www.example.com.",                        "Type"                        :  "CNAME",                          "TTL"                          :  "300",                        "ResourceRecords"  :                              [{  "Fn::GetAtt"  :  [  "balancer",  "DNSName"  ]}]              }]        } }
  • 32. CloudFormation Templates {        "AWSTemplateFormatVersion"  :  "2010-­‐09-­‐09",        "Description"  :  "  ...  ",        "Parameters"    :  {  ...  },        "Mappings"        :  {  ...  },        "Resources"      :  {  ...  },        "Outputs"          :  {  ...  } }
  • 33. Thanks, Fernando Rodriguez Olivera @frodriguez frodriguez <at> gmail.com http://www.meetup.com/Buenos-Aires-High-Scalability-Group/