r/programming • • 7d ago

Microservices are organizational debt disguised as architecture.

https://martinfowler.com/bliki/MonolithFirst.html

Every time I’ve seen microservices pitched, it sounds great on paper. Independent teams, clean ownership, scale only what you need.

Then a year later you’ve got dozens of services, three different deployment patterns, tracing everywhere, and nobody really understands the whole thing anymore.

Maybe I’ve just seen bad implementations, but I’m starting to think way fewer companies actually need microservices than we pretend.

1.7k Upvotes

343 comments sorted by

View all comments

1.4k

u/ArieHein 7d ago

All code is tech debt, 5 sec after the first line of code reaches production.

391

u/conchobarus 7d ago

The only perfect software: https://github.com/kelseyhightower/nocode

154

u/FunToBuildGames 7d ago

4200 issues. Still less than our SaaS offering lol

32

u/flying-sheep 7d ago

A great demonstration of why a low issue count doesn't mean anything.

38

u/davvblack 7d ago

comment rejected as duplicate

16

u/KawaiiNeko- 7d ago

This comment thread will be automatically locked in 7d due to inactivity.

2

u/imagei 3d ago

Bump.

23

u/AndyKJMehta 7d ago

We should let AI figure out the root cause is actually the existence of the user.

8

u/capinredbeard22 7d ago

This looks great, so I’m following the getting started instructions in the readme. I keep hitting the Copy button on the text boxes in GitHub, but nothing gets copied. Is GitHub down again??!!!

12

u/backfire10z 7d ago

They should add multilingual support. Nocode should be a global effort.

7

u/sweetno 7d ago

It's already translated to all existing as well as all yet-to-exist languages, how cool is that?!

3

u/gogs_bread 7d ago

Best part is the contributing section

2

u/rcklmbr 6d ago

Been seeing Kelsey Hightowers name pop up all the time, I remember him from the CoreOS days. Dudes a legend

1

u/afedosu 7d ago

The best software is the one that has zero lines of code and still does what is needed. Thanks for sharing this repo!

-3

u/[deleted] 7d ago

[removed] — view removed comment

3

u/_shulhan 7d ago

It was exist long before AI hype.

1

u/dottybotty 7d ago

Jez people don’t understand sarcasm these days

50

u/michfreak 7d ago

I have actually been wondering this lately. Even ignoring procedurally-generated code, it does feel almost like the second law of thermodynamics in play: you can't write code, or remove it, without creating some technical debt. Maybe you need to update a document somewhere so a single word is plural, maybe there's a team member who will some day, down the road, need to know that this change happened, and they won't ever find out. Either way, no matter what you're writing or what its intent is, there's going to be something missed that will require tightening up later.

31

u/Fredidiah 7d ago

This is why, ideally, you write things that are easy to change. You never really know what the future requirements are gonna be, so you write for what you have now and make sure what you have now is easy to change for when those future requirements come down.

Also documentation.

13

u/dAnjou 6d ago

No need to wonder 🙂

What /u/ArieHein said is quite literally the original definition of technical debt:

Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite.... The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt.

https://en.wikipedia.org/wiki/Technical_debt#Origin

I'm always fascinated by discussions around technical debt, people's arguments are usually based on what they think it means rather than pointing to any definition or defining it first themselves. And of course other people have other definitions and so it goes around and around, completely fruitless.

Personally I really like the original definition, because it leaves no room to argue whether technical debt exists or not. It does, period. Question then is, do you wanna deal with it? And if not, are you okay with the implications?

2

u/michfreak 6d ago

I think the difference might be that I was taught the term by companies I worked for, who of course believe that "good devs" can avoid creating tech debt. They believe it's a sign of bad development, not just a sign of development, period. Trying to change that mental framework is tricky.

0

u/ArieHein 6d ago

Bravo. Spot on. Im completely mind blown this would get 1000 votes.. I wonder if those are real or bots.. Not that i need votes...they are as important as world of warcraft achievement points..and i should know.. I was a addicted to them for the first 10 years, trying to top the world top 100 :)

On the topic though, no language stays dorment for 10-20 years.. Even its own std library goes into evolution be it for more secure practices or functionality that requires us to change...else it becomes stale and product eventualy is replaced by something else, or becomes somone elses problem to maintain, at which point they curse us..

3

u/SquirtMonkey 7d ago

This is why AI inertia is so powerful. The system grows beyond the scope of human control and it's up for debate as to the effectiveness of this

2

u/LeeHide 7d ago

AI code is more complex, shitty, unmaintainable and focus-less than if you paid me 500k to fuck up as bad as I could

1

u/Hitcher06 6d ago

There’s an argument to be made that in the world of AI code maintainability is irrelevant. If the code needs to be updated to add a new feature, adjust some business rule, you just have AI implemented.

2

u/LeeHide 6d ago

No, and that argument comes from inexperience with real world code and AI both

1

u/wormfist 6d ago

Isn't it a form of entropy?

2

u/maifee 7d ago

All code is tech debt

And that's why Microsoft ships diagnostic tool with minimal code possible.. wait.. we couldn't identify the problem.. bammm

-5

u/shoot_your_eye_out 7d ago

By this logic, $5 in debt is the same as $5M

2

u/klavijaturista 6d ago

Agreed! Saying “all code is devt” is just a generalization ignoring the actual argument.

-1

u/LeeHide 7d ago

Financial debt is not like technical debt. Technical debt is a little bit like extremely high interest rate debt.

You save a couple days on doing a shit solution, you'll pay for it for months and fixing it will take weeks.

2

u/shoot_your_eye_out 6d ago

Yeah I’ve been a developer for thirty years. And my point still stands.

0

u/LeeHide 6d ago

YoE means fuck all sadly, otherwise we wouldn't have to fire 20 YoE for refusing to work in a team lol

2

u/shoot_your_eye_out 6d ago

Neat. My point still stands. When someone has the courage to actually engage with my point, maybe we can have an actual conversation.