Speed, elasticity, cost, and support are few factors that you may want to consider. For instance speed lets you know how many MIPS can your task handle on a reference VM instance, say small. From here you can extrapolate to other instance types. Time in seconds can be used instead of MIPS. The size of the task can be used to determine itsmigration time. If tasks are web apps processing throughput can be considered. In this case each task would have a rate at which it consumes and produces messages. Elasticity can be derived fron here. Depending on the incomming messages you may need to add/remove tasks so that messages get consumed immediately. The cost also derives from here but depends not only on how many tasks you have but also on how many VM instances you use to run them. Finnaly certain instances may not support your task. For instance one without a certain library or with the wrong OS.