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

Deploy Mediawiki Using FIWARE Lab Facilities
Deploy Mediawiki Using FIWARE Lab FacilitiesDeploy Mediawiki Using FIWARE Lab Facilities
Deploy Mediawiki Using FIWARE Lab FacilitiesFIWARE
 
ARGUS - THE OMNISCIENT CI
ARGUS - THE OMNISCIENT CIARGUS - THE OMNISCIENT CI
ARGUS - THE OMNISCIENT CICosmin Poieana
 
Networking and Data Access with Eqela
Networking and Data Access with EqelaNetworking and Data Access with Eqela
Networking and Data Access with Eqelajobandesther
 
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)Adin Ermie
 
Artem Zhurbila - docker clusters (solit 2015)
Artem Zhurbila - docker clusters (solit 2015)Artem Zhurbila - docker clusters (solit 2015)
Artem Zhurbila - docker clusters (solit 2015)Artem Zhurbila
 
DevOps Enabling Your Team
DevOps Enabling Your TeamDevOps Enabling Your Team
DevOps Enabling Your TeamGR8Conf
 
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...Maarten Balliauw
 
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 meetupAnanth Padmanabhan
 
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 oozieTiago Simões
 
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
 
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.Lucidworks
 
Dpilot Source Code With ScreenShots
Dpilot Source Code With ScreenShots Dpilot Source Code With ScreenShots
Dpilot Source Code With ScreenShots DeepAnshu Sharma
 
Source Code for Dpilot
Source Code for Dpilot Source Code for Dpilot
Source Code for Dpilot Nidhi Chauhan
 
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 CTOAltinity Ltd
 
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 v2Fernando Lopez Aguilar
 
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...OW2
 
Appium Automation with Kotlin
Appium Automation with KotlinAppium Automation with Kotlin
Appium Automation with KotlinRapidValue
 
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 EC2IMC 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

Continuous deployment
Continuous deploymentContinuous deployment
Continuous deploymentBen Hall
 
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 MVPsBen Hall
 
Testing ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETTesting ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETBen Hall
 
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 containersBen Hall
 
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 DesignBen Hall
 
Node.js Anti Patterns
Node.js Anti PatternsNode.js Anti Patterns
Node.js Anti PatternsBen Hall
 
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 ApplicationsBen Hall
 
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)Ben Hall
 
Kata - Devops CDSummit LA 2015
Kata - Devops CDSummit LA 2015 Kata - Devops CDSummit LA 2015
Kata - Devops CDSummit LA 2015 John Willis
 
Learning Patterns for the Overworked Developer
Learning Patterns for the Overworked DeveloperLearning Patterns for the Overworked Developer
Learning Patterns for the Overworked DeveloperBen Hall
 
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 John Willis
 
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)Ben Hall
 
Implementing Google's Material Design Guidelines
Implementing Google's Material Design GuidelinesImplementing Google's Material Design Guidelines
Implementing Google's Material Design GuidelinesBen Hall
 
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 DeploymentsBen Hall
 
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 2016Ben Hall
 
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 containersBen Hall
 
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 containersBen Hall
 
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 ProductionBen Hall
 
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 cloudShlomo Swidler
 
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 ContainersBen Hall
 

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

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 AWSDenis Gundarev
 
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 FabricChris Dufour
 
Rapid JCR Applications Development with Sling
Rapid JCR Applications Development with SlingRapid JCR Applications Development with Sling
Rapid JCR Applications Development with SlingFelix Meschberger
 
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 AWSAmazon Web Services
 
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
 
Docker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline ExecutionDocker & ECS: Secure Nearline Execution
Docker & ECS: Secure Nearline ExecutionBrennan Saeta
 
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 AWSAmazon Web Services
 
Viktor Tsykunov: Azure Machine Learning Service
Viktor Tsykunov: Azure Machine Learning ServiceViktor Tsykunov: Azure Machine Learning Service
Viktor Tsykunov: Azure Machine Learning ServiceLviv Startup Club
 
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 ECSYevgeniy Brikman
 
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 2020Matt Raible
 
[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 ServerlessKatyShimizu
 
[NDC 2019] Enterprise-Grade Serverless
[NDC 2019] Enterprise-Grade Serverless[NDC 2019] Enterprise-Grade Serverless
[NDC 2019] Enterprise-Grade ServerlessKatyShimizu
 
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 DevelopersBurr Sutter
 
General Principles of Web Security
General Principles of Web SecurityGeneral Principles of Web Security
General Principles of Web Securityjemond
 
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
 
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 usersoazabir
 
Systems Bioinformatics Workshop Keynote
Systems Bioinformatics Workshop KeynoteSystems Bioinformatics Workshop Keynote
Systems Bioinformatics Workshop KeynoteDeepak Singh
 
Setting Up Amazon EC2 server
Setting Up Amazon EC2 serverSetting Up Amazon EC2 server
Setting Up Amazon EC2 serverTahsin 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] 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
 
[NDC 2019] Enterprise-Grade Serverless
[NDC 2019] Enterprise-Grade Serverless[NDC 2019] Enterprise-Grade Serverless
[NDC 2019] 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

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 2022Ben Hall
 
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 ProjectsBen Hall
 
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 ContainersBen Hall
 
Containers without docker
Containers without dockerContainers without docker
Containers without dockerBen Hall
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetesBen Hall
 
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 ProjectsBen Hall
 
How Secure Are Docker Containers?
How Secure Are Docker Containers?How Secure Are Docker Containers?
How Secure Are Docker Containers?Ben Hall
 
The Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud NativeThe Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud NativeBen Hall
 
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 ServiceBen Hall
 
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.mdBen Hall
 
Experimenting and Learning Kubernetes and Tensorflow
Experimenting and Learning Kubernetes and TensorflowExperimenting and Learning Kubernetes and Tensorflow
Experimenting and Learning Kubernetes and TensorflowBen Hall
 
Running .NET on Docker
Running .NET on DockerRunning .NET on Docker
Running .NET on DockerBen Hall
 
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 ApplicationBen Hall
 
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 KubernetesBen Hall
 
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.JSBen 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

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Recently uploaded (20)

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 

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