Software Architecture Complexity

Info

How to build simple software architectures instead of creating complex architectures that are hard to understand, maintain and operate?

Occurrences

Microservices Envy

Term coined by ThoughtWorks: Microservice envy (Technology Radar)

Microservices has emerged as a leading architectural technique in modern cloud-based systems, but we still think teams should proceed carefully when making this choice. Microservice envy tempts teams to complicate their architecture by having lots of services simply because it's a fashionable architecture choice. Platforms such as Kubernetes make it much easier to deploy complex sets of microservices, and vendors are pushing their solutions to managing microservices, potentially leading teams further down this path. It's important to remember that microservices trade development complexity for operational complexity and require a solid foundation of automated testing, continuous delivery and DevOps culture.

How to manage architectural complexity?

Sensible default practices

One of the benefits of sensible defaults is that they can guard you against the allure of novelty and hype.

Starting out with sensible default practices | Thoughtworks

Embrace the monolith

Embrace the monolith

The results of microservices have been made clear- for small teams, they are a disaster. Modern software development is already too complex- understanding just one piece of the stack is a challenge for the best developers.

Breaking business logic out across codebases is not the answer- doing so creates more overhead, more failure methods, and more headaches. While this might work at FAANG, most projects are not of that scale.

To move forward, we must regress- we must reject the combinatorial explosion of complexity, embrace a well-integrated backend, and once again create codebases where we can move fast and fix things.

β€” monolithic.dev

Prefer simple solutions

Modular Monolith

Rich Hickey – Simple Made Easy

In defense of simple architectures (HN)

I'm a programmer and I'm stupid

πŸ”—References

Why embracing complexity is the real challenge in software today | Thoughtworks

System design and the cost of architectural complexity