SlideShare a Scribd company logo
1 of 112
Taking advantage of the Amazon Web Services Family @Ben_Hall Ben@BenHall.me.uk Blog.BenHall.me.uk MaydayHQ.com
Agenda S3 EC2 Structuring applications Others
What is AWS? The way most startups survive Collection of services each solving one small part of the overall problem Platform / Foundation
http://www.cargolaw.com/images/disaster2007.Ital.Florida7.GIF Amazon S3Amazon Simple Storage Service
Amazon Product ImagesTwitter Profile ImagesSmugMug – 10tb each monthDropboxCurrently has 449 billion files
AppHarbour’s (or any PaaS) storage recommendation
Designed to provide 99.99% durability and 99.99% availability  Designed to provide 99.999999999% durability and 99.99% availability Also versioning allows you to preserve, retrieve, and restore  every version of every object stored in your bucket
How to access files?
Bucket Name https://s3.amazonaws.com/DDDNorth_Demo_1/ ddd_north_s3.html File Name
REST API GET DELETE PUT http://docs.amazonwebservices.com/AmazonS3/latest/API/index.html
GET / HTTP/1.1 Host: BucketName.s3.amazonaws.com Authorization: AWS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE= <?xml version="1.0" encoding="UTF-8"?> <ListBucketResultxmlns="http://s3.amazonaws.com/doc/2006-03-01">     <Name>bucket</Name>     <Prefix/>     <Marker/>     <MaxKeys>1000</MaxKeys>     <IsTruncated>false</IsTruncated>     <Contents> <Key>my-image.jpg</Key>         <LastModified>2009-10-12T17:50:30.000Z</LastModified>         <ETag>&quot;fba9dede5f27731c9771645a39863328&quot;</ETag>         <Size>434234</Size>         <StorageClass>STANDARD</StorageClass>         <Owner>             <ID>8a6925ce4a7f21c32aa379004fef</ID>             <DisplayName>mtd@amazon.com</DisplayName>         </Owner>     </Contents> </ListBucketResult>
PUT /my-image.jpg HTTP/1.1 Host: myBucket.s3.amazonaws.com Authorization: AWS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE= Content-Type: text/plain Content-Length: 11434 Expect: 100-continue HTTP/1.1 100 Continue HTTP/1.1 200 OK x-amz-id-2: LriYPLdmOdAiIfgSm/F1YsViT1LW94/xUQxMsF7xiEb1a0wiIOIxl+zbwZ163pt7 x-amz-request-id: 0A49CE4060975EAC x-amz-version-id: 43jfkodU8493jnFJD9fjj3HHNVfdsQUIFDNsidf038jfdsjGFDSIRp Date: Wed, 12 Oct 2009 17:50:00 GMT ETag: "fbacf535f27731c9771645a39863328" Content-Length: 0 Connection: close Server: AmazonS3
.NET SDK using (AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey)) { MemoryStreamms = new MemoryStream(); PutObjectRequest request = new PutObjectRequest(); request.WithBucketName("Demo_1")     .WithCannedACL(S3CannedACL.PublicRead)     .WithKey("image.jpg").InputStream = file.InputStream;     S3Response response = client.PutObject(request); } http://aws.amazon.com/sdkfornet/
.NET SDK ListObjectsRequest request = new ListObjectsRequest(); request.BucketName = bucketName; using (ListObjectsResponse response = client.ListObjects(request)) { foreach (S3Object entry in response.S3Objects)     { Console.WriteLine("key = {0} size = {1}", entry.Key, entry.Size);     } }
https://s3.amazonaws.com/DDDNorth_Demo_1/ ddd_north_s3.html?torrent S3 Torrent Support
CloudFront Video Streaming
Index Page
Bucket Name
date = Time.now.strftime("%a, %d %b %Y %H:%M:%S %Z") digest = Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new('sha1'), aws_secret, date)).strip uri = URI.parse("https://cloudfront.amazonaws.com/2010-08-01/distribution/#{distribution}/invalidation") req = Net::HTTP::Post.new(uri.path) req.initialize_http_header({   'x-amz-date' => date,   'Content-Type' => 'text/xml',   'Authorization' => "AWS %s:%s" % [aws_account, digest] }) req.body = "<InvalidationBatch><Path>" + path + "</Path><CallerReference>ref_#{Time.now.utc.to_i}</CallerReference></InvalidationBatch>" http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE res = http.request(req)
WARNING HTTPS and CNAMEs are not supported S3 bucket name must only contain lower case alphanumeric characters, periods, or hyphens Bucket names must be unique across entire AWS You can’t rename – Delete + Recreate (which costs)
Cost Data transfer from EC2 machines in same region are free AppHarbour runs out of US East Region, meaning transfers to US Standard are free.
1gb stored, 10gb downloaded via 1,000,000 requests == $2.22 per month 1gb stored, 1tb downloaded via 10,000,000 requests == $132.90 per month CloudFront has additional pricing. 10gb = $2 http://calculator.s3.amazonaws.com/calc5.html
Amazon EC2Amazon Elastic compute cloud http://www.flickr.com/photos/clarkk/38817024/
Heroku, AppHarbouretcZynga > 12,000 nodesAmazon SilkAmazon
Built on top of XEN virtualisationYes, you could run a private EC2
Be safe
Instance Types On demand Reserved Spot
Spot Instance Bidding Think Differently. Design a system capable of supporting it Save!
Instance Sizes 32bit – micro, small, medium 64bit – Extra-large > Super computer – GPU 1 ECU (biggest == 20) == 2007 Xeon processor / 1.0-1.2 GHz 2007 Opteron
Availability Zones Availability Zones are distinct locations that are engineered to be insulated from failures in other Availability Zone 2-3 per region.
Regions US East (Northern Virginia) US West (Northern California) EU (Ireland) Asia Pacific (Singapore) Asia Pacific (Tokyo)
Business / Technical Decisions Geo-location It’s a data centre, it can die. Scale across multiple regions for maximum up-time.
EBS & Snapshots EBS == Hard drive. Can increase volume size, but means taking machine down.  Snapshots == Backup. Can attach to new / different AMI
Keypairs BE CAREFUL – DON’T LOSE THE FILE Used to generate password / SSH auth What do you do if you lose the key pair? Storing in AMI? Encrypt with key passed in via user-data
User Data Install-lamp #!/bin/bash set -e -x export DEBIAN_FRONTEND=noninteractive apt-get update && apt-get upgrade -y tasksel install lamp-server echo "Please remember to set the MySQL root password!” ec2-run-instances --key KEYPAIR --user-data-file install-lamp ami-bf5eb9d6
AMI Amazon Machine Image Official base snapshots or private AMI images allow you to spin up multiple machines. Great when combined with Spot Pricing. Before creating AMI for Windows: Disable SysPrep (BundleConfig.xml) Disable machine renaming (Config.xml)
CloudWatch Alerts
Auto-scaling Spin up / down nodes
Starting machines via cmd
ec2-describe-images -o amazon IMAGE   ami-23b6534a    ec2-public-images/fedora-core4-apache.manifest.xml IMAGE   ami-25b6534c    ec2-public-images/fedora-core4-apache-mysql.manifest.xml IMAGE   ami-26b6534f    ec2-public-images/developer-image.manifest.xml IMAGE   ami-2bb65342    ec2-public-images/getting-started.manifest.xml ec2-run-instances ami-23b6534a -k windows RESERVATION     r-xxxxxxxxxxxxxxxxxxxx    default INSTANCE        i-xxxxxxxx      ami-23b6534a                    pending windows ec2-describe-instances RESERVATION     r-xxxxxxxxxxxxxxxxxxxx    default INSTANCE        i-xxxxxxxx      ami-23b6534a    ec2-xx-xxx-xx-xx.compute-1.amazonaws.com ec2-terminate-instances i-xxxxxxxx
Via .NET SDK
public void LaunchEc2ImageWithSqlServerInstalled() { RunningInstancetargetMachineToStart = null;     string ami = "ami-e0916389"; varrunInstancesRequest = new RunInstancesRequest(); runInstancesRequest.ImageId = ami; runInstancesRequest.MinCount = 1; runInstancesRequest.MaxCount = 1; runInstancesRequest.KeyName = "aws"; runInstancesRequest.InstanceType = "t1.micro"; runInstancesRequest.Placement = new Placement { AvailabilityZone = "us-east-1b" }; var response = _ec2.RunInstances(runInstancesRequest); foreach (var instance in response.RunInstancesResult.Reservation.RunningInstance)     {          if(instance.InstanceState.Name == "pending") //NEED TO WAIT FOR "Running” targetMachineToStart = WaitUntilInstanceStateIs(instance.InstanceId, "running");      } }
DescribeInstancesRequest request = new DescribeInstancesRequest(); varresponse = _ec2.DescribeInstances(request); varcount = response.DescribeInstancesResult.Reservation.Count; foreach(var reservation in response.DescribeInstancesResult.Reservation) { var instance = reservation.RunningInstance[0]; }
public string GetPassword(string instanceId) {     string rsaPrivateKey;     using (StreamReader reader = new StreamReader(pathToPem))     { rsaPrivateKey = reader.ReadToEnd();     } GetPasswordDataResult result = _ec2.GetPasswordData(new GetPasswordDataRequest()         .WithInstanceId(instanceId)).GetPasswordDataResult; var pass = result.GetDecryptedPassword(rsaPrivateKey); Console.WriteLine(pass);     return pass; }
WinRM string path = “C:indowsystem32inrs.exe” string args = string.Format("-r:{0} -u:Administrator -p:{1} quot;{2}quot;", machine.Url, GetPassword(machine.InstanceId), cmd); Process.start(path, args); Remotely connects to EC2 machine, executes command.
List<String> commands = new List<string>(); commands.Add(@"New-Item c:mp -type directory -ErrorActionSilentlyContinue"); commands.Add(@"$memcached_url = ""http://www.meerkatalyst.com/beta/agent.zip"""); commands.Add(@"$memcached_path = ""c:mpeerkatalyst_agent.zip"""); commands.Add(@"$zip_url = ""https://s3.amazonaws.com/meerkatalyst-us/utilities/unzip.exe"""); commands.Add(@"$zip_path = ""c:mpnzip.exe"""); commands.Add("$client = new-object System.Net.WebClient"); commands.Add("$client.DownloadFile( $memcached_url, $memcached_path )"); commands.Add("$client.DownloadFile( $zip_url, $zip_path )"); commands.Add(@"invoke-expression ""C:mpnzip.exe -o C:mpeerkatalyst_agent.zip -d C:mpgent"""); StringBuilder builder = new StringBuilder(); foreach (var command in commands) builder.AppendFormat("echo {0} >> script.ps1 && ", command); cmd = “string.Format("{0} powershell -File script.ps1 && del script.ps1 && {1} &", builder, pathToAgent)” var output = ExecuteRemoteCommand(cmd, machine); //ask me for the code
WARNINGS http://www.flickr.com/photos/gagilas/2659695352/
Temp Data It will get deleted on reboots. RabbitMQ + Hbase both used temp locations as default storage.  Reboot == lost work.  Takes a long time to debug.
Sharepoint / SQL Server + Rename Microsoft products generally don’t like a machine to be renamed. Reboots == rename as it’s based on IP. Return it off as described earlier.
Regions, Zones. They can go down.
Unofficial AMIs They are configured by someone else… Who knows what they have done.
Double prices if you want SQL Server More of less anyway. Large	$0.48 per hour	 => $1.08 per hour Extra Large	$0.96 per hour	 => $1.56 per hour
Architecture & AWSApplication considerations for AWS  http://www.flickr.com/photos/wouterpostma/695850212/
Configuration Self discovery Use DNS + Load Balancers to reduce config changes  Internal DNS on EC2? HAProxy Store in external system which can update / replicate to other nodes.
Hybrid Cloud Providers One won’t fit all Optimize for use-case Best of breed CAN BE REALLY EXPENSIVE + COMPLEX!
Think! At some point and scale, the cloud doesn’t make sense.  Zynga has around 12,000 EC2 nodes Once game is proven, moved to private cloud. EC2 for experiments and additional load.
Small, isolated components Design system for scale Design system for failure Message Queues are great! Use them. Keep everything async
User’s Browser Javascript File  via Lighttpd ELB Single EC2 Machine Easily add additional nodes to ELB User’s Browser Javascript File  via S3 CloudFront
Heroku + NodeJS Data Collection Ruby Data Processor RabbitMQ Queue HBase Data Storage Heroku + Rails UI Single EC2 Machine Three separate components, designed to scale each individually when required. Deployment, Scale, Cost
Chaos Monkey Kill random machines. See what breaks, fix it. Amazon will do it without telling you, be prepared and plan ahead! http://techblog.netflix.com/2010/12/5-lessons-weve-learned-using-aws.html
Other AWS ServicesElasticCache, MapReduce, SQS, SNS, etc http://www.flickr.com/photos/kky/704056791/
Elastic Beanstalk – Easily deploy Java based applications + Stack VPC – virtual network topology Elastic MapReduce – Hosted Hadoop CloudFormation – Similar to Chef / Puppet. Start group of machines RDS – Hosted MySQL / Oracle ElastiCache – Hosted Memcached SNS - Simple Notification Service. Similar to a queue IAM – Sharing access to AWS with a team
Amazon Mechanical Turk EC2 for Humans! Crowdsourcing work Grockit used it to verify content - http://mechanicalturk.typepad.com/blog/2011/10/editors-note-ari-bader-natal-is-the-chief-learning-architect-at-grockit-the-fast-growing-online-social-learning-startup-bac.html “Usability Test on www.somewebsite.com #1148” - $10 “Click on google +1 for my website - $0.01”
http://awsdocs.s3.amazonaws.com/toolkit-visualstudio/latest/aws-tkv-ug.pdf AWS Toolkit for Visual Studio http://aws.amazon.com/visualstudio/
Summary http://www.flickr.com/photos/leon_homan/2856628778/
Amazon Web Services Fast Cheap Flexible http://highscalability.com/
THANK YOU! @Ben_Hall Ben@BenHall.me.uk Blog.BenHall.me.uk

More Related Content

What's hot

Networking and Data Access with Eqela
Networking and Data Access with EqelaNetworking and Data Access with Eqela
Networking and Data Access with Eqela
jobandesther
 
Rally - Benchmarking_as_a_service - Openstack meetup
Rally - Benchmarking_as_a_service - Openstack meetupRally - Benchmarking_as_a_service - Openstack meetup
Rally - Benchmarking_as_a_service - Openstack meetup
Ananth Padmanabhan
 
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
Wesley Beary
 
Set up Hadoop Cluster on Amazon EC2
Set up Hadoop Cluster on Amazon EC2Set up Hadoop Cluster on Amazon EC2
Set up Hadoop Cluster on Amazon EC2
IMC Institute
 

What's hot (19)

Deploy Mediawiki Using FIWARE Lab Facilities
Deploy Mediawiki Using FIWARE Lab FacilitiesDeploy Mediawiki Using FIWARE Lab Facilities
Deploy Mediawiki Using FIWARE Lab Facilities
 
ARGUS - THE OMNISCIENT CI
ARGUS - THE OMNISCIENT CIARGUS - THE OMNISCIENT CI
ARGUS - THE OMNISCIENT CI
 
Networking and Data Access with Eqela
Networking and Data Access with EqelaNetworking and Data Access with Eqela
Networking and Data Access with Eqela
 
Infrastructure-as-Code (IaC) Using Terraform (Advanced Edition)
Infrastructure-as-Code (IaC) Using Terraform (Advanced Edition)Infrastructure-as-Code (IaC) Using Terraform (Advanced Edition)
Infrastructure-as-Code (IaC) Using Terraform (Advanced Edition)
 
Artem Zhurbila - docker clusters (solit 2015)
Artem Zhurbila - docker clusters (solit 2015)Artem Zhurbila - docker clusters (solit 2015)
Artem Zhurbila - docker clusters (solit 2015)
 
DevOps Enabling Your Team
DevOps Enabling Your TeamDevOps Enabling Your Team
DevOps Enabling Your Team
 
Sherlock Homepage - A detective story about running large web services - WebN...
Sherlock Homepage - A detective story about running large web services - WebN...Sherlock Homepage - A detective story about running large web services - WebN...
Sherlock Homepage - A detective story about running large web services - WebN...
 
Rally - Benchmarking_as_a_service - Openstack meetup
Rally - Benchmarking_as_a_service - Openstack meetupRally - Benchmarking_as_a_service - Openstack meetup
Rally - Benchmarking_as_a_service - Openstack meetup
 
How to scheduled jobs in a cloudera cluster without oozie
How to scheduled jobs in a cloudera cluster without oozieHow to scheduled jobs in a cloudera cluster without oozie
How to scheduled jobs in a cloudera cluster without oozie
 
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
 
Optimize Is (Not) Bad For You - Rafał Kuć, Sematext Group, Inc.
Optimize Is (Not) Bad For You - Rafał Kuć, Sematext Group, Inc.Optimize Is (Not) Bad For You - Rafał Kuć, Sematext Group, Inc.
Optimize Is (Not) Bad For You - Rafał Kuć, Sematext Group, Inc.
 
Dpilot Source Code With ScreenShots
Dpilot Source Code With ScreenShots Dpilot Source Code With ScreenShots
Dpilot Source Code With ScreenShots
 
Source Code for Dpilot
Source Code for Dpilot Source Code for Dpilot
Source Code for Dpilot
 
ClickHouse on Kubernetes, by Alexander Zaitsev, Altinity CTO
ClickHouse on Kubernetes, by Alexander Zaitsev, Altinity CTOClickHouse on Kubernetes, by Alexander Zaitsev, Altinity CTO
ClickHouse on Kubernetes, by Alexander Zaitsev, Altinity CTO
 
How to deploy spark instance using ansible 2.0 in fiware lab v2
How to deploy spark instance using ansible 2.0 in fiware lab v2How to deploy spark instance using ansible 2.0 in fiware lab v2
How to deploy spark instance using ansible 2.0 in fiware lab v2
 
Angular2 rxjs
Angular2 rxjsAngular2 rxjs
Angular2 rxjs
 
Build, migrate and deploy apps for any environment with project Hammr , OW2co...
Build, migrate and deploy apps for any environment with project Hammr , OW2co...Build, migrate and deploy apps for any environment with project Hammr , OW2co...
Build, migrate and deploy apps for any environment with project Hammr , OW2co...
 
Appium Automation with Kotlin
Appium Automation with KotlinAppium Automation with Kotlin
Appium Automation with Kotlin
 
Set up Hadoop Cluster on Amazon EC2
Set up Hadoop Cluster on Amazon EC2Set up Hadoop Cluster on Amazon EC2
Set up Hadoop Cluster on Amazon EC2
 

Viewers also liked

Viewers also liked (20)

Continuous deployment
Continuous deploymentContinuous deployment
Continuous deployment
 
The Art Of Building Prototypes and MVPs
The Art Of Building Prototypes and MVPsThe Art Of Building Prototypes and MVPs
The Art Of Building Prototypes and MVPs
 
Testing ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETTesting ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NET
 
Lessons from running potentially malicious code inside Docker containers
Lessons from running potentially malicious code inside Docker containersLessons from running potentially malicious code inside Docker containers
Lessons from running potentially malicious code inside Docker containers
 
What Designs Need To Know About Visual Design
What Designs Need To Know About Visual DesignWhat Designs Need To Know About Visual Design
What Designs Need To Know About Visual Design
 
Node.js Anti Patterns
Node.js Anti PatternsNode.js Anti Patterns
Node.js Anti Patterns
 
Real World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsReal World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js Applications
 
Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)
 
Kata - Devops CDSummit LA 2015
Kata - Devops CDSummit LA 2015 Kata - Devops CDSummit LA 2015
Kata - Devops CDSummit LA 2015
 
Learning Patterns for the Overworked Developer
Learning Patterns for the Overworked DeveloperLearning Patterns for the Overworked Developer
Learning Patterns for the Overworked Developer
 
Alibaba Cloud Conference 2016 - Docker Open Source
Alibaba Cloud Conference   2016 - Docker Open Source Alibaba Cloud Conference   2016 - Docker Open Source
Alibaba Cloud Conference 2016 - Docker Open Source
 
Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)
 
