When is it time to make system changes?


Hi!

This week I'd like to shortly discuss a decision making process when it comes to making large system changes, here's a quote and a link to a nice blog post I've read yesterday:

We should always put off significant complexity increases as long as possible.

The post above tells the story of a team running a large monolith with one large database which they kept scaling up for years.

At one point, it reached 80% load with short bursts of downtime, but there was nowhere to grow in terms of scale.

This leaves the time with one of two basic options:

  1. Redesign the system (microservices? sharding? different DB?)
  2. Taking the less exciting path of debugging the source of struggle and slowly improving (code, queries, internal configs)

There's no right or wrong, but a very important statement made in the post and that I find myself reiterating at work is:

Making system changes will be expensive, but not because of technology, mainly for engineering hours and attention.

While the bold statement above is often overlooked, it's not only this should be considered when decided how to make progress, it should also be taken within the context of the situation:

  • Is the system on fire?
  • Do we expect fires to happen for some time?
  • Are we looking at growth? Exponential? Or gradual?

With a clear picture, it's easier to make wiser decisions that are contextual and informative.

This may be obvious to some, but in many cases even senior leaders tend to jump on the latest trend (I know I did) and let enthusiasm take over better judgment.

When I used to be in the consultant's shoes (but often one that had to follow his own advice and implement the changes), it was easier for me to view things through a different unbiased lens, which I try to keep in mind even today.

The takeaway here is, what would you do if you were a consultant? What's the context here? How would future-you look back at this decision a year from now?


With that in mind, have a great weekend! And here's a few interesting things I've discovered / read / tried over the past week:


You can find me on other channels as well:

📺 : www.youtube.com/@devopstoolbox

🎤 : https://topeaks.buzzsprout.com/

✍️ : https://omerxx.com/

ESPRESSO FRIDAYS

Every once in a while I send hand picked things I've learned. Kind of like your filter to the tech internet. No spam, I promise!

Read more from ESPRESSO FRIDAYS

6 Neovim Plugins I Use To Troll Code Reviewers The Espresso Fridays is brought to you by: Zero To Running a Kubernetes Application Without Weeks of Studying A hands-on Kubernetes guide to deploy your first scaleable application In under 90 minutes you'll: ✅ Learn all the critical Kubernetes basics from a 10-year industry expert ✅ CUT learning time by 60% with a hands-on application deployment walkthrough ✅ Never feel inexperienced again with the hottest technology in the market Start learning...

Hi friends, Ever felt like your remote pair programming sessions were missing that seamless, in-person collaboration feel? You’re not alone. Many developers struggle to recreate the magic of side-by-side coding in a virtual environment. A recent study shows that pair programming has been proven to catch mistakes early, reduce defects, and lead to better designs. The same study found that teams who practice pair programming not only produce shorter, more efficient code but also solve problems...

Hi friends, Are you tired of juggling multiple apps for note-taking and writing? Many of us struggle to find a seamless system that combines powerful text editing with effective note organization. While popular note-taking apps offer fancy features, they often fall short for those who prefer a keyboard-centric, or should I say Vim-centric workflow. Most people resort to using dedicated note-taking applications like Obsidian, Notion, or even Apple notes. These tools are great for casual users,...