<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Quang Chien TRAN</title>
    <description>The latest articles on DEV Community by Quang Chien TRAN (@qctran1991).</description>
    <link>https://dev.to/qctran1991</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2896994%2F85444356-4cb1-4f4a-a680-04cc9d4c90c4.jpeg</url>
      <title>DEV Community: Quang Chien TRAN</title>
      <link>https://dev.to/qctran1991</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/qctran1991"/>
    <language>en</language>
    <item>
      <title>How I Optimized Our Cloud, Git Workflow, and Infrastructure</title>
      <dc:creator>Quang Chien TRAN</dc:creator>
      <pubDate>Wed, 25 Mar 2026 15:15:01 +0000</pubDate>
      <link>https://dev.to/qctran1991/how-i-optimized-our-cloud-git-workflow-and-infrastructure-5dki</link>
      <guid>https://dev.to/qctran1991/how-i-optimized-our-cloud-git-workflow-and-infrastructure-5dki</guid>
      <description>&lt;p&gt;In the previous article, I shared how I optimized the cloud bill for the company. But in reality, there were still many things that needed improvement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pipeline to Deploy Code
&lt;/h2&gt;

&lt;p&gt;Our company uses Jenkins to run pipelines.&lt;br&gt;&lt;br&gt;
Of course, I have worked with GitLab CI/CD before, but for me they are all just tools.&lt;br&gt;&lt;br&gt;
Argo CD, GitHub Actions, or AWS CodePipeline — in the end they are simply tools to build and deploy code.&lt;/p&gt;

&lt;p&gt;At the beginning, our pipeline only had a build stage for backend projects. Deployments were still done mostly by hand.&lt;br&gt;&lt;br&gt;
So I added new steps to automatically deploy to staging and production.&lt;/p&gt;

&lt;p&gt;Now everything is fully automated after a simple git push.&lt;br&gt;&lt;br&gt;
Pretty nice 😄&lt;/p&gt;

&lt;p&gt;At the moment, all the projects I work on already have automatic deployment pipelines. My job now is simply to change the code and push it to git.&lt;/p&gt;




&lt;h2&gt;
  
  
  Working with Git
&lt;/h2&gt;

&lt;p&gt;I have to admit something.&lt;/p&gt;

&lt;p&gt;Even though I had used git for a long time, I never really had an effective workflow.&lt;/p&gt;

&lt;p&gt;In a team with many developers, things could easily become messy and hard to manage.&lt;br&gt;&lt;br&gt;
Every time we wanted to test a new feature, we had to ask questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can we deploy now?
&lt;/li&gt;
&lt;li&gt;Will it overwrite someone else’s code?
&lt;/li&gt;
&lt;li&gt;Is another feature still being tested?
&lt;/li&gt;
&lt;li&gt;Is it my turn to test?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main problem was simple:&lt;br&gt;&lt;br&gt;
we only had one dev environment.&lt;/p&gt;

&lt;p&gt;At that time, my understanding of an effective git workflow was still very vague.&lt;/p&gt;

&lt;p&gt;Then one day, while walking home from work along the river, without looking at my phone, just enjoying the fresh air and thinking randomly about git workflows… suddenly an idea came to me. Haha.&lt;/p&gt;

&lt;p&gt;Later I found a blog post online that described almost exactly the same workflow.&lt;br&gt;&lt;br&gt;
That’s when I realized:&lt;br&gt;&lt;br&gt;
it wasn’t a new idea — I just hadn’t been exposed to it before.&lt;/p&gt;

&lt;p&gt;In the end, everything is about what works best for your team.&lt;/p&gt;

&lt;p&gt;My principles are very simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;master&lt;/code&gt; branch is always the most stable and correct version of the system.
&lt;/li&gt;
&lt;li&gt;All new features and bug fixes must start from this branch.
&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;develop&lt;/code&gt; branch is used for testing.
&lt;/li&gt;
&lt;li&gt;Feature branches and bug-fix branches must merge into &lt;code&gt;develop&lt;/code&gt; to be deployed to the testing environment.
&lt;/li&gt;
&lt;li&gt;After testing is successful on &lt;code&gt;develop&lt;/code&gt;, the feature branch can then be merged into &lt;code&gt;master&lt;/code&gt; and deployed to production.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With this workflow, our team has been working very smoothly so far.&lt;/p&gt;

