Sizing Your Instances

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:

Tip: Compute optimized large instances are good when your application has CPU intensive tasks. Memory optimized instances are recommended for memory intensive workloads.

Application characteristics

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?

Environment types

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.

Potential bottlenecks

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.

Web traffic

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.

Growth rate

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.

Storage needs

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 optimization is default on most newer generation instance types and optional on several older types. You can use EBS optimized instances with provisioned IOPS volumes to increase performance levels as well as reliability.

Security requirements

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

For a full list of supported instances please see this article.

The supported instance types are:

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 M1, M3, M4 and M5 instance types in this category. In general, the latest generation of instances supported by your Stack version are recommended.

Whilst Amazon continues to support older instance types emphasis always shifts to the newer generation instance types. Therefore, if you choose to use the older instances types you may encounter capacity constraints.

Amazon also offer General Purpose T2 and T3 instances, which are "burstable performance instances", providing a baseline level of CPU performance with the ability to 'burst' above the baseline. T 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 small ECU value, 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. We recommend the newer T instances over the older M instances at this size.

  • General purpose medium

    These instances are great for staging environments, development environments, and lower-traffic production environments. With only one or two vCPUs, they’re not ideal for production environments that are taking on larger amounts of traffic. We recommend the newer T instances over the older M instances at this size.

  • 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 and upwards

    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, M3, 32-bit).

Memory optimized instances

Engine Yard supports M2, R3, R4 and R5 instance types in this category. Again, we recommend choosing the newest instance type supported by your environment's Stack version.

M/R instances are good for memory-intensive applications and in-memory databases.

R 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. R 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 and upwards

    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 and R3 instances with R4 and R5s).

Compute optimized instances

Engine Yard supports both C1, C3, C4 and C5 instance types in this category. Again, we recommend choosing the newest instance type supported by your environment's Stack version.

C3, 4 and 5 provide features such as enhanced and cluster networking, and support for EBS optimization.

Compute optimized instances are great for CPU-intensive applications.

The models available in the compute optimized category are (dependent on instance generation):

  • 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

  • Compute optimized 9x extra large

  • Compute optimized 18x 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, C3, 32-bit).

Dedicated instances

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.

More information

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

If you have feedback or questions about this page, add a comment below. If you need help, submit a ticket with Engine Yard Support.

Comments

Article is closed for comments.