Hi Jason,
These are good questions! I have to admit we're not using ECS internally, so I can't speak with direct experience here. I _can_ however, provide a few points for your consideration:
* Running `terraform apply` to effect a deploy is a fairly common pattern. It's how we do deploys for HashiCorp's production environments. A deploy can be thought of as an infrastructure change after all. :)
* It's true that multiple copies of Terraform cannot be active simultaneously with the same state, but I wouldn't expect any of these `terraform apply` steps to be long running operations. As long as Terraform operations are performed with some sort of queue or locking mechanism to ensure only one runs at a time, there's nothing stopping plan/apply cycles from happening frequently.
* Your example listed a tag of `myapp:MYSHA1` - is there a way to model your deployments using tags that move for each deployment so you don't need a task definition diff for every deploy? For example `myapp:staging`, `myapp:production` etc?
I wish I could give you a bit more specific ECS detail, but I hope the above is helpful to you!
Paul