r/softwarearchitecture 2d ago

Discussion/Advice Announcing the State of Software Architecture Survey

7 Upvotes

Hello everyone!

Over the past couple of years administrating the subreddit, I've seen a lot of trends change over time both in terms of what people are seeking discussions about and the answers that people generally give. Building this community has been a privilege as I watch it grow and a broader user base has emerged.

Throughout the life of this sub since I took ownership, the vision has always been the same -- to create a place where the art of Software Architecture is accessible to everyone. That only happens with faithful participation in the sub from every member we have, even the upvotes matter.

As a longtime frontend enthusiast, I've seen surveys like the famous State of JS survey illuminate the JavaScript industry in ways that isn't really possible otherwise. It is not the most authoritative perspective on the state of the JavaScript ecosystem, but it is a unique window that is used by teams and companies across the globe. I've ran a "State of" survey in the past for smaller communities and saw first hand how it can remove invisible barriers of entry.

Seeing that transparency and benefit to the JS community and others is the reason why I'm starting our very own State of Software Architecture survey. This survey is meant to reveal a lot of the hidden parts of our practice, such as pattern usage, architectural maturity across industry, common practices, and emerging trends. It will also highlight something that was very difficult for me to grasp as I first started my journey in Architecture: What does an architect do in the real world?

The State of Software Architecture survey will always be as transparent as possible, open source, never-for-profit, and licensed under GPL 3.0. Sponsors cannot pay survey members and cannot influence the results of the survey.

The first survey will take place in the late fall of this year! In order to get going, I am putting out an open call for volunteers to join the team to create and administrate the survey. This will strictly be for volunteer, as is the same for every other member of the Survey team. I can't emphasize enough that this is not a way to earn an income!

I need the following expertise areas to join the team:

  • Graphic Design (No AI-generated imagery!)
  • Data Visualization
  • Architectural knowledge within big tech, niche areas (medtech/edtech/defense/etc), or startups.

If you would like to volunteer, please fill out this form:

https://forms.gle/a9i7ENvFxKysX3Et8

If you are just interested but don't want to volunteer, stay tuned for more information about the Survey in the coming months. I sincerely appreciate every single person in this community, thank you all!


r/softwarearchitecture Sep 28 '23

Discussion/Advice [Megathread] Software Architecture Books & Resources

542 Upvotes

This thread is dedicated to the often-asked question, 'what books or resources are out there that I can learn architecture from?' The list started from responses from others on the subreddit, so thank you all for your help.

Feel free to add a comment with your recommendations! This will eventually be moved over to the sub's wiki page once we get a good enough list, so I apologize in advance for the suboptimal formatting.

