Introduction to ec2 Mark Squires II – RAMP51 Charlotte ALT.NET Target Audience: Senior Developers/Architects
Amazon Web Services Provider of scalable infrastructure services Core Cloud Services Elastic Compute Cloud (EC2) Push/Pull Messaging (SQS/SNS) Simple Data Service (SDB) Durable Storage (S3)
My Favorite Thing About AWS What I love most about AWS is it’s the only service I pay for monthly that routinely sends me emails with good news. Its always one of two possible emails We have lowered our prices We have added features
Not in this powerpoint Information about non EC2 services Security groups Snapshots,or AMI’s However, we can talk about some of these things. I just wanted to prevent a 200 slide deck.
AWS Platform Overview Courtesy of Mike Culver at AWS. (Approved Usage By AWS) This is actually outdated, as there is a 5th region now in Japan
What is EC2? Primarily Ec2 is the service that will provide you with a virtual instance that you can remote into (RDP/SSH) Create an instance Create a machine image Create a load balancer Create snap shots of your disks Create static ip address Ability to swap drives and ip addresses between instances Ability to use SSL Termination at the load balancer Ability to define intricate security groups and firewall rules between security groups and for external CIDR blocks Ability to monitor instances and create alerts Ability to load balance across multiple physical data centers Ec2 does some other things too that are out of the scope of this presentation.
Components of EC2 Elastic Block Store (EBS) – storage EBS Snapshotting Amazon CloudWatch – monitoring Amazon Machine Images Auto Scaling – horizontal scaling Elastic Load Balancing Virtual Private Cloud – vpn bridge Elastic IP Address High Performance Compute Clusters VMWare Image Import
Designed Expecting to Fail The cloud is NOT designed to prevent failure, but to anticipate failure While nearly any application can be deployed to EC2 the best applications for EC2 have already been designed expecting failures
Non-Committal No long term commitments required Free to play the field Mix and Match cloud services and cloud providers
What you get? The price of an instance is based on attributes of the type of instance you created. Windows costs more than Linux. (Amazon kindly includes the cost of your windows license in the price) More memory, more CPU drive up the hourly cost
What’s included? When you buy an instance you are renting: A fixed allotment of CPU measured in Elastic Compute Units (ECUs) A fixed allotment of Memory (RAM) Some instance types offer a fixed allotment of temporary ephemeral storage
Instance Type Classes Micro t1.micro(*up to 2 ECU) Standard m1.small(1 ECU) m1.large(2 ECU * 2 core) m1.xlarge(2 ECU * 4 core) High Memory m2.xlarge(3.25 ECU * 2 core) m2.2xlarge(3.25 ECU * 4 core) m2.4xlarge(3.25 ECU * 8 core)
*t1.micro is burstable, you share the CPU with others and get any unused cpu Cycles when needed Nodes in yellow are 32-bit, other are 64-bit
Geez. What does it cost? There is a sea of pricing options making it very flexible. You can get very creative in how you manage these costs. There are three major pricing schemes for an EC2 instance. On-Demand Pricing Reserved Pricing Spot Pricing
It’s Priced Hourly These prices are only for one particular instance size, the T1.MICRO which is the smallest & cheapest instance type The pricing plans are not only different in pricing, but also have differences in instance availability
An Instance Hour Each hour or partial hour you are using any EC2 Instance counts as an “Instance Hour” you are billed by the instance hour
On Demand Pricing Request an instance on demand and use it until you are done with it More expensive than other pricing options from an hourly perspective Contingent on Capacity, if AWS has no available capacity for the instance type in the availability zone that you requested, you will get an “out of capacity” error.
Reserved Pricing Plan Requires a 1 year or 3 year commitment and a corresponding commitment fee Can’t be used on SQL Server Standard instances Usually saves ~30-55% for instances that are run continually (24x7) Guarantees you that an instance for your reservation type in the AZ of your reservation will always be available upon your request
UnderstandingReserved Pricing Reserved Pricing Doesn’t buy you another instance Assume you use a Linux t1.micro instance 24x7 for an entire year ON-DEMAND. You are paying for 24*365=8760 instance hours @ $0.02 $175.20 per year If you buy a “1 Year Reservation” for a Linux t1.micro instance, you have simply bought the right to pay $0.007 per hour for ~8760 instance hours during the next year instead of $0.02 per hour. It doesn’t apply to any particular ec2 instance, it’s more of a billing discount, the 1 year reservation you just purchased will be automatically apply to one of your existing instances that match the reservation criteria It does however guarantee that at least one type of this instance will be available for your use whenever you need it
Spot Pricing How Amazon monetizes all it’s available resources Works like the stock market More Demand = Higher Price Bid based model, people who Bid more will steal resources from the person with the lowest bid Should only be used to host applications that have tolerance for being randomly shut down without notice Usually the cheapest pricing, but not always
ASP.NET on EC2 Easily load balance your ASP.NET app using an EC2 Elastic Load Balancer SQL Server can be costly unless your application can run on SQL Server Express RAMP51 is currently running multiple asp.net websites using 1 – ELB (to allow easy horizontal scaling) 1 - t1.micro 1 - m1.small (hosting SQL express) 1 – db.m1.small MySQL RDS Instance 1 – Simple DB Database
Creative Cost Savings Horizontal scaling up of application tiers during peak hours and down during slow hours, reducing instance hours to be paid for; via Auto Scaling groups or Spot Instance Tier Blooming (I made this term up I think) Spot Instance Tier Blooming Blooming your web tier with extra instance based on spot pricing, for example (add as many t1.micro instances to my web tier as I can get for $0.10/hr during the hours of 9am est – 5pm est Not sure any applications exist yet that will do this but its an idea I’ve been pondering
More Cost Savings Using MySql via Amazon RDS Using SimpleDB Service Using a SQL Azure instance from your EC2 Instance (haven’t tested latency of this) Moving web assets onto S3/CloudFront reducing bandwidth costs and load on instances
Instance Management All instances have basicCloudWatch monitoring which monitors IO, CPU, Memory Detailed monitoring is available which monitors at a higher interval than basic AWS is driven by a powerful set of APIs so you either need to write code or use a tool to manage your AWS resources
Major Tools Available ElasticFox – Firefox plugin, which I happen to prefer for most tasks Open source, but it appears Amazon stopped updating it mid 2010 There is probably some space for another open source version aside from elastic fox Amazon Web Console – supports a lot of management functions Does more than elasticfox Useful for many services not just EC2 Command Line Tools available for all services. The command line tools are usually the first to support new features.
Auto Scaling EC2 offers the ability for you to automatically scale a group of services up and down based on a metric For example, you have an auto-scaling group that has 2 instances serving web requests You could define an auto-scaling rule such as: if the avg. CPU usage exceed 85% for longer than 5 minutes add 2 more instances, and when the avg. CPU drops below 50% for more than 20 minutes shut down two instances There are a wide variety of configurations you can create that can leverage a number of metrics
Demonstration Auto-Scaling an ASP.NET App that writes to Simple DB for shared data access http://cltaltnetdemo.ramp51.com
Setting up CMD Tools IAM Tools http://bit.ly/fb6Va6 EC2 Tools http://bit.ly/h7dIxA ELB Tools http://bit.ly/fAm90a
Useful Links EC2 Overview http://aws.amazon.com/ec2/ EC2 Pricing http://aws.amazon.com/ec2/pricing/ AWS Blog http://aws.typepad.com/ AWS SDK for .NET http://aws.amazon.com/sdkfornet/
Contact Info Mark Squires Mark.firstname.lastname@example.org Blog http://www.foreachyield.com