practice

Instance Family Selection

Matching a workload's resource profile to a machine type designed for it, which is frequently a larger saving than reducing size.

Rightsizing reduces a machine. Choosing the correct family changes the price-performance ratio altogether, and it is the step usually skipped because the default general-purpose family works well enough to hide the opportunity.

The families and what they suit: general purpose as a starting point; compute optimised for CPU-bound work with modest memory; memory optimised for caches, in-memory analytics and large databases, where general-purpose sizing forces over-provisioning of CPU to obtain memory; storage optimised for high local IOPS; accelerated for inference and training.

The largest single lever in recent years is processor architecture. ARM-based instances typically offer 20–40% better price-performance for workloads that run on them, which for interpreted and JVM languages is usually a rebuild rather than a rewrite. Container images need multi-architecture builds, and the constraint is normally a native dependency rather than the application.

Two further levers on the same axis: newer generations are cheaper per unit of performance and are frequently left unused because nobody revisits the choice; and burstable instances suit workloads with low average and occasional peaks, provided the credit model is understood.

The method: profile the workload's actual CPU-to-memory ratio, then choose the family that matches it.