Implementing Google's Material Design Guidelines
Implementing Google's Material Design GuidelinesImplementing Google's Material Design Guidelines
Implementing Google's Material Design Guidelines
 
Architecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based DeploymentsArchitecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based Deployments
 
Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016
 
Lessons from running potentially malicious code inside containers
Lessons from running potentially malicious code inside containersLessons from running potentially malicious code inside containers
Lessons from running potentially malicious code inside containers
 
The How and Why of Windows containers
The How and Why of Windows containersThe How and Why of Windows containers
The How and Why of Windows containers
 
Real World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionReal World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and Production
 
How I learned to stop worrying and love the cloud
How I learned to stop worrying and love the cloudHow I learned to stop worrying and love the cloud
How I learned to stop worrying and love the cloud
 
Deploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows ContainersDeploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows Containers
 

Similar to Taking advantage of the Amazon Web Services (AWS) Family

09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
Igor Bronovskyy
 
Programming Amazon Web Services for Beginners (1)
Programming Amazon Web Services for Beginners (1)Programming Amazon Web Services for Beginners (1)
Programming Amazon Web Services for Beginners (1)
Markus Klems
 
Systems Bioinformatics Workshop Keynote
Systems Bioinformatics Workshop KeynoteSystems Bioinformatics Workshop Keynote
Systems Bioinformatics Workshop Keynote
Deepak Singh
 