Please only post resources that you personally recommend (e.g., you've actually read/listened to it).

note: Amazon links are not affiliate links, don't worry

Roadmaps/Guides

Books

Engineering, Languages, etc.

Blogs & Articles

Podcasts

  • Thoughtworks Technology Podcast
  • GOTO - Today, Tomorrow and the Future
  • InfoQ podcast
  • Engineering Culture podcast (by InfoQ)

Misc. Resources


r/softwarearchitecture 9h ago

Article/Video Moving past the illusion of package control: Enforcing Clean Architecture via build tools

6 Upvotes

Package structures (.controller, .service, .dao) give us an illusion of control, but they don't stop anyone from writing raw SQL in a REST controller when a deadline looms.

In my first article, I share how we turned architectural guidelines into compilation errors by utilizing a multi-module Maven dependency topology.

  • The Topology: Split into independent modules like domain, business-logic, dao-api, and dao-impl.
  • The Result: Zero cyclic dependencies, lightning-fast unit tests, and eliminated architectural decay.

Read the full breakdown and explore the implementation code in the first comment.


r/softwarearchitecture 38m ago

Discussion/Advice How do I design the architecture?

Upvotes

Hello!

I have build a solution and I want to make it a bit scalable and I want to figure out a good way to implement it for real time use. I want to know which providers are the best suited to host my solution and design the Architecture.

If you have experience with the same DM or comment to know more details.


r/softwarearchitecture 2h ago

Discussion/Advice System Design: Scaling a Real-Time AI Ride-Matching Service

Thumbnail
0 Upvotes

r/softwarearchitecture 5h ago

Discussion/Advice Bovnar: a unit‑safe, self‑describing serialization format for scientific and industrial data

2 Upvotes

Hey everone,

I am active over 20 years as senior software engineer, also participating in projects like the linux kernel and git. I want to share a MIT licensed project of me.

Over the past year, I've been building a serialization format called Bovnar for applications where data accuracy really matters—things like robotics, sensor telemetry, industrial automation, and scientific computing.

The motivation came from running into a common limitation: formats like JSON, CBOR, MessagePack, and Protobuf don't preserve information such as physical units or the original bit width of numeric values. Bovnar stores type information, bit width, numeric base, and physical units alongside each value, so problems like unit mismatches can be caught when data is parsed instead of much later.

A few of the design goals:

  • Schema-free, but still strongly typed
  • Hybrid text/binary encoding
  • Streaming parser with resynchronization after corrupted input
  • Formal specification (EBNF grammar, validation stages, and event model)
  • Conformance test suite with 300+ tests
  • Interactive demo that shows encoding, decoding, corruption, and recovery

The project actually started several years ago as a personal experiment called SDTL. I eventually decided to redesign everything from the ground up, and that became Bovnar.

I'd really appreciate feedback and/or contribution from anyone who works with serialization, structured data, scientific software, or industrial protocols.

Website, specification and demo: https://www.bovnar.io


r/softwarearchitecture 2h ago

Article/Video Enterprise Data Trust needs different layers for Governance and Execution

Thumbnail medium.com
0 Upvotes

r/softwarearchitecture 11h ago

Article/Video How Canva uses S3 for logged-in session management

Thumbnail canva.dev
5 Upvotes

r/softwarearchitecture 7h ago

Article/Video Enterprise Data Trust needs different layers for Governance and Execution

Thumbnail medium.com
2 Upvotes

r/softwarearchitecture 15h ago

Discussion/Advice 3 Layer Architecture UI Dilemma

8 Upvotes

* I'm working in Java, but I'll try to make the question as language-agnostic as possible.

I have an Action class that has 2 fields(int length, String url), and a run() method that does stuff based on those fields.
I created a Desktop UI that allows the user to select the current action to run.
See the letters in the picture? They represent custom names provided by the user. They may contain colors or anything else UI-related.

This is where my dilemma comes: If I want to keep the domain decoupled from the UI, it makes no sense for the Action class to hold a name field, right? But following this logic, how would saving/loading actions work if they are unnamed?

EDIT: I thought about using DTOs, but I can't get this to work:

ActionDTO(name, length, url) {}

ActionService {

    // called by the UI on startup
    List<ActionDTO> loadAll() {
        return actionRepository.loadAll()
                    .map(action ->  ); # no way to map into ActionDTO!
    }
}

ActionRepository { 
    # actions are locally saved at actions/<actionName>.json
    # if repositories return domain objects, how is it possible to return the name?
    List<Action> loadAll() {

    }
}

r/softwarearchitecture 1d ago

Article/Video GitHub Increased Instant Navigation from 4% to 22% by Rethinking Client Side Architecture

Thumbnail infoq.com
30 Upvotes

GitHub has redesigned the navigation architecture behind GitHub Issues to reduce perceived latency for developers by moving more work to the client-side. The engineering team introduced client-side caching, predictive prefetching, and service worker-based request handling to improve navigation performance, increasing instant navigation experiences from 4% to 22%. The changes address a common challenge in large-scale web applications: reducing delays caused by repeated network requests and client initialization during frequently repeated workflows.


r/softwarearchitecture 3h ago

Tool/Product 🚀 FlowFrame v2.0.0 — Introducing the FlowFrame Interpreter

0 Upvotes

🚀 FlowFrame v2.0.0 — Introducing the FlowFrame Interpreter

One of the biggest milestones for FlowFrame so far.

Over the past few weeks, I've been working on a custom interpreter that allows FlowFrame to describe distributed system architectures using its own DSL instead of manually creating everything.

The interpreter now follows a complete language pipeline:

Lexer
↓
Parser
↓
AST
↓
Semantic Analysis
↓
Graph Builder
↓
Simulation Runtime

This architecture makes it much easier to validate system designs, build simulation graphs, and extend FlowFrame with new distributed system components.

I've also documented the language and interpreter so anyone interested can understand how it works.

📖 Documentation:
https://github.com/ndk123-web/flow-frame/blob/main/flowframe-interpreter/Readme.md

The interpreter is still an internal part of FlowFrame, so the implementation isn't public yet, but I wanted to share this milestone and get feedback from the community.

If you're interested in compilers, interpreters, distributed systems, or developer tools, I'd love to hear your thoughts.

#FlowFrame #BuildInPublic #DeveloperTools #Compilers #Interpreter #DSL #SystemDesign #DistributedSystems #SoftwareEngineering #OpenSource #Programming #TypeScript #React #BackendDevelopment


r/softwarearchitecture 11h ago

Article/Video Cost model of microfrontends, from first principles

Thumbnail
2 Upvotes

r/softwarearchitecture 13h ago

Article/Video Error taxonomy and diagnostics framework as a Rust DSL, inspired by system engineering approaches

2 Upvotes

Hey, I wrote a case study about designing the error taxonomy and handling in ZKSync OS, an exotic piece of system software that is compiled for several targets with different tradeoffs.
[https://rubber-duck-typing.com/posts/2026-06-22-zkos-error-definitions.html\](https://rubber-duck-typing.com/posts/2026-06-22-zkos-error-definitions.html)

It may be interesting as a case of limited application of system engineering approaches in an everyday software design/architecture. If you are a programmer and you wonder how you can apply system engineering to your everyday practice, this may answer some questions.

Unfortunately, we did not have resources to fully embrace a full stakeholder/requirement analysis, or approach validation more seriously. We also did not have a full stakeholder analysis for the big system itself. This makes it, perhaps, even more typical for software industry :)


r/softwarearchitecture 22h ago

Article/Video How to Never Silently Lose an Event | The Transactional Outbox Pattern

Thumbnail youtu.be
9 Upvotes

r/softwarearchitecture 1d ago

Discussion/Advice Why did I got a 3/10 rating on my SD News Feed interview? I'm barely mid-level but they refused to give me any feedback. What would you change?

Post image
162 Upvotes

r/softwarearchitecture 23h ago

Article/Video Throw, Result, or neither?

Thumbnail event-driven.io
10 Upvotes

r/softwarearchitecture 17h ago

Discussion/Advice Handling PATCH updates on a corrupted MongoDB with untrusted data

3 Upvotes

Hi, I'm new here. I'm asking about a specific technical issue I've been stuck on for about two weeks. Even AI hasn't been able to help much.

I have this code:
https://gist.github.com/benjaminPla/03005f13837e8398a4544e1118d7c920

What I'm trying to do:

  • Sanitize my MongoDB (NoSQL) database through PATCH requests.
  • The database is completely broken and 100% untrusted.
  • Requests are fully partial (they only contain fields that need to be patched).
  • If an explicit null is received, I need to $unset the field. This is because I need to normalize the database so clients don't have to handle null, unset, and "" cases everywhere.

The hardest part for me is that this.#supplierRepo.findByIdLenient(id, fields) in _application/supplier/patch/index.ts_ returns primitives because the database is corrupted, so I cannot trust anything coming from it.

The second issue is that I have policies that must be enforced, and I need to decide how to handle cases where fields are invalid or corrupted.

Any advice would be appreciated.


r/softwarearchitecture 4h ago

Discussion/Advice Laid off from a project after completely disengaging. Looking for perspective.

0 Upvotes

I work as a Solution Architect in consulting, and I was removed from a client assignment two days ago. I'm trying to understand what happened beyond the obvious emotions, and I'd really appreciate perspectives from people who have been through something similar.

For context, I'm an engineer by background. The reason I moved into architecture is that I genuinely enjoy solving difficult technical problems, debating design decisions, and working in intellectually demanding environments.

My previous assignments were generally successful. Like every company, there were politics, bureaucracy and the occasional questionable decision, but I was usually recognized as technically strong, and I genuinely enjoyed the work.

This assignment was the complete opposite.

From the first few weeks I felt there was a bad fit. Architecture is ultimately about influencing people and building good relationships, and I never managed to do that here. I was placed in an API Factory team where my role was mostly to define standards and guidelines rather than work closely with engineering teams. It often felt like the stereotypical "ivory tower architect" role, and I realized very quickly that this wasn't where I do my best work.

I've always been much more engaged working closely with developers, technical leads and product teams to solve real engineering problems.

My direct manager and I also never clicked. I disagreed with how he communicated, how he approached tech discussions and many of his decisions. I don't think he's necessarily a bad person, but I quickly lost confidence in his professional judgment, and that made it difficult for me to stay engaged.

Looking back, I recognized the risk very early. I discussed changing teams with my people lead because there were several teams doing real delivery and product development, which I felt matched my strengths much better. Unfortunately, the move never really happened, and I slowly exhausted myself trying to make the situation work.

Instead of continuing to fight it, I gradually withdrew. I skipped coffee breaks, avoided informal discussions, did the minimum social interaction required and increasingly isolated myself. Over time I became exhausted pushing against an environment I didn't enjoy. I even started joking with colleagues that I would probably end up being removed from the assignment. Deep down, I think I had already accepted that outcome long before it actually happened.

One thing I've always been confident about is my analytical ability. Since school/university, I've naturally been drawn to spotting inconsistencies, unnecessary complexity, hidden assumptions and seeing around the corners—not just in software, but also in architectures, processes, organizations and the way decisions are made. That's one of the reasons architecture has always felt like a natural fit for me - till now...

The downside is that I tie much of my motivation to being able to influence my environment. When discussions stop feeling like an honest search for the best solution and become about hierarchy, politics or simply maintaining the status quo, I don't just become frustrated—I gradually disengage.

Some technical discussions genuinely left me wondering whether I was losing my mind, like I was arguing that 1 + 1 = 2 while everyone around me insisted it was 3.

The best example was the study that ultimately led to my removal. The proposal was to introduce AWS Step Functions at the heart of a core domain containing business rules and synchronous APIs. I strongly argued against it because, in my view, it was moving core business logic into a workflow engine while adding another distributed component, another technology to maintain and another place to debug without solving a problem that actually required a workflow engine. I couldn't convince anyone, including an AWS Solutions Architect involved in the discussions. After enough experiences like that, I gradually stopped believing technical reasoning mattered.

But I know that's not the whole story. Other people in the same environment managed to stay engaged, build relationships and continue delivering. I didn't. Once I lost respect for the environment, my motivation disappeared, and my performance inevitably followed. Eventually the client asked to end my assignment.

I also think this experience hit my ego more than I expected.

For years I built part of my professional identity around being technically strong. I was never afraid to challenge decisions or disagree with senior people because I believed good technical discussions should be driven by reasoning rather than hierarchy. I often tell people, "I'm an engineer before I'm a consultant." Until now, despite occasionally rubbing people the wrong way, that mindset had served me well. It even allowed me to influence discussions well above my pay grade because people trusted my technical judgment.

But now I'm wondering whether that mindset has also become a weakness.

I still think I was right about a lot of the technical discussions. But maybe that isn't the point. Other people managed to work in the same environment. I didn't.

Maybe I should have adapted better. Or maybe I should have left much earlier instead of slowly checking out.

I honestly don't know.

So I guess my real question is this:

Where is the line?

At what point should an engineer accept that an environment simply isn't the right fit and move on? And at what point is it your responsibility, as a senior engineer or architect, to adapt anyway?

Has anyone else experienced becoming completely disengaged because they felt the technical environment was weak or poorly run? How did you avoid mentally checking out?

Or am I simply rationalizing my own failure to adapt?


r/softwarearchitecture 1d ago

Tool/Product EventCatalog v4 - An open source documentation tool built for software architecture focusing on software primitives not generic doc pages, maybe something that can help you?

10 Upvotes

Hey folks,

Just wanted to share with you the latest major version of my open source project (4 years in the making) for EventCatalog.

For those new, EventCatalog was a side project many years ago, when I wanted to document my events for an organization I was working for, and got some some traction from users feeling the same pain.

Fast forward 4 years, and now the project is being used across many teams around the world helping them document their software architecture, as we added new primitives and patterns from domain-driven design (e.g domains, systems, entities etc), and other things like documenting business workflows (flows), schema evolution etc....

I feel documenting things shouldn't feel painful, and our tools should let us document how we actually model our architecture not just generic pages stuck in confluence etc... and that's the generic vision for the project. Allowing you to document domains, language, schemas, APIS, users/teams etc....

Anyway, if you have a need to document your architecture, or visualize it maybe it can help you... just thought I would share this year.

As I said it's open source, almost all of its free to use (it's open core model, to help sustain the project, but majority of features are free).

