Containers-as-a-Service offerings such as AWS Fargate and Heroku make it possible to run containerized applications without having to deal with servers. We only need to build the container image and point it to the cloud provider, which will take care of the rest: provision up virtual machines, and download , start and monitor images. These managed services typically include a built-in load balancer, which is one less thing to worry about.
Here are some of the benefits a managed container service has:
No servers: there is no need to maintain or patch servers.
Easy deployment: just build a container image and tell the service to use it.
Autoscaling: the cloud provider can provide more capacity when demand spikes or stop all containers when there is no traffic.
Before jumping in, however, you have to be aware of a few significant downsides:
Vendor lock-in: this is the big one. Moving away from a managed service is always challenging, as the cloud vendor provides and controls most of the infrastructure.
Limited resources: managed services impose CPU and memory limits that cannot be avoided.
Less control: we don’t have the same level of control we get with other options. You’re out of luck if you need functionality that is not provided by the managed service.