I have some problems when running on AWS Elastic Container Service. These are not showstopper problems, but they create enough friction that there is a potential product to fix them.

The number of pieces needed to get a container running in ECS is quite high. You need an EC2 instance, an ECS cluster, an ECS service, a load balancer, a target group, then a task definition. If you do not know what all of those are, you will be studying the documentation for hours, then experimenting to get your setup correct. After all of that, hopefully you finally have a container running in your infrastructure.

Now imagine your application is written in Erlang/Elixir and you want to cluster your nodes. This requires a number of different ports, but ECS will assign them random host ports (e.g. 4369 on the container may be exposed as 32567 on the host). Random hosts ports are not a problem when you can use an ELB and a target group, but ECS only allows one per service. Now you either need to setup your own service discovery with something like Consul, or lock yourself into one container per EC2 host by forcing the same port numbers in the container as well as the EC2 host (i.e. 4369 on the container is exposed as 4369 on the host).

There must be some room for convention over configuration here. If I push a container to a docker registry, why can’t it be deployed automatically just from that? If my container exposes port 80, can’t a load balancer be setup automatically to forward port 80 traffic to my containers? How about an automatic hostname with SSL? Smart auto-scaling should be built in with no configuration needed. If I expose multiple ports in my container, how about automatic service discovery?

It is time to start interviewing others who deploy containers to see if there is a real problem here.