Engine Yard supports a wide variety of instance sizes and categories. This document discusses the instance types available to use with Engine Yard and provides some guidance on choosing the appropriate instances for your needs.
In most cases, you need to start by considering your application's characteristics. In some cases, you might want to look at specific instance types and models so you can decide what's best for your application. The discussion below covers both perspectives:
- Application characteristics
- Instance types and models
Tip: Compute optimized large instances are good when your application has CPU intensive tasks. Memory optimized instances are recommended for memory intensive workloads.
The instance choices for your application depend on several factors, including:
- Environment types - For example, whether it's a test, staging, development, or production environment.
- Potential bottlenecks - Is the application compute intensive? memory intensive? I/O intensive?
- Web traffic - Is it a constant flow? are there spikes? is it seasonal?
- Growth rate - Is your customer base growing at a constant or exponential rate?
- Storage needs - Does the application need persistent, highly available, and performant storage?
- Security requirements - Does the application need super-secure dedicated hardware?
Testing, staging, development, and low-volume production environments are often well suited for general purpose instances. To understand how an instance type will behave in your production environment, you will want to choose a smaller version of the same instance type for your testing or staging environment. Higher-demand production environments might not be suited for general purpose instances and deserve further analysis to gain optimal performance. See the following sections for more.
If your application has an inherent bottleneck, that might help you decide the ideal instance type. For example, your database instances might require memory optimized instances so more data can be loaded into memory. Or your growing production application might require compute optimized instances, especially if the application is CPU intensive. If your application requires a lot of scaling, you should choose your configuration accordingly. See Web traffic for more information.
If your application tends to have traffic peaks at certain times, or seasonal traffic, then it might make more sense to consider multiple smaller-sized instances, rather than one (or few) larger-sized instances. Multiple smaller-sized instances can be added or removed as needed and allow you more granular control over your costs.
Note: Single instance configurations cannot scale horizontally without your application experiencing down time.
In some cases, you can predict growth rates and it might help you make instance size choices. Otherwise, the decision is likely much the same as with Web traffic.
If you need persistent, highly available, performant storage, then you should consider EBS (Elastic Block Store) optimized instances which you can attach to a running instance. EBS optimized instances provide a dedicated and faster network path between your application and data storage for reliable volume performance. EBS optimized instances are available across all the generally available instance types, on several different models. You can use EBS optimized instances with provisioned IOPS volumes to increase performance levels as well as reliability.
If you have extremely sensitive data or need help with HIPAA compliance requirements, Dedicated instances provide the option of choosing dedicated hardware for your instances. Dedicated instances are available across all the generally available instance types, on most models.
See Commitment to Cloud Security and the Security Best Practices white paper from Engine Yard for more information.
Instance types and models
The supported instance types are:
- General purpose instances
- Memory optimized instances
- Compute optimized instances
- Dedicated instances
Note: Some instance sizes (models) may not be available by default. Contact Engine Yard Support if you do not see the necessary instance sizes in the UI drop-down list.
General purpose instances
Engine Yard supports both M1 and M3 instance types in this category. In general, the M3s are recommended over the previous generation M1s.
Amazon continues to support M1 instances but emphasis has shifted to the new generation instance classes. If you choose to use the M1 instances, you may encounter capacity constraints.
M3 instances provide better, more consistent performance than M1 instances for most use cases. M3 instances also offer SSD-backed instance storage that delivers higher I/O performance. We recommend M3 instances for applications that require a balance of compute, memory, and network resources.
Tip: As of December 2014, Engine Yard starts to provide T2 general performance instances. T2 instances are "burstable performance instances" that provide a baseline level of CPU performance with the ability to 'burst' above the baseline. T2 instances often work for development environments, application instances, and small database instances.
The models available in the general purpose category are:
General purpose small
These instances are great for staging environments and development environments, and are also good for lower-traffic production environments. With only a single ECU, they’re not ideal for production environments that are taking on larger amounts of traffic. We have noticed these instances become CPU starved when serving higher amounts of traffic or load.
General purpose medium
These instances are great for staging environments, development environments, and lower-traffic production environments. With only one VCPU, they’re not ideal for production environments that are taking on larger amounts of traffic. This instance size has twice the memory of the compute optimized medium but half the processing power for about the same cost.
General purpose large
These instances are great when your application or database needs extra RAM but is not CPU starved. They are suited for production or large testing environments.
General purpose extra large
With extra RAM and CPU, these instances are still affordable when you need the extra horsepower for your application or database.
General purpose double extra large
These instances are well suited for heavy-duty application instances or large databases with high CPU requirements.
Tip: It is best practice to migrate away from deprecated instance types and models (e.g., M1, 32-bit).
Memory optimized instances
Engine Yard supports M2 instance types in this category. As of December 2014, R3s is supported and recommended over M2s.
M2 instances are good for memory-intensive applications and in-memory databases.
R3 instances provide sustained memory bandwidth, superior I/O performance, support for EBS optimization, as well as support for lower latency, low jitter, and very high packet per second performance. R3 instances are recommended for applications that require high memory performance at the best price point per GB of RAM.
The models available in the memory optimized category are:
Memory optimized extra large
These instances are great for starting out with somewhat large datasets. They are also a good choice for Redis utility instances if you foresee a relatively large amount of data.
Memory optimized double extra large
These instances are a perfect fit for databases with large datasets. You can relieve your database of disk reads by loading your data into RAM.
Memory optimized quadruple extra large
These are the largest instances you can boot on Engine Yard. With a massive amount of RAM, these are best used for your database tier or in-memory caches.
Tip: It is best practice to migrate away from deprecated instance types and models (e.g., replace M2 instances with R3 instances).
Compute optimized instances
Engine Yard supports both C1 and C3 instance types in this category. In general, the C3s are recommended over the previous generation C1s.
C3 provides features such as enhanced and cluster networking, and support for EBS optimization. Compared to C1 instances, C3 instances provide faster processors, approximately double the memory per vCPU, and SSD-backed instance storage.
Compute optimized instances are great for CPU-intensive applications.
The models available in the compute optimized category are:
Compute optimized medium
Compute optimized large
Compute optimized extra large
Compute optimized double extra large
Compute optimized quadruple extra large
Compute optimized octuple extra large
See Amazon Instance Type Support for detailed information.
Tip: It is best practice to migrate away from deprecated instance types and models (e.g., C1, 32-bit).
AWS also offer the various instance types as Dedicated instances. These instances run on host hardware that is dedicated to your own account and so can be used for security, licensing or compliance reasons. Due to the dedication of the hardware AWS charge an additional hourly fee for their use and they should only be used when required. For more information on using Dedicated instances and the cost involved please see this article.
This table provides other resources related to instances.
|For more information about...||See...|
|AWS instances on Engine Yard||Amazon Instance Type Support|
|Engine Yard pricing||Engine Yard Price Estimator|
|Amazon EC2 instance types||Amazon EC2 instance types|
|What is an Amazon EC2 compute unit (ECU)?||What is ECU|
|What is an Amazon instance family?||Amazon instance families|
|AWS previous generation instances / upgrade paths||AWS previous generation instances|