&lt;p&gt;If problems appear later…&lt;br&gt;&lt;br&gt;
maybe I will just go walk along the river again to think about it. 😄&lt;/p&gt;




&lt;h2&gt;
  
  
  Infrastructure (Infrastructure as Code)
&lt;/h2&gt;

&lt;p&gt;The benefits of Infrastructure as Code are well known, so I probably don’t need to explain them much. You can easily find plenty of information online or just ask AI.&lt;/p&gt;

&lt;p&gt;After finishing the deployment of the backend infrastructure on Amazon Web Services, the next thing I did was write IaC for all the projects I worked on.&lt;/p&gt;

&lt;p&gt;The idea was simple.&lt;/p&gt;

&lt;p&gt;One day, if I am no longer working here, at least the people who stay — or new engineers joining the company — will have something that helps them understand the infrastructure that was built.&lt;/p&gt;

&lt;p&gt;And if something goes wrong, they can quickly rebuild it.&lt;/p&gt;

&lt;p&gt;I use OpenTofu, which is a fork of Terraform. Everything is basically the same.&lt;/p&gt;

&lt;p&gt;Sorry AWS, but I’m not a big fan of AWS CloudFormation.&lt;br&gt;&lt;br&gt;
Terraform code just looks much nicer to me 😄&lt;/p&gt;




&lt;h2&gt;
  
  
  Monitoring
&lt;/h2&gt;

&lt;p&gt;I will probably write a separate article about this topic.&lt;/p&gt;

&lt;p&gt;For me, after one year at this company, the thing I’m most proud of is not AWS infrastructure, but building a monitoring platform for the company.&lt;/p&gt;

&lt;p&gt;At my previous company, I worked with Datadog, but at that time my understanding of monitoring was still very basic. I mostly just used it to read logs.&lt;/p&gt;

&lt;p&gt;Back then I was just a developer, and honestly no one really guided me to explore the system deeply.&lt;/p&gt;

&lt;p&gt;When I joined this company, I was surprised to see that there was no monitoring platform at all.&lt;/p&gt;

&lt;p&gt;If developers wanted to read logs, they had to SSH into the server.&lt;/p&gt;

&lt;p&gt;At that moment I felt that monitoring was absolutely necessary.&lt;br&gt;&lt;br&gt;
Without it, debugging production systems feels like fighting enemies with bare hands.&lt;/p&gt;

&lt;p&gt;Today, monitoring takes a significant part of my daily work. But the value it brings has helped me learn many new things.&lt;/p&gt;




&lt;h2&gt;
  
  
  Backup
&lt;/h2&gt;

&lt;p&gt;Do you know what the most valuable asset of a company is?&lt;/p&gt;

&lt;p&gt;For me, it’s data.&lt;/p&gt;

&lt;p&gt;As long as the data still exists, the company can survive.&lt;br&gt;&lt;br&gt;
If the data disappears, the company may disappear too.&lt;/p&gt;

&lt;p&gt;There was a company that lost all its data after hackers gained root access and deleted everything. They asked AWS for help to recover it, but it wasn’t possible. Eventually the company had to shut down.&lt;/p&gt;

&lt;p&gt;That story made me think a lot about how to protect our data.&lt;/p&gt;

&lt;p&gt;Our company uses Amazon RDS with PostgreSQL.&lt;br&gt;&lt;br&gt;
But what happens if someone gains root access?&lt;br&gt;&lt;br&gt;
Everything could disappear instantly.&lt;/p&gt;

&lt;p&gt;Eventually I learned about AWS Backup. With this service, backups are protected and cannot easily be deleted — even with root access.&lt;/p&gt;

&lt;p&gt;At least, within my current understanding, this feels safer.&lt;/p&gt;

&lt;p&gt;Unless the entire AWS infrastructure collapses… which hopefully is very unlikely.&lt;/p&gt;




&lt;h2&gt;
  
  
  Cron Jobs
&lt;/h2&gt;

&lt;p&gt;This is something almost every company needs — processing large datasets periodically.&lt;/p&gt;

&lt;p&gt;In our company, we originally used the Spring Boot scheduled annotation to run these jobs.&lt;/p&gt;

&lt;p&gt;It worked well.&lt;/p&gt;

&lt;p&gt;But there were two problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debugging these jobs could be difficult.
&lt;/li&gt;
&lt;li&gt;Horizontal scaling becomes problematic. If multiple servers run at the same time, the same job might execute twice.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My solution was quite simple.&lt;/p&gt;

