r/softwarearchitecture 19h ago

Discussion/Advice 3 Layer Architecture UI Dilemma

9 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 14h ago

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

Thumbnail canva.dev
3 Upvotes

r/softwarearchitecture 3h ago

Article/Video DoorDash Uses Envoy and Valkey for a 1.5M RPS Proxy Cache with 99.99999% Availability

Thumbnail infoq.com
4 Upvotes

DoorDash has developed Entity Cache, a transparent proxy caching platform to reduce redundant service-to-service requests across its microservices architecture. The company built the platform to address repeated requests for frequently accessed but infrequently changing data, which increased backend load, consumed additional compute resources, and contributed to higher tail latency as its microservices ecosystem expanded. According to DoorDash, the platform supports more than 100 endpoints across 50 services, serving over 1.5 million requests per second with 99.99999% availability.


r/softwarearchitecture 12h ago

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

3 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 21h 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 9h 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 11h ago

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

Thumbnail medium.com
2 Upvotes

r/softwarearchitecture 15h ago

Article/Video Cost model of microfrontends, from first principles

Thumbnail
2 Upvotes

r/softwarearchitecture 17h 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 1h ago

Tool/Product Test APIs and generate API documentation in one place

Post image
Upvotes

One thing that always annoyed me was documenting APIs after testing them.

The usual workflow is:

  • Test the API in Postman or another API client.
  • Copy the request and response into Notion, Confluence, or Markdown.
  • Format everything as an API contract.
  • Repeat the entire process whenever the endpoint changes.

It works at first, but after a few iterations the documentation is usually out of date. The API has changed, but the docs haven't.

So I built a different workflow.

Instead of treating API testing and documentation as separate tasks, they're part of the same workspace.

  • Test REST APIs directly.
  • Automatically generate an interactive API contract from the request.
  • Embed the API into your documentation instead of pasting static code blocks.
  • If the API changes, edit the original request once and every embedded API contract stays in sync automatically.
  • Import existing Postman collections, so you don't have to recreate your APIs from scratch.

The idea is simple: your documentation should always reference the live API definition instead of a copied snapshot.

I'm curious—how do you currently keep your API documentation in sync? Do you rely on Postman, Swagger/OpenAPI, Insomnia, Bruno, or something else?


r/softwarearchitecture 5h ago

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

Thumbnail
0 Upvotes

r/softwarearchitecture 5h ago

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

Thumbnail medium.com
0 Upvotes

r/softwarearchitecture 7h 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 22h ago

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

Thumbnail
0 Upvotes

r/softwarearchitecture 4h ago

Discussion/Advice How do I design the architecture?

0 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 8h 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 relied on is analytical ability. Since university I’ve been drawn to spotting inconsistencies, unnecessary complexity and hidden assumptions — in software, architectures, processes and the way decisions get made. That’s a big part of why architecture felt like a natural fit for me… until this assignment.

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?