7 ms·
I would love to know what the problem is. We do dozen of deployments every week with a ALB + ECS + Fargate setup. We upload a new container image, create a new
by vazamb 6y ago
I would love to know what the problem is. We do dozen of deployments every week with a ALB + ECS + Fargate setup.
We upload a new container image, create a new task and launch as many tasks as desired (so if we want 2 containers running we launch 2, for a total of 4). ALB calls the /health endpoints on the new containers and if they pass the healthchecks it drains connections to the old containers and stops the tasks. This has worked seamlessly for a long time now without any downtime during deployments.
EDIT: I should mentioned that we are using AWS CDK for all of this. All it does is register a new task as the default task for a service and ECS/ALB does the rest.
- Nk26 6y agoI would like to know the same, we have moved almost everything to fargate and ecs and have had zero issues.
- x3n0ph3n3 6y agoSame here -- I perform the exact same kind of deployment you mentioned using CloudFormation. My only grief is poor rollback detection / control.
- ciguy 6y agoThe default model works for most use cases, but it's not really flexible for non-standard cases and it fails completely at larger scale. If you have a few dozen containers taking 100,000 requests per second and you want to slow warm them with a segment of traffic for example, it's much easier to do on Kube than on ECS. ECS is also possible but it's just not as transparent or easy to work with.
- WatchDog 6y agoI find ECS particularly, ECS on EC2, to be really painful for small deployments. I just want a cluster that scales in and out to the amount of memory my tasks need, I'm not very concerned about CPU. Until capacity providers it was more or less impossible to do so without having a bunch of excess capacity provisioned. Even with capacity providers, I can't seem to get a cluster to scale in to 0 instances when no tasks are needed. I have one ECS service that requires an EBS volume mount, which means that when the task definition is updated, I need the service to stop, so that the new task can mount the same volume. This deployment model is essentially impossible without implementing a custom deployment strategy. Fargate makes things a bit easier, and now that you can use EFS volumes with it it might make more sense. But overall, everything in ECS just seems poorly designed, clunky and hacky, like many AWS products.
- friend-monoid 6y agoYou can’t do EFS on Fargate in CloudFormation yet though.
- scarface74 6y agoTrue. But you can do it with a custom resource. https://gist.github.com/guillaumesmo/4782e26500a3ac768888daab3c55b139 https://gist.github.com/guillaumesmo/4782e26500a3ac768888daa...
- WatchDog 6y agoYou also cant use capacity providers with cloudformation yet. Likely due to the fact, that you also cant delete capacity providers, nor change a cluster's default capacity provider.
- scarface74 6y agoThat’s not a Blue Green deployment.....
- ganstyles 6y agoI don't think they are saying it was, unless I'm misreading. They're talking about standard ECS deploys. Yo add my anecdata, I do lots of ECS deploys via terraform into production and it works pretty seamlessly.
- scarface74 6y agoI don’t have a problem with deploys with CF. But it only let’s you configure a minimum healthy percentage. Which is good enough if you only need to validate that an instance is in an acceptable state via a health check.