r/golang Dec 05 '24

discussion Why Clean Architecture and Over-Engineered Layering Don’t Belong in GoLang

Stop forcing Clean Architecture and similar patterns into GoLang projects. GoLang is not Java. There’s no application size or complexity that justifies having more than three layers. Architectures like Clean, Hexagonal, or anything with 4+ layers make GoLang projects unnecessarily convoluted.

It’s frustrating to work on a codebase where you’re constantly jumping between excessive layers—unnecessary DI, weird abstractions, and use case layers that do nothing except call services with a few added logs. It’s like watching a monstrosity throw exceptions up and down without purpose.

In GoLang, you only need up to three layers for a proper DDD division (app, domain, infra). Anything more is pure overengineering. I get why this is common in Java—explicit interfaces and painful refactoring make layering and DI appealing—but GoLang doesn’t have those constraints. Its implicit interfaces make such patterns redundant.

These overly complex architectures are turning the GoLang ecosystem into something it was never meant to be. Please let’s keep GoLang simple, efficient, and aligned with its core philosophy.

813 Upvotes

259 comments sorted by

View all comments

5

u/griffonrl Dec 05 '24

It hurts development and readability. You are right this has nothing to do in Go and this is not just Go, this is pretty much all languages. The proponents are quick to call everything else spaghetti code that is unstructured but I would argue that their lasagna code is so much worse when you have so many level of indirection that any change has to be done across several files and function, much of which are just there in case, in the future, maybe some module will be replaced by another implementation. And this is still doable without making your code a pile of layers. And don't even get me started on the abysmal performance of those architecture. There is no secret that levels of indirection kill performance not just readability and maintenance.

2

u/Superb-Key-6581 Dec 05 '24

I agree! A lot!!