Setting Up Amazon EC2 server
Setting Up Amazon EC2 serverSetting Up Amazon EC2 server
Setting Up Amazon EC2 server
Tahsin Hasan
 

Similar to Taking advantage of the Amazon Web Services (AWS) Family (20)

How to build a Citrix infrastructure on AWS
How to build a Citrix infrastructure on AWSHow to build a Citrix infrastructure on AWS
How to build a Citrix infrastructure on AWS
 
Big Data Tools in AWS
Big Data Tools in AWSBig Data Tools in AWS
Big Data Tools in AWS
 
Scale Your Data Tier With Windows Server App Fabric
Scale Your Data Tier With Windows Server App FabricScale Your Data Tier With Windows Server App Fabric
Scale Your Data Tier With Windows Server App Fabric
 
Rapid JCR Applications Development with Sling
Rapid JCR Applications Development with SlingRapid JCR Applications Development with Sling
Rapid JCR Applications Development with Sling
 
Building Your First Big Data Application on AWS
Building Your First Big Data Application on AWSBuilding Your First Big Data Application on AWS
Building Your First Big Data Application on AWS
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
 
Docker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline ExecutionDocker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline Execution
 
Building Your First Big Data Application on AWS
Building Your First Big Data Application on AWSBuilding Your First Big Data Application on AWS
Building Your First Big Data Application on AWS
 