&lt;p&gt;Instead of refactoring everything, I moved job scheduling to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Lambda
&lt;/li&gt;
&lt;li&gt;Amazon EventBridge
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;EventBridge triggers Lambda, which then calls a HTTP API endpoint in our Spring Boot service. The controller routes the request to the appropriate job based on parameters.&lt;/p&gt;

&lt;p&gt;Everything became much easier to manage.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I’m always thinking about ways to improve the systems I work on.&lt;/p&gt;

&lt;p&gt;Maybe some of these solutions look simple to others.&lt;br&gt;&lt;br&gt;
But for me, every time I find a solution, it brings a small sense of joy.&lt;/p&gt;

&lt;p&gt;And honestly, I’m always a little proud of that. 😉&lt;/p&gt;

&lt;p&gt;(And yes, I still take walks by the river to brainstorm!) 😊&lt;br&gt;&lt;br&gt;
(If you enjoy these kinds of engineering stories, you can subscribe or visit &lt;a href="https://open.substack.com/pub/quangchientran/p/4-how-i-optimized-our-cloud-git-workflow?r=5zk2y9&amp;amp;utm_campaign=post&amp;amp;utm_medium=web&amp;amp;showWelcomeOnShare=true" rel="noopener noreferrer"&gt;my blog&lt;/a&gt; to receive the next ones.)&lt;br&gt;
Connect me on &lt;a href="https://www.linkedin.com/in/qctran1991" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; :D&lt;/p&gt;

</description>
      <category>git</category>
      <category>cloud</category>
      <category>cicd</category>
      <category>devops</category>
    </item>
    <item>
      <title>How I Reduced Cloud Costs by 40% Using the "Clean &amp; Think" Method</title>
      <dc:creator>Quang Chien TRAN</dc:creator>
      <pubDate>Sat, 21 Mar 2026 13:16:01 +0000</pubDate>
      <link>https://dev.to/qctran1991/how-i-reduced-our-aws-bill-by-40-without-changing-the-architecture-26a7</link>
      <guid>https://dev.to/qctran1991/how-i-reduced-our-aws-bill-by-40-without-changing-the-architecture-26a7</guid>
      <description>&lt;p&gt;Actually, there have been tons of posts about how to optimize AWS costs. I’ve read them, analyzed them, and applied what makes sense for the cloud infrastructure I manage.&lt;/p&gt;

&lt;p&gt;At some point, your cloud infra is stable, services run smoothly, no errors, the team is happy… but then at the end of the month, you look at the bill and—well… why are you paying a few thousand dollars for just a handful of services?&lt;/p&gt;

&lt;p&gt;Whether it’s a big company or a small one, optimizing costs for any expense always needs careful consideration. Cloud cost is no exception. If you control it well, cloud is an amazing tool. If not… your wallet slowly bleeds every month and you don’t even know why.&lt;/p&gt;

&lt;h1&gt;
  
  
  How I optimize my infrastructure
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Clean up the garbage
&lt;/h2&gt;

&lt;p&gt;Yep, you read that right. In almost every infrastructure, if you don’t clean regularly, there will be a bunch of unused stuff still sitting around—and you’re paying for things that bring zero value.&lt;/p&gt;

&lt;h3&gt;
  
  
  My approach:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;S3 buckets: Delete buckets or objects from non-production environments that are no longer in use.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ECR (Docker images): Implement lifecycle policies to prune old versions. By keeping only the latest 10–12 images, I stopped storage costs from ballooning and cut “zombie” storage waste by over 90%.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Networking &amp;amp; Storage: Periodically audit for Elastic IPs and EBS volumes that exist but are not attached to any instance.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  If you don’t use it, turn it off
&lt;/h2&gt;

&lt;p&gt;Simple logic: you work 8 hours a day. After that, you don’t use the system—but if services are still running, you’re still paying :D&lt;/p&gt;

&lt;p&gt;For example, non-production environments can be stopped from 8 PM to 7 AM.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ECS → set desired count = 0&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;RDS → stop at night, start in the morning&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;EC2 → stop/start or scale auto scaling down to 0&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of this is super easy. Just combine Lambda + EventBridge to schedule it. Fully automated, no need to click manually.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use less, pay less
&lt;/h2&gt;

&lt;p&gt;This one is obvious for S3. Setting lifecycle policies can save you quite a bit.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Hot data → keep in standard storage&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cold data / logs backup → move to Glacier&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also set lifecycle rules for ECR to auto-delete old images instead of doing it manually.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask: "Can this be optimized further?"
&lt;/h2&gt;

