For building and running distributed applications, we need think in terms of using a different primitive task (that you can move around) and not servers or machines. Currently, you may be thinking about a pool of resources or EC2 instances. However, you need to change that to thinking about where you can take a task and drop it in so that it will run appropriately. ECS helps in distributing applications/microservices over a cluster with managed task life cycle management. It has tight integration with other AWS services (IAM, ELB) and can run multiple schedulers with prioritization (for example, jobs from different teams with different priorities). It supports Auto Scaling groups where we can scale tasks by running more copies of them to take on increased traffic. They can be behind an ELB and appropriate metrics can be used to scale your fleet. Service updates are a lot easier to manage as well.