Amazon Web Services’ resource offerings are constantly changing, and staying on top of their evolution can be a challenge. Elastic Cloud Compute (EC2) instances are one of their core resource offerings, and they form the backbone of most cloud deployments. EC2 instances provide you with customizable and scalable server options. Let’s deconstruct the current AWS offerings as of April 2019 in order to best understand the EC2 offerings that are currently available.
EC2 Instances — And Their Prices — Are Constantly Improving
In general, EC2 instance types — their broad categories of specialization — have remained the same, but the specific models and sizes within each category evolve pretty quickly, so it’s important to remain informed. The main reason for this is because generational improvements within instance types result in both more powerful offerings and lower cost, so you need to be aware that what may be top-of-the-line one year can change quickly. Depending on your budget and workload, this understanding can inform your Reserve Instance purchasing, leaning you towards 1-year or Flexible RI offerings.
EC2 Instance Type Breakdown
A Quick Summary
EC2 instances come in the following categories:
- General Purpose: The most popular; used for web servers, development environments, etc.
- Compute Optimized: Good for compute-intensive applications such as some scientific modeling or high-performance web servers.
- Memory Optimized: Used for anything that needs memory-intensive applications, such as real-time big data analytics, or running Hadoop or Spark.
- Accelerated Computing: Include additional hardware (GPUs, FPGAs) to provide massive amounts of parallel processing for tasks such as graphics processing.
- Storage Optimized: Ideal for tasks that require huge amounts of storage, specifically with sequential read-writes, such as log processing.
Details by EC2 Instance Type
Type: General Purpose
General Purpose instances are the most widely used and are a good first step if you’re new to AWS or cloud computing in general. They offer a great mix of cost and functionality, with their typical use being geared towards web servers, running development environments for your mobile or gaming apps, and running enterprise applications such as CRMs and ERPs. You’ll find that one of the main distinctions within this class is between instances with Fixed vs. Burstable performance. With Burstable performance EC2s, you’ll have the ability to quickly scale up your compute power — at a price.
General Purpose: A1
A1 instances are general use but differentiate themselves by being an ARM-based offering, as opposed to Intel or AMD. As such, this platform will appeal more to the ARM development community and to applications that already run open source software such as Java and Python and the multiple architectures these tend to support.
General Purpose: M5
M5 instances run on Intel Xeon processors and are thus suited to developing on the x86 architecture. They offer higher compute, memory, and network performance when compared to the A1.
M5 instances are great for development and test environments as well as web servers. They also offer support for Intel AVX-512, a set of CPU instructions that benefits the processing of encryption algorithms, so these instances are a great choice when security is important while not affecting performance.
General Purpose: T3 and T3a
T3 and T3a are respectively the Intel and AMD offerings of Burstable performance instances. Burstable performance instances are great if you want a cheaper and slightly less powerful offering than a fixed performance instance (like an M5), but you still want the option to be able to scale up your compute quickly to handle workloads, hence the “bursts” in power.
These bursts of power don’t come for free — they’re handled by CPU credits. In general, when you are not running at maximum processing power, you earn CPU credits. The amount you earn depends on the time at a low threshold and the size of your instance. When you need to burst up, these credits are spent.
Type: Compute Optimized
Compute Optimized: C5
C5 instances are ideal for applications where you prioritize raw compute power, such as gaming servers, scientific modeling, high-performance web servers, and media transcoding. C5 instances run on Intel Xeon Platinum processors and are benchmarked at 25% faster than previous-generation C4 instances — a clear example of the benefits of generational improvement in cloud resources.
Type: Memory Optimized
Memory Optimized: R5 & R5a
R5 and R5a are respectively the Intel and AMD offerings of “regular” memory optimized instances. These instances are ideal for memory intensive applications such as real-time big data analytics, large in-memory caches, and high-performance databases. The R5 and R5a instances benefit from the AWS Nitro System, which gives you access to almost all of the compute and memory resources of a server (i.e. allocating as little as possible to the OS). This optimization allows for lower cost when compared on a per-GiB basis to competitors.
Memory Optimized: X1 & X1e
X1 and X1e instances are optimized to provide a high ratio of memory to compute with the X1e family delivering the highest memory to compute ratio among EC2 offerings. These instances are used for the highest need memory-intensive applications such as SAP HANA, providing a strong foundation for real-time applications.
Memory Optimized: High Memory instances
High Memory instances have the greatest amount of available RAM, providing 6 TB, 9 TB, or 12 TB of memory in a single instance. Like X1/X1e, these are suited to production deployments of hugely memory intensive, real-time databases such as SAP HANA.
An important caveat with High Memory instances is that they are only available on Dedicated Hosts on a 3-year Reservation. This means that you will need to commit to a 3-year purchase, but you will get the security benefit of being on a host that is dedicated, i.e. you’ll have your own server to yourself and will not share resources as AWS does with other offerings.
Type: Accelerated Computing
Accelerated Computing: P3, G3, F1
Accelerated Computing instances use separate Graphical Processing Units (GPUs) or Field Programmable Gate Arrays (FPGAs) to optimize for specialized tasks such as graphics processing or floating-point number calculations. The instance offerings are:
- P3: These are the general GPU offerings, good for machine learning and offering robust parallel processing abilities.
- G3: These are the GPU offerings that are specialized for graphics-intensive tasks such as rendering, encoding, and streaming.
- F1: These are instances that offer FPGAs for accelerated processing. You can leverage the FPGAs multiple ways over time for different enhancements, and all this is aided by custom FPGA-specific AMIs (called AFIs) that offer quicker deployment and development options compared to conventional FPGAs.
Type: Storage Optimized
Storage Optimized: H1 & D2
H1 and D2 instances are part of the Dense storage offerings that provide high sequential read-writes for large data sets, such as in distributed Hadoop deployments. H1 and D2 instances provide immense storage on HDD, with H1 providing a maximum of 16 TB and D2 providing a maximum of 48 TB.
Storage Optimized: I3
I3 instances offer storage on SSD with a maximum of just under 16 GiB. However, these instances provide lower latency than HDD-based storage and also offer AWS Nitro System for optimized access to memory and computer resources (also called “Bare Metal” access).
Getting Real Experience With EC2
The breadth and complexity of AWS’ EC2 types can be overwhelming. It’s helpful to visit AWS’ own EC2 page to stay informed throughout the year new instances are added. If you haven’t had hands-on experience, there are resources to help you get started: Cloud Academy’s Labs are a safe, sandboxed environment where you can get real experience with EC2 instances without the risk of making changes (and sometimes costly changes) in a live environment. Once you get comfortable with EC2s, you’ll be able to quickly progress towards adding complementary resources and networking infrastructure to deploy your own environment.