&lt;p&gt;This mindset applies to almost everything I do, not just AWS.&lt;/p&gt;

&lt;p&gt;I’m a backend dev. Sometimes I finish a task but still feel the code isn’t clean enough, naming isn’t right, or it doesn’t follow SOLID / reusable principles → I refactor.&lt;/p&gt;

&lt;p&gt;Same with AWS cost optimization, but even more frequently.&lt;/p&gt;

&lt;p&gt;When deploying systems (EC2, ECS, EKS, RDS), we often over-provision resources “just to be safe.” But you still pay for all of it.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;With ECS Fargate, I've seen payment services set to 4 vCPU, 8GB RAM. After running, CPU and memory usage were only ~10–20%. So I cut the config in half, then monitored again. Around 50–70% utilization is a good balance.&lt;/p&gt;

&lt;p&gt;So the question I always keep in mind is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Can this system (or task) be optimized further?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And optimization isn’t just about cost—it’s also performance, scalability, and clean code.&lt;/p&gt;

&lt;h2&gt;
  
  
  If AWS recommends it, just follow
&lt;/h2&gt;

&lt;p&gt;Honestly, AWS engineers know their stuff. They’ve laid out best practices in the Well-Architected Framework, and tools like Amazon Q can guide you. Here’s what I implemented:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use S3 Gateway Endpoints: This is a total “cheat code.” By adding a Gateway VPC Endpoint to your routing table, traffic to S3 stays within the AWS internal network. It doesn’t go over the public internet, it’s more secure, and most importantly—S3 Gateway Endpoints are free. No data transfer markers, no hourly fees. (Just be careful not to choose the “Interface” type unless you specifically need it, as those do have a cost!)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Switch ECS Fargate to ARM: I converted our Fargate tasks from x86_64 to ARM (Graviton). It’s the “good-cheap-better” standard: it usually performs better for backend workloads and is roughly 20% cheaper right out of the box.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reserved Instances &amp;amp; Savings Plans: For stable workloads like RDS or baseline EC2, this is a no-brainer. If you know you’ll be running it for a year, commit to it and take the 30–60% discount.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ditch Public IPs: Since 2024, AWS charges for every public IPv4 address (~$3.60/month per IP). By keeping resources in private subnets and using internal communication, you save money and harden your security at the same time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Free tier is great. A lot of my Lambda, SNS, SQS, and CloudWatch usage stays within the Free Tier, so I barely pay anything.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep a close eye on the AWS bill and set up an AWS Budget to avoid catching issues too late. Once you notice a service suddenly getting expensive, you need to understand exactly why. In general, checking Cost Explorer every 2 or 3 days is a safe habit.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If your application uses an RDS Cluster with heavy read/write activity, leading to high I/O costs (more than 25% of the total RDS bill), it may be worth considering AWS I/O Optimized storage. In that case, storage is about 30% more expensive, but I/O cost becomes 0.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short, there are still many ways to save AWS costs. The most important thing is to understand the service and its pricing. Before using a service, you should first understand how it’s priced and analyze it carefully, because sometimes you jump in first, and only when the bill arrives do you ask why it’s so expensive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;With what I’ve done above, the AWS bill has dropped by 40% compared to before. I’m happy that everything is still running well, especially for small and medium businesses, where cost should be a top priority. Running well and cheap is still better than running well and expensive, right? 😅&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“The views and optimizations shared here are my own personal engineering perspectives and do not represent the specific data or policies of any employer.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(If you enjoy these kinds of engineering stories, you can subscribe or visit &lt;a href="https://open.substack.com/pub/quangchientran/p/3-how-i-reduced-aws-costs-by-50?r=5zk2y9&amp;amp;utm_campaign=post&amp;amp;utm_medium=web&amp;amp;showWelcomeOnShare=true" rel="noopener noreferrer"&gt;my blog&lt;/a&gt; to receive the next ones.)&lt;br&gt;
Connect me on &lt;a href="https://www.linkedin.com/in/qctran1991" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; :D&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>facture</category>
      <category>devops</category>
    </item>
    <item>
      <title>Choosing Between EKS, ECS, and EC2 for My First Real Deployment</title>
      <dc:creator>Quang Chien TRAN</dc:creator>
      <pubDate>Fri, 20 Mar 2026 16:08:24 +0000</pubDate>
      <link>https://dev.to/qctran1991/choosing-between-eks-ecs-and-ec2-for-my-first-real-deployment-5716</link>
      <guid>https://dev.to/qctran1991/choosing-between-eks-ecs-and-ec2-for-my-first-real-deployment-5716</guid>
      <description>&lt;p&gt;I started at my new company at the beginning of last year. The reason I changed jobs was already explained in a previous article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Calm Before the Storm
