General purpose instances: You can use it when you application needs memory, compute, networking resources roughly equivalent, because the application does not require optimisation in any single resource area.
application servers
gaming servers
backend servers for enterprise applications
databases
Compute optimised instances: you can use it when you need compute optimised instances.
batch processing workloads that require processing many transactions in a single group.
high-performance web servers
compute-intensive applications servers
dedicated gaming servers.
Memory optimised instances: you can use when you need to deliver fast performance for workloads that process large datasets in memory.
high-performance database
workload that involves performing real-time processing of a large amount of unstructured data.
Accelerated computing instances: floating-point number calculations, graphics processing, and data pattern matching.
graphics applications
game streaming
application streaming
Storage optimised instances: to deliver tens of thousands of low-latency, random IOPS to applications.
analytics performed on the records in a database.
application that has a high IOPS(input/output operations per second) requirement