We're considering moving some of our IT into the cloud. When I look at Amazon Web Services (AWS), I see on-demand,...
reserved and spot instances, but I have no idea which one is the right fit. What is the difference between them?
Cloud computing initially was defined by its elasticity and ability to provision exactly what you need, when you need it. That's the idea behind on-demand instances: You pay no up-front cost, just an hourly rate based on how long you're running the AWS instance for. While it's the most flexible, it's also the most expensive. If you need to provision the throughput dynamically, the on-demand instances are for you.
However, if you know how many, what type, and where you need specific instances, you can instead opt to reserve those instances. reserved instances always start out as on-demand instances. That means they are dedicated to your use, but then you can pay a one-time fee to lower the hourly runtime cost. This can often have dramatic price reductions if you're using your instance all the time. There are several different utilizations of reserved instances, ranging all the way from light utilization to heavy utilization. In heavy utilization, you pay the most up front, but you also pay the hourly rate even if you aren't running the instances. Light and medium utilization reserved instances are designed for users who often need to run a specific instance type, but not all the time. The best practice is typically to run on-demand instances for a few months and then look at your overall usage. If you notice several instances that have been on the entire time, you should purchase those as reserved instances to lower your cost.
Spot instances are completely different from on-demand and reserved instances. In the spot instance market, you can get compute time for a very cheap amount, but you aren't guaranteed to keep that compute instance. With spot instances, you specify the maximum price you'll pay for an instance, and if there is space, you get that instance. If you're outbid, your instance could be terminated. This means that if you have large jobs that don't need to be completed during any specific time, you can utilize spot instances to complete the job when it's most economical. Spot instances are not well-suited for real-time or mission-critical services such as Web applications.
In general, many people will end up utilizing all three versions of these instances. Each instance type has its own benefits. It's often best to start off with on-demand instances and then see what your utilization is and see if you can switch certain tasks to other instances to cut costs.
Check out TechTarget's AWS re:Invent conference coverage