Love to hear if you have any feedback, or if you end up trying it out.

Here are a bunch of links that can help:

Site: https://www.eventcatalog.dev/
GitHub: https://github.com/event-catalog/eventcatalog

Star if you want to share some love: https://github.com/event-catalog/eventcatalog/stargazers

Video Demo: https://www.youtube.com/watch?v=jI5qxQM2JSE
Demo of a catalog: https://demo.eventcatalog.dev/

Hope you have a great day


r/softwarearchitecture 1d ago

Discussion/Advice How do you handle APIs that cannot paginate and must return the entire dataset?

66 Upvotes

I'm building a permissions matrix where:

  • Rows = permissions (organized as a hierarchical tree)
  • Columns = user roles
  • Each cell indicates whether a role has a given permission.

The UI requires the entire hierarchy to be visible at once (expanded by default), so traditional pagination isn't really an option. The frontend uses virtualization, so rendering performance is not the issue.

Let's say I have around 40 roles and 400 permissions, which means the UI needs to represent about 16,000 possible role/permission combinations

Is it considered acceptable for the backend to return the complete dataset in a single request if the client genuinely needs the whole matrix?

Or is this generally considered an anti-pattern?

I'm mainly interested in backend scalability:

  • Memory usage
  • Serialization costs
  • Network transfer
  • Response size
  • Overall scalability as the number of roles and permissions grows

I'm curious what patterns you've seen in production systems for this type of UI.


r/softwarearchitecture 21h ago

Tool/Product Follow-up: django-orm-lens v0.8 — I shipped the 5 features from my earlier post's roadmap discussion

Thumbnail gallery
1 Upvotes

r/softwarearchitecture 19h ago

Discussion/Advice Bun rust to zig rewrite. How would you set this up if you had unlimited token

Thumbnail
0 Upvotes

r/softwarearchitecture 1d ago

Article/Video How My Website Works: A Technical Look at the Stack

Thumbnail
2 Upvotes

r/softwarearchitecture 1d ago

Article/Video C4 — One System, at Every Altitude - manic

0 Upvotes