Viktor Tsykunov: Azure Machine Learning Service
Viktor Tsykunov: Azure Machine Learning ServiceViktor Tsykunov: Azure Machine Learning Service
Viktor Tsykunov: Azure Machine Learning Service
 
An intro to Docker, Terraform, and Amazon ECS
An intro to Docker, Terraform, and Amazon ECSAn intro to Docker, Terraform, and Amazon ECS
An intro to Docker, Terraform, and Amazon ECS
 
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 202010 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
 
[NDC 2019] Enterprise-Grade Serverless
[NDC 2019] Enterprise-Grade Serverless[NDC 2019] Enterprise-Grade Serverless
[NDC 2019] Enterprise-Grade Serverless
 
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
 
AWS Java SDK @ scale
AWS Java SDK @ scaleAWS Java SDK @ scale
AWS Java SDK @ scale
 
Cloud State of the Union for Java Developers
Cloud State of the Union for Java DevelopersCloud State of the Union for Java Developers
Cloud State of the Union for Java Developers
 
General Principles of Web Security
General Principles of Web SecurityGeneral Principles of Web Security
General Principles of Web Security
 
Programming Amazon Web Services for Beginners (1)
Programming Amazon Web Services for Beginners (1)Programming Amazon Web Services for Beginners (1)
Programming Amazon Web Services for Beginners (1)
 
