On ECS ---
While ECS provides an environment where we have simple way to orchestrate your containers - of course it is not the only way. That said, compared to other solutions the complexity and cost of ownership of ECS may be significantly lower at the end.
Depending on your technical needs, we could consider:
- Kubernetes
- Nomad
- Marathon / Apache Mesos
- Centurion
- and many others.
While some are (notably Kubernetes) is supported natively in AWS as EKS, we would need to provision your own fleet of EC2s for other solutions. There are also other hosted cloud solutions like Docker Swarm, and many other somewhat equivalent solutions in other IaaS providers, like Azure and Google Cloud.
On docker ---
There are a ton of use cases where you don't need to take it to production. Use it to quickly experiment on things, such as learning a new language. You can use it to achieve development environment parity with your fellow team mates. You can use it to isolate your testing suite. It is extremely developer friendly and it constantly gets better. Even just working with it on your local dev env is a joy.
And when you take it to the production - the optimizations you can have on deployment pipelines and DevOps procedures are huge.
Even though it's hard to write a non-biased article as a heavy docker fan, towards that effort, it is worth to mention that docker might not be really a good fit to be used in production environments where;
- there is a need of running multiple concurrent processes running next to each other - docker is designed to run a single process at a time,
- you have very tightly coupled services (ie shared code)
- you don't really know the app you want to containerize
- you want to run stateful services
- you are not well versed with system administration or networking
then chances are docker will not be able to serve you well.
Even in cases where you find you way out off those issues by going through elaborate setups that you share things in host level, or by following manuals line by line to have it set up, the value you would get from docker in that setup is questionable. Moreover, TCO is likely come out as expensive compared to others. Lastly, when there is a hype, there is good risk in jumping into that bandwagon; containerizing things just for the sake of it is likely to cause more harm than good.