&lt;/h2&gt;

&lt;p&gt;When I first joined, I spent time getting familiar with the system, new colleagues, new projects, and the company culture.&lt;/p&gt;

&lt;p&gt;In real life, I’m quite an introverted person. But at work… not really 😄&lt;/p&gt;

&lt;p&gt;Whenever I don’t understand something, I ask immediately so I don’t get blocked.&lt;/p&gt;

&lt;p&gt;Luckily, after about one month, I had already integrated quite well with the project and the team.&lt;/p&gt;

&lt;p&gt;That’s when the tasks mentioned during my recruitment process started to arrive.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Did the System Look Like at That Time?
&lt;/h2&gt;

&lt;p&gt;At that moment, the backend system had around 10 small microservices written with Spring Boot.&lt;/p&gt;

&lt;p&gt;The system used RabbitMQ to send events between services.&lt;/p&gt;

&lt;p&gt;When we needed to update a service, all services were dockerized and deployed together using AWS Elastic Beanstalk.&lt;/p&gt;

&lt;p&gt;Each deployment caused about 4–5 minutes of downtime.&lt;/p&gt;

&lt;p&gt;Because of that, deployments were usually done during low-traffic periods, except for urgent hotfixes.&lt;/p&gt;

&lt;h2&gt;
  
  
  My First Assigned Task
&lt;/h2&gt;

&lt;p&gt;The CTO gave me a task:&lt;/p&gt;

&lt;p&gt;With your AWS experience, find another way to deploy services individually without interrupting the system.&lt;br&gt;
Use Kubernetes if necessary.&lt;/p&gt;

&lt;p&gt;For experienced engineers, this might sound easy.&lt;/p&gt;

&lt;p&gt;But for me at that moment, it wasn’t.&lt;/p&gt;

&lt;p&gt;Before that, I was mostly a backend developer. My DevOps experience was limited to small personal projects, never real production systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Did I Actually Have?
&lt;/h2&gt;

&lt;p&gt;I had the AWS Certified Solutions Architect – Associate certificate.&lt;/p&gt;

&lt;p&gt;Other than that… not much.&lt;/p&gt;

&lt;p&gt;I spend a lot of time reading tech blogs and watching tutorials on YouTube.&lt;/p&gt;

&lt;p&gt;I also want to thank Viet Tran for his AWS tutorial videos, and Nguyen Van Manh for sharing many DevOps insights.&lt;/p&gt;

&lt;p&gt;One mindset that stuck with me from his talks was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Don’t make things complicated.&lt;br&gt;
A pipeline only has two important stages: build and deploy.&lt;br&gt;
Everything else is secondary.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The AWS explanations and advice from Viet Tran also helped me understand which services to choose and how to approach the problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s Start
&lt;/h2&gt;

&lt;p&gt;Now I was standing in front of three options for deploying Docker containers on Amazon Web Services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon EKS&lt;/li&gt;
&lt;li&gt;Amazon ECS&lt;/li&gt;
&lt;li&gt;Amazon EC2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;EC2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I quickly rejected this option.&lt;/p&gt;

&lt;p&gt;Using EC2 with docker-compose or docker-swarm would require a lot of effort to deploy and maintain.&lt;/p&gt;

&lt;p&gt;Maybe it could be the cheapest option, but for someone with limited DevOps experience like me, it felt risky.&lt;/p&gt;

&lt;p&gt;Actually, the existing Beanstalk deployment was already similar to this model.&lt;br&gt;
Beanstalk created ECS clusters and deployed services on EC2 instances.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EKS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Even though I had no Kubernetes experience, I believe I could learn it if I had enough time.&lt;/p&gt;

&lt;p&gt;After all, AWS already manages the hardest parts.&lt;/p&gt;

&lt;p&gt;Using EKS would also look great on my CV and allow me to explore Kubernetes more deeply.&lt;/p&gt;

&lt;p&gt;But this was clearly a trade-off.&lt;/p&gt;