Scaling asp.net websites to millions of users
Scaling asp.net websites to millions of usersScaling asp.net websites to millions of users
Scaling asp.net websites to millions of users
 
Systems Bioinformatics Workshop Keynote
Systems Bioinformatics Workshop KeynoteSystems Bioinformatics Workshop Keynote
Systems Bioinformatics Workshop Keynote
 
Setting Up Amazon EC2 server
Setting Up Amazon EC2 serverSetting Up Amazon EC2 server
Setting Up Amazon EC2 server
 

More from Ben Hall

More from Ben Hall (15)

The Art Of Documentation - NDC Porto 2022
The Art Of Documentation - NDC Porto 2022The Art Of Documentation - NDC Porto 2022
The Art Of Documentation - NDC Porto 2022
 
The Art Of Documentation for Open Source Projects
The Art Of Documentation for Open Source ProjectsThe Art Of Documentation for Open Source Projects
The Art Of Documentation for Open Source Projects
 
Three Years of Lessons Running Potentially Malicious Code Inside Containers
Three Years of Lessons Running Potentially Malicious Code Inside ContainersThree Years of Lessons Running Potentially Malicious Code Inside Containers
Three Years of Lessons Running Potentially Malicious Code Inside Containers
 
Containers without docker
Containers without dockerContainers without docker
Containers without docker
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetes
 
The Art of Documentation and Readme.md for Open Source Projects
The Art of Documentation and Readme.md for Open Source ProjectsThe Art of Documentation and Readme.md for Open Source Projects
The Art of Documentation and Readme.md for Open Source Projects
 
How Secure Are Docker Containers?
How Secure Are Docker Containers?How Secure Are Docker Containers?
How Secure Are Docker Containers?
 
The Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud NativeThe Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud Native
 
Scaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container ServiceScaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container Service
 
The art of documentation and readme.md
The art of documentation and readme.mdThe art of documentation and readme.md
The art of documentation and readme.md
 
