Hey everyone! I just got tasked by my boss to come up with an automated infrastructure provisioning system, and I could really use some insights. At my software house, we're dealing with multiple client projects that involve various tech stacks like Node.js, Python, Angular, and React.
We currently have a proof of concept for deploying static sites using S3 and CloudFront, but now I need to create a more unified solution that handles both frontend and backend deployments. Here are some things to consider:
- We want to minimize costs and maintenance while ensuring the system is fully scalable.
- All our repos are on Bitbucket, and we're looking for an AWS-focused solution.
- I'm also thinking about deploying both frontend and backend on the same EC2 instance for cost optimization.
My goals are to achieve zero-downtime deployments, project isolation, and minimal maintenance. I'm contemplating a Docker-compose based deployment system that converts to ECS task definitions, a shared load balancer for cost efficiency, and using Lambda functions and EventBridge for orchestration.
I'm curious:
1. Has anyone built a unified deployment system for mixed frontend/backend projects?
2. How do you optimize costs across multiple small projects?
3. Any issues you've encountered deploying different tech stacks on the same infrastructure?
4 Answers
Building an EKS setup could also serve your needs. Using something like Crossplane or Terraform can really handle a lot of those complications. It might take some learning initially, but it's worth it for the scalability.
I’ve developed a system around what I call 'modules' with a full GitOps pipeline. All developers need to do is add a simple config file to their repo. The pipeline interprets it and deploys to the target account seamlessly. It scales effectively, and any changes I implement are inherited by the repos during their next run. Simple yet effective for runtime updates and policy management!
If you're working with AWS, have you thought about using the AWS CDK? We rely on it for our projects, and it simplifies the deployment process a lot. It's efficient, especially for handling the different tech stacks you mentioned.
You know, it's not necessary to reinvent the wheel here; there are plenty of existing solutions. Have you looked into using Terraform with ECS? It’s powerful and can streamline the entire process. You might also want to consider Bitbucket pipelines to manage ECS updates. Many companies face similar challenges, so it's about finding the right tool that fits your needs.
Thanks for the suggestion! Terraform and ECS definitely sound like a solid combo to check out.

Sounds like a great solution! I'd love to dig deeper into the GitOps pipeline concept you mentioned.