&lt;p&gt;If you only have a small number of services, using EKS can feel like using a huge knife just to kill a fly.&lt;/p&gt;

&lt;p&gt;It’s powerful, but maybe too complex.&lt;/p&gt;

&lt;p&gt;Managing Kubernetes properly also requires someone with solid experience. Otherwise, you might spend all day debugging infrastructure issues.&lt;/p&gt;

&lt;p&gt;And the cost isn’t small either.&lt;/p&gt;

&lt;p&gt;Even if you do nothing, maintaining a cluster already costs around $100 per month 😄&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ECS Fargate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the end, I chose AWS Fargate with ECS.&lt;/p&gt;

&lt;p&gt;It’s an AWS-native service and already provides everything I needed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Load balancer&lt;/li&gt;
&lt;li&gt;Auto scaling&lt;/li&gt;
&lt;li&gt;Rolling updates&lt;/li&gt;
&lt;li&gt;Blue-green deployments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s lightweight and serverless.&lt;/p&gt;

&lt;p&gt;Basically, I let AWS handle most of the infrastructure and focus on developing the application instead 😄&lt;/p&gt;

&lt;p&gt;The cost was reasonable and the service was very beginner-friendly.&lt;/p&gt;

&lt;p&gt;After about three weeks, I managed to bring the system to production.&lt;/p&gt;

&lt;p&gt;Of course, there were still adjustments later, but overall it integrated quite smoothly with our real project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Today
&lt;/h2&gt;

&lt;p&gt;Today the ECS infrastructure is still running well and fits the company’s needs.&lt;/p&gt;

&lt;p&gt;I believe choosing ECS was a reasonable decision.&lt;/p&gt;

&lt;p&gt;Sometimes it’s not about choosing the most powerful technology.&lt;/p&gt;

&lt;p&gt;It’s about choosing what fits the situation best.&lt;/p&gt;

&lt;p&gt;I sometimes wonder what would have happened if I had chosen EKS.&lt;/p&gt;

&lt;p&gt;Maybe everything would still work fine.&lt;/p&gt;

&lt;p&gt;But every time I looked at the AWS bill, I might get a little shocked 😄&lt;/p&gt;

&lt;p&gt;(If you enjoy these kinds of engineering stories, you can subscribe or visit &lt;a href="https://open.substack.com/pub/quangchientran/p/the-first-task-assigned?r=5zk2y9&amp;amp;utm_campaign=post&amp;amp;utm_medium=web&amp;amp;showWelcomeOnShare=true" rel="noopener noreferrer"&gt;my blog&lt;/a&gt; to receive the next ones.)&lt;br&gt;
Connect me on &lt;a href="https://www.linkedin.com/in/qctran1991" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; :D&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>softwaredevelopment</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Everything Was Stable… So Why Did I Leave</title>
      <dc:creator>Quang Chien TRAN</dc:creator>
      <pubDate>Fri, 20 Mar 2026 15:55:50 +0000</pubDate>
      <link>https://dev.to/qctran1991/everything-was-stable-so-why-did-i-leave-2lp0</link>
      <guid>https://dev.to/qctran1991/everything-was-stable-so-why-did-i-leave-2lp0</guid>
      <description>&lt;p&gt;Last year, I moved to a new company.&lt;/p&gt;

&lt;p&gt;But a few months before that, I had already started thinking about finding another job instead of staying where I was.&lt;/p&gt;

&lt;p&gt;The decision happened quite quickly. I prepared my CV and started applying to job posts on &lt;a href="https://www.linkedin.com/in/qctran1991" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After a little more than one month and a few interviews, I found a new company.&lt;/p&gt;

&lt;p&gt;Behind this quick decision was actually a trade-off:&lt;br&gt;
being willing to step out of my comfort zone.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Old Company Was Completely Fine
&lt;/h2&gt;

&lt;p&gt;At my previous company, everything wasn’t just fine — it was very good.&lt;/p&gt;

&lt;p&gt;My manager and colleagues appreciated me, and I also felt that I was bringing real value to the company.&lt;/p&gt;

&lt;p&gt;I had worked there for more than three years. I knew the projects very well, almost every line of code felt familiar, and the technologies we used were modern.&lt;/p&gt;

&lt;p&gt;The salary was good, and there were yearly bonuses.&lt;/p&gt;

&lt;p&gt;Overall, there was nothing to complain about regarding the working environment or the company culture.&lt;/p&gt;

&lt;h2&gt;
  
  
  One Small Problem…
&lt;/h2&gt;

&lt;p&gt;The only issue for me was this:&lt;/p&gt;

&lt;p&gt;The company was a subsidiary of a large corporation, and all compliance rules were decided at the group level.&lt;/p&gt;

&lt;p&gt;I understand that when an organization becomes very large, clear processes are necessary to keep things running smoothly.&lt;/p&gt;

&lt;p&gt;So the organization was divided into many specialized teams, each responsible for a specific area.&lt;/p&gt;

&lt;p&gt;My role was simply developer.&lt;/p&gt;

&lt;p&gt;That meant my job was to build features and push the code to git.&lt;/p&gt;

&lt;p&gt;After that, I just waited for the pipeline to deploy to staging or production.&lt;/p&gt;

&lt;p&gt;If something went wrong, I had to send a message to another team so they could debug it.&lt;/p&gt;

&lt;p&gt;Even a small feature required creating a ticket and getting approval from another team before deploying to production.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Started to Frustrate Me
&lt;/h2&gt;

&lt;p&gt;Because of this process, many things felt slow.&lt;/p&gt;

&lt;p&gt;Whenever there was a problem, I had to ask another team to help. I couldn’t touch anything except the code.&lt;/p&gt;

&lt;p&gt;It made me feel a bit restricted.&lt;/p&gt;

&lt;p&gt;Sometimes a very small change could take a whole week before reaching production.&lt;/p&gt;

&lt;p&gt;Another issue was learning.&lt;/p&gt;

&lt;p&gt;Outside of coding, I also wanted to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;infrastructure&lt;/li&gt;
&lt;li&gt;databases&lt;/li&gt;
&lt;li&gt;cloud systems&lt;/li&gt;
&lt;li&gt;monitoring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But if I was always asking someone else to debug things, and never doing it myself, I felt that I would never really understand those areas deeply.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Did I Actually Have at That Time?
&lt;/h2&gt;

&lt;p&gt;To be honest, not that much.&lt;/p&gt;

&lt;p&gt;I had experience as a full-stack developer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Java with Spring Boot&lt;/li&gt;
&lt;li&gt;JavaScript with React&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And I had the AWS Certified Solutions Architect – Associate certification.&lt;/p&gt;

&lt;p&gt;I studied and prepared for that exam on my own and managed to pass it.&lt;/p&gt;

&lt;p&gt;Honestly, I should also thank that certification — because it helped me realize how little I actually knew 😄&lt;/p&gt;

&lt;h2&gt;
  
  
  What Did the New Company Offer?
&lt;/h2&gt;

&lt;p&gt;Interestingly, the technology stack was almost exactly the same as my old company.&lt;/p&gt;

&lt;p&gt;The main difference was that they were building their system with microservices, something I had never worked with before.&lt;/p&gt;

&lt;p&gt;The new company also needed someone with AWS experience to help modernize their infrastructure.&lt;/p&gt;

&lt;p&gt;That sounded exactly like what I was looking for.&lt;/p&gt;

&lt;p&gt;Since it was a startup, I knew I would have the opportunity to touch many parts of the system and learn much more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stepping Out of My Comfort Zone
&lt;/h2&gt;

&lt;p&gt;In the end, I decided to leave my old company.&lt;/p&gt;

&lt;p&gt;I wanted to step out of my comfort zone and challenge myself.&lt;/p&gt;

&lt;p&gt;I wanted to improve, learn more things, and understand systems beyond just writing code.&lt;/p&gt;

&lt;p&gt;At my new company, I always try to work with a learning mindset.&lt;/p&gt;

&lt;p&gt;Technology moves very fast, and I hope I don’t fall too far behind.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;So far, everything has been going well.&lt;/p&gt;

&lt;p&gt;Hopefully it will continue that way in the future 😉&lt;/p&gt;

&lt;p&gt;(If you enjoy these kinds of engineering stories, you can subscribe or visit &lt;a href="https://open.substack.com/pub/quangchientran/p/why-i-wanted-to-change-jobs?r=5zk2y9&amp;amp;utm_campaign=post&amp;amp;utm_medium=web&amp;amp;showWelcomeOnShare=true" rel="noopener noreferrer"&gt;my blog&lt;/a&gt; to receive the next ones.)&lt;/p&gt;

</description>
      <category>developer</category>
      <category>career</category>
      <category>software</category>
    </item>
  </channel>
</rss>