Experimenting and Learning Kubernetes and Tensorflow
Experimenting and Learning Kubernetes and TensorflowExperimenting and Learning Kubernetes and Tensorflow
Experimenting and Learning Kubernetes and Tensorflow
 
Running .NET on Docker
Running .NET on DockerRunning .NET on Docker
Running .NET on Docker
 
Real World Lessons on the Pain Points of Node.JS Application
Real World Lessons on the Pain Points of Node.JS ApplicationReal World Lessons on the Pain Points of Node.JS Application
Real World Lessons on the Pain Points of Node.JS Application
 
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with KubernetesTips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
Tips on solving E_TOO_MANY_THINGS_TO_LEARN with Kubernetes
 
Real World Lessons On The Anti-Patterns of Node.JS
Real World Lessons On The Anti-Patterns of Node.JSReal World Lessons On The Anti-Patterns of Node.JS
Real World Lessons On The Anti-Patterns of Node.JS
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

Taking advantage of the Amazon Web Services (AWS) Family

  • 1. Taking advantage of the Amazon Web Services Family @Ben_Hall Ben@BenHall.me.uk Blog.BenHall.me.uk MaydayHQ.com
  • 2. Agenda S3 EC2 Structuring applications Others
  • 3. What is AWS? The way most startups survive Collection of services each solving one small part of the overall problem Platform / Foundation
  • 4.
  • 6. Amazon Product ImagesTwitter Profile ImagesSmugMug – 10tb each monthDropboxCurrently has 449 billion files
  • 7. AppHarbour’s (or any PaaS) storage recommendation
  • 8.
  • 9.
  • 10. Designed to provide 99.99% durability and 99.99% availability Designed to provide 99.999999999% durability and 99.99% availability Also versioning allows you to preserve, retrieve, and restore every version of every object stored in your bucket
  • 11.
  • 12. How to access files?
  • 14.
  • 15.
  • 16. REST API GET DELETE PUT http://docs.amazonwebservices.com/AmazonS3/latest/API/index.html
  • 17. GET / HTTP/1.1 Host: BucketName.s3.amazonaws.com Authorization: AWS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE= <?xml version="1.0" encoding="UTF-8"?> <ListBucketResultxmlns="http://s3.amazonaws.com/doc/2006-03-01"> <Name>bucket</Name> <Prefix/> <Marker/> <MaxKeys>1000</MaxKeys> <IsTruncated>false</IsTruncated> <Contents> <Key>my-image.jpg</Key> <LastModified>2009-10-12T17:50:30.000Z</LastModified> <ETag>&quot;fba9dede5f27731c9771645a39863328&quot;</ETag> <Size>434234</Size> <StorageClass>STANDARD</StorageClass> <Owner> <ID>8a6925ce4a7f21c32aa379004fef</ID> <DisplayName>mtd@amazon.com</DisplayName> </Owner> </Contents> </ListBucketResult>
  • 18. PUT /my-image.jpg HTTP/1.1 Host: myBucket.s3.amazonaws.com Authorization: AWS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE= Content-Type: text/plain Content-Length: 11434 Expect: 100-continue HTTP/1.1 100 Continue HTTP/1.1 200 OK x-amz-id-2: LriYPLdmOdAiIfgSm/F1YsViT1LW94/xUQxMsF7xiEb1a0wiIOIxl+zbwZ163pt7 x-amz-request-id: 0A49CE4060975EAC x-amz-version-id: 43jfkodU8493jnFJD9fjj3HHNVfdsQUIFDNsidf038jfdsjGFDSIRp Date: Wed, 12 Oct 2009 17:50:00 GMT ETag: "fbacf535f27731c9771645a39863328" Content-Length: 0 Connection: close Server: AmazonS3
  • 19. .NET SDK using (AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey)) { MemoryStreamms = new MemoryStream(); PutObjectRequest request = new PutObjectRequest(); request.WithBucketName("Demo_1") .WithCannedACL(S3CannedACL.PublicRead) .WithKey("image.jpg").InputStream = file.InputStream; S3Response response = client.PutObject(request); } http://aws.amazon.com/sdkfornet/
  • 20. .NET SDK ListObjectsRequest request = new ListObjectsRequest(); request.BucketName = bucketName; using (ListObjectsResponse response = client.ListObjects(request)) { foreach (S3Object entry in response.S3Objects) { Console.WriteLine("key = {0} size = {1}", entry.Key, entry.Size); } }
  • 22.
  • 23.
  • 27.
  • 28. date = Time.now.strftime("%a, %d %b %Y %H:%M:%S %Z") digest = Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new('sha1'), aws_secret, date)).strip uri = URI.parse("https://cloudfront.amazonaws.com/2010-08-01/distribution/#{distribution}/invalidation") req = Net::HTTP::Post.new(uri.path) req.initialize_http_header({ 'x-amz-date' => date, 'Content-Type' => 'text/xml', 'Authorization' => "AWS %s:%s" % [aws_account, digest] }) req.body = "<InvalidationBatch><Path>" + path + "</Path><CallerReference>ref_#{Time.now.utc.to_i}</CallerReference></InvalidationBatch>" http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE res = http.request(req)
  • 29. WARNING HTTPS and CNAMEs are not supported S3 bucket name must only contain lower case alphanumeric characters, periods, or hyphens Bucket names must be unique across entire AWS You can’t rename – Delete + Recreate (which costs)
  • 30. Cost Data transfer from EC2 machines in same region are free AppHarbour runs out of US East Region, meaning transfers to US Standard are free.
  • 31. 1gb stored, 10gb downloaded via 1,000,000 requests == $2.22 per month 1gb stored, 1tb downloaded via 10,000,000 requests == $132.90 per month CloudFront has additional pricing. 10gb = $2 http://calculator.s3.amazonaws.com/calc5.html
  • 32.
  • 33. Amazon EC2Amazon Elastic compute cloud http://www.flickr.com/photos/clarkk/38817024/
  • 34. Heroku, AppHarbouretcZynga > 12,000 nodesAmazon SilkAmazon
  • 35. Built on top of XEN virtualisationYes, you could run a private EC2
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49. Instance Types On demand Reserved Spot
  • 50. Spot Instance Bidding Think Differently. Design a system capable of supporting it Save!
  • 51.
  • 52.
  • 53. Instance Sizes 32bit – micro, small, medium 64bit – Extra-large > Super computer – GPU 1 ECU (biggest == 20) == 2007 Xeon processor / 1.0-1.2 GHz 2007 Opteron
  • 54. Availability Zones Availability Zones are distinct locations that are engineered to be insulated from failures in other Availability Zone 2-3 per region.
  • 55. Regions US East (Northern Virginia) US West (Northern California) EU (Ireland) Asia Pacific (Singapore) Asia Pacific (Tokyo)
  • 56. Business / Technical Decisions Geo-location It’s a data centre, it can die. Scale across multiple regions for maximum up-time.
  • 57. EBS & Snapshots EBS == Hard drive. Can increase volume size, but means taking machine down. Snapshots == Backup. Can attach to new / different AMI
  • 58.
  • 59.
  • 60. Keypairs BE CAREFUL – DON’T LOSE THE FILE Used to generate password / SSH auth What do you do if you lose the key pair? Storing in AMI? Encrypt with key passed in via user-data
  • 61. User Data Install-lamp #!/bin/bash set -e -x export DEBIAN_FRONTEND=noninteractive apt-get update && apt-get upgrade -y tasksel install lamp-server echo "Please remember to set the MySQL root password!” ec2-run-instances --key KEYPAIR --user-data-file install-lamp ami-bf5eb9d6
  • 62. AMI Amazon Machine Image Official base snapshots or private AMI images allow you to spin up multiple machines. Great when combined with Spot Pricing. Before creating AMI for Windows: Disable SysPrep (BundleConfig.xml) Disable machine renaming (Config.xml)
  • 63.
  • 64.
  • 65.
  • 66.
  • 68. Auto-scaling Spin up / down nodes
  • 69.
  • 71. ec2-describe-images -o amazon IMAGE ami-23b6534a ec2-public-images/fedora-core4-apache.manifest.xml IMAGE ami-25b6534c ec2-public-images/fedora-core4-apache-mysql.manifest.xml IMAGE ami-26b6534f ec2-public-images/developer-image.manifest.xml IMAGE ami-2bb65342 ec2-public-images/getting-started.manifest.xml ec2-run-instances ami-23b6534a -k windows RESERVATION r-xxxxxxxxxxxxxxxxxxxx default INSTANCE i-xxxxxxxx ami-23b6534a pending windows ec2-describe-instances RESERVATION r-xxxxxxxxxxxxxxxxxxxx default INSTANCE i-xxxxxxxx ami-23b6534a ec2-xx-xxx-xx-xx.compute-1.amazonaws.com ec2-terminate-instances i-xxxxxxxx
  • 73. public void LaunchEc2ImageWithSqlServerInstalled() { RunningInstancetargetMachineToStart = null; string ami = "ami-e0916389"; varrunInstancesRequest = new RunInstancesRequest(); runInstancesRequest.ImageId = ami; runInstancesRequest.MinCount = 1; runInstancesRequest.MaxCount = 1; runInstancesRequest.KeyName = "aws"; runInstancesRequest.InstanceType = "t1.micro"; runInstancesRequest.Placement = new Placement { AvailabilityZone = "us-east-1b" }; var response = _ec2.RunInstances(runInstancesRequest); foreach (var instance in response.RunInstancesResult.Reservation.RunningInstance) { if(instance.InstanceState.Name == "pending") //NEED TO WAIT FOR "Running” targetMachineToStart = WaitUntilInstanceStateIs(instance.InstanceId, "running"); } }
  • 74. DescribeInstancesRequest request = new DescribeInstancesRequest(); varresponse = _ec2.DescribeInstances(request); varcount = response.DescribeInstancesResult.Reservation.Count; foreach(var reservation in response.DescribeInstancesResult.Reservation) { var instance = reservation.RunningInstance[0]; }
  • 75. public string GetPassword(string instanceId) { string rsaPrivateKey; using (StreamReader reader = new StreamReader(pathToPem)) { rsaPrivateKey = reader.ReadToEnd(); } GetPasswordDataResult result = _ec2.GetPasswordData(new GetPasswordDataRequest() .WithInstanceId(instanceId)).GetPasswordDataResult; var pass = result.GetDecryptedPassword(rsaPrivateKey); Console.WriteLine(pass); return pass; }
  • 76. WinRM string path = “C:indowsystem32inrs.exe” string args = string.Format("-r:{0} -u:Administrator -p:{1} quot;{2}quot;", machine.Url, GetPassword(machine.InstanceId), cmd); Process.start(path, args); Remotely connects to EC2 machine, executes command.
  • 77. List<String> commands = new List<string>(); commands.Add(@"New-Item c:mp -type directory -ErrorActionSilentlyContinue"); commands.Add(@"$memcached_url = ""http://www.meerkatalyst.com/beta/agent.zip"""); commands.Add(@"$memcached_path = ""c:mpeerkatalyst_agent.zip"""); commands.Add(@"$zip_url = ""https://s3.amazonaws.com/meerkatalyst-us/utilities/unzip.exe"""); commands.Add(@"$zip_path = ""c:mpnzip.exe"""); commands.Add("$client = new-object System.Net.WebClient"); commands.Add("$client.DownloadFile( $memcached_url, $memcached_path )"); commands.Add("$client.DownloadFile( $zip_url, $zip_path )"); commands.Add(@"invoke-expression ""C:mpnzip.exe -o C:mpeerkatalyst_agent.zip -d C:mpgent"""); StringBuilder builder = new StringBuilder(); foreach (var command in commands) builder.AppendFormat("echo {0} >> script.ps1 && ", command); cmd = “string.Format("{0} powershell -File script.ps1 && del script.ps1 && {1} &", builder, pathToAgent)” var output = ExecuteRemoteCommand(cmd, machine); //ask me for the code
  • 79. Temp Data It will get deleted on reboots. RabbitMQ + Hbase both used temp locations as default storage. Reboot == lost work. Takes a long time to debug.
  • 80. Sharepoint / SQL Server + Rename Microsoft products generally don’t like a machine to be renamed. Reboots == rename as it’s based on IP. Return it off as described earlier.
  • 81. Regions, Zones. They can go down.
  • 82.
  • 83. Unofficial AMIs They are configured by someone else… Who knows what they have done.
  • 84.
  • 85.
  • 86.
  • 87. Double prices if you want SQL Server More of less anyway. Large $0.48 per hour => $1.08 per hour Extra Large $0.96 per hour => $1.56 per hour
  • 88.
  • 89. Architecture & AWSApplication considerations for AWS http://www.flickr.com/photos/wouterpostma/695850212/
  • 90. Configuration Self discovery Use DNS + Load Balancers to reduce config changes Internal DNS on EC2? HAProxy Store in external system which can update / replicate to other nodes.
  • 91. Hybrid Cloud Providers One won’t fit all Optimize for use-case Best of breed CAN BE REALLY EXPENSIVE + COMPLEX!
  • 92. Think! At some point and scale, the cloud doesn’t make sense. Zynga has around 12,000 EC2 nodes Once game is proven, moved to private cloud. EC2 for experiments and additional load.
  • 93. Small, isolated components Design system for scale Design system for failure Message Queues are great! Use them. Keep everything async
  • 94. User’s Browser Javascript File via Lighttpd ELB Single EC2 Machine Easily add additional nodes to ELB User’s Browser Javascript File via S3 CloudFront
  • 95. Heroku + NodeJS Data Collection Ruby Data Processor RabbitMQ Queue HBase Data Storage Heroku + Rails UI Single EC2 Machine Three separate components, designed to scale each individually when required. Deployment, Scale, Cost
  • 96. Chaos Monkey Kill random machines. See what breaks, fix it. Amazon will do it without telling you, be prepared and plan ahead! http://techblog.netflix.com/2010/12/5-lessons-weve-learned-using-aws.html
  • 97. Other AWS ServicesElasticCache, MapReduce, SQS, SNS, etc http://www.flickr.com/photos/kky/704056791/
  • 98.
  • 99.
  • 100. Elastic Beanstalk – Easily deploy Java based applications + Stack VPC – virtual network topology Elastic MapReduce – Hosted Hadoop CloudFormation – Similar to Chef / Puppet. Start group of machines RDS – Hosted MySQL / Oracle ElastiCache – Hosted Memcached SNS - Simple Notification Service. Similar to a queue IAM – Sharing access to AWS with a team
  • 101. Amazon Mechanical Turk EC2 for Humans! Crowdsourcing work Grockit used it to verify content - http://mechanicalturk.typepad.com/blog/2011/10/editors-note-ari-bader-natal-is-the-chief-learning-architect-at-grockit-the-fast-growing-online-social-learning-startup-bac.html “Usability Test on www.somewebsite.com #1148” - $10 “Click on google +1 for my website - $0.01”
  • 102. http://awsdocs.s3.amazonaws.com/toolkit-visualstudio/latest/aws-tkv-ug.pdf AWS Toolkit for Visual Studio http://aws.amazon.com/visualstudio/
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 111. Amazon Web Services Fast Cheap Flexible http://highscalability.com/
  • 112. THANK YOU! @Ben_Hall Ben@BenHall.me.uk Blog.BenHall.me.uk

Editor's Notes

  1. Designed to provide 99.999999999% durability and 99.99%
  2. ProgramFiles\\Amazon\\Ec2ConfigSetupEc2ConfigServicesettings.exe
  3. ProgramFiles\\Amazon\\Ec2ConfigSetupEc2ConfigServicesettings.exe
  4. ProgramFiles\\Amazon\\Ec2ConfigSetupEc2ConfigServicesettings.exe
  5. Download and start memcached from S3