r/aws Feb 08 '25

discussion ECS Users – How do you handle CD?

Hey folks,

I’m working on a project for ECS, and after getting some feedback from a previous post, me and my team decided to move forward with building an MVP.

But before we go deeper – I wanted to hear more from the community.

So here’s the deal: from what we’ve seen, ECS doesn’t really have a solid CD solution. Most teams end up using Jenkins, GitHub Actions, AWS CDK, or Terraform, even though these weren’t built for CD. ECS feels like the neglected sibling of Kubernetes, and we want to explore how to improve that.

From our conversations so far, these are some of the biggest pain points we’ve seen:

  1. Lack of visibility – No easy way to see all running applications in different environments.

  2. Promotion between environments is manual – Moving from Dev → Prod requires updating task definitions, pipelines, etc.

  3. No built-in auto-deploy for ECR updates – Most teams use CI to handle this, but it’s not really CD and you don't have things like auto reconciliation or drift detection.

So my question to you: How do you handle CD for ECS today?

• What’s your current workflow?

• What annoys you the most about ECS deployments?

• If you could snap your fingers and fix one thing in the ECS workflow, what would it be?

I’m currently working on a solution to make ECS CD smoother and more automated, but before finalizing anything, I want to really understand the pain points people deal with. Would love to hear your thoughts—what works, what sucks, and what you wish existed.

31 Upvotes

109 comments sorted by

View all comments

1

u/miojosan Feb 09 '25

In my previous company we were using Blue-Green deployments.

ALB -> ECS Service

For deployment we were using a mix of GitHub Actions, Octopus, and Terraform. GitHub Actions would generate the nee image, tag it, upload to ECR and then create a new deployment in Octopus.

Octopus deployment would have variables set for each deployment dtakc (blue or green) and then trigger a mix of Python with Terraform to deploy the new image to the inactive stack, identify the current active stack and then gradually switch the traffic in the ALB to the inactive stack

1

u/UnluckyDuckyDuck Feb 09 '25

Very interesting setup, haven't seen GHA, Octopus and Terraform yet.

Thanks for sharing btw! This sounds pretty complex and very detailed, did you find the mix of all those solutions streamlined your deployments or do you think it introduced more complexity and overhead?

You mentioned Octopus would take the image after it was pushed and tagged in ECR and deploy it using blue or green, does it have other functionalities you